Initial commit
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
"""Symbol universe grouped by role. Keys are Yahoo Finance tickers.
|
||||
|
||||
Group names are used by the renderer/prompt to organise the briefing, so keep them stable.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
# group -> {ticker: display name (Korean)}
|
||||
SYMBOL_GROUPS: dict[str, dict[str, str]] = {
|
||||
"indices": {
|
||||
"^GSPC": "S&P 500",
|
||||
"^DJI": "다우존스",
|
||||
"^IXIC": "나스닥 종합",
|
||||
"^RUT": "러셀 2000",
|
||||
"^SOX": "필라델피아 반도체(SOX)",
|
||||
"^VIX": "VIX",
|
||||
},
|
||||
"futures": {
|
||||
"ES=F": "S&P 500 선물",
|
||||
"NQ=F": "나스닥 100 선물",
|
||||
"YM=F": "다우 선물",
|
||||
},
|
||||
"rates": {
|
||||
"^IRX": "미 3개월물",
|
||||
"^FVX": "미 5년물",
|
||||
"^TNX": "미 10년물",
|
||||
"^TYX": "미 30년물",
|
||||
},
|
||||
"fx": {
|
||||
"KRW=X": "달러/원",
|
||||
"DX-Y.NYB": "달러인덱스(DXY)",
|
||||
"JPY=X": "달러/엔",
|
||||
},
|
||||
"commodities": {
|
||||
"CL=F": "WTI 원유",
|
||||
"GC=F": "금",
|
||||
"HG=F": "구리",
|
||||
"BTC-USD": "비트코인",
|
||||
},
|
||||
"sectors": {
|
||||
"XLK": "기술(XLK)",
|
||||
"XLF": "금융(XLF)",
|
||||
"XLE": "에너지(XLE)",
|
||||
"XLV": "헬스케어(XLV)",
|
||||
"XLI": "산업재(XLI)",
|
||||
"SMH": "반도체 ETF(SMH)",
|
||||
},
|
||||
"korea_linked": {
|
||||
"EWY": "MSCI Korea ETF(EWY)",
|
||||
"CPNG": "쿠팡",
|
||||
"KB": "KB금융 ADR",
|
||||
"SHG": "신한지주 ADR",
|
||||
"PKX": "POSCO홀딩스 ADR",
|
||||
"KEP": "한국전력 ADR",
|
||||
"LPL": "LG디스플레이 ADR",
|
||||
"SKM": "SK텔레콤 ADR",
|
||||
},
|
||||
"semis": {
|
||||
"NVDA": "엔비디아",
|
||||
"TSM": "TSMC",
|
||||
"MU": "마이크론",
|
||||
"AMD": "AMD",
|
||||
"AVGO": "브로드컴",
|
||||
"ASML": "ASML",
|
||||
},
|
||||
"megacap": {
|
||||
"AAPL": "애플",
|
||||
"MSFT": "마이크로소프트",
|
||||
"GOOGL": "알파벳",
|
||||
"AMZN": "아마존",
|
||||
"META": "메타",
|
||||
"TSLA": "테슬라",
|
||||
},
|
||||
}
|
||||
|
||||
# Groups whose "change" is expressed in yield points / index points rather than percent
|
||||
POINT_CHANGE_GROUPS = {"rates"}
|
||||
|
||||
GROUP_TITLES_KO: dict[str, str] = {
|
||||
"indices": "주요 지수",
|
||||
"futures": "야간 선물",
|
||||
"rates": "미국 국채 금리",
|
||||
"fx": "환율·달러",
|
||||
"commodities": "원자재·크립토",
|
||||
"sectors": "섹터 ETF",
|
||||
"korea_linked": "한국 연관(EWY·ADR)",
|
||||
"semis": "반도체",
|
||||
"megacap": "빅테크",
|
||||
}
|
||||
|
||||
|
||||
def all_tickers() -> list[str]:
|
||||
seen: dict[str, None] = {}
|
||||
for grp in SYMBOL_GROUPS.values():
|
||||
for t in grp:
|
||||
seen.setdefault(t, None)
|
||||
return list(seen)
|
||||
|
||||
|
||||
def group_of(ticker: str) -> str | None:
|
||||
for g, members in SYMBOL_GROUPS.items():
|
||||
if ticker in members:
|
||||
return g
|
||||
return None
|
||||
|
||||
|
||||
def display_name(ticker: str) -> str:
|
||||
for members in SYMBOL_GROUPS.values():
|
||||
if ticker in members:
|
||||
return members[ticker]
|
||||
return ticker
|
||||
Reference in New Issue
Block a user