Files
2026-08-31 14:33:53 +09:00

112 lines
2.9 KiB
Python

"""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