English · 한국어
Home Assistant에서 한국·미국 주식, 환율, 암호화폐, OpenDart 공시까지 모두 네이티브 sensor로. 무료 API만 사용, 증권사 계정 연동 없음, 음성 비서 지원.
- ☕ 거실 패널에서 코스피·내 종목·환율·비트코인 한눈에
- 📉 보유 종목이 평단가 대비 ±5% 움직이면 자동 알림
- ⏱️ "지난 30분 동안 ±2% 움직였다" 같은 단기 변동률 트리거
- 🗣️ "헤이 구글, 삼성전자 얼마야?" 음성 질의
- 🔔 OpenDart 신규 공시 푸시 (카테고리별 필터)
- 📊 장 마감 직후 일일 요약 자동 발송
모두 무료 API (yfinance + OpenDart 무료 키), 증권사 계정 X.
- Home Assistant + HACS 설치
- HACS → ⋮ → 사용자 정의 저장소
- URL:
https://github.com/redchupa/kr_finance_kit/ Type:Integration→ 추가
- HACS에서 KR Finance Kit 검색 → 다운로드
- HA 완전 재시작 (Reload 아닌 Restart)
설정 → 기기 및 서비스 → + 통합 추가 → "KR Finance Kit"
각 필드의 라벨 뒤 콜론(:)에 그대로 복사·붙여넣기 가능한 예시가 미리 보입니다.
| 옵션 | 설명 |
|---|---|
| OpenDart API 키 | (선택) 공시 알림 + 종목명 자동 매핑 활성. 비워두면 가격만. |
| 한국 종목 코드 | CSV. 6자리 = KOSPI, .KQ 접미사 = KOSDAQ |
| 미국 종목 심볼 | CSV. AAPL:애플 처럼 콜론 뒤 라벨 지정 가능 (없으면 yfinance longName 자동) |
| 암호화폐·환율·선물 | Yahoo ticker 형식 (BTC-USD, EUR=X, GC=F 등). 시장 시간 무관 24/7 갱신 |
| 코스피·코스닥 지수 포함 | 체크박스 (기본 ☑) |
| 나스닥·다우·S&P 500 지수 포함 | 체크박스 (기본 ☑) |
| 글로벌 지수 포함 | 닛케이·항생·FTSE·DAX (기본 ☐) |
| USD/KRW 환율 포함 | 체크박스 (기본 ☑) |
| 상세 attribute 포함 | 52주 고/저, 200일 평균, 배당, PE 등 (트래픽 ↑, 기본 ☐) |
| USD 자산을 KRW로 환산 | BTC·AAPL 같은 USD 가격에 price_krw attribute 추가 (기본 ☐) |
| 포트폴리오 평가손익 알림 임계값 % | 0=비활성. 5 입력 시 평단가 대비 ±5% 돌파하면 binary_sensor ON |
| 공시 카테고리 필터 | A=정기공시, B=주요사항 등 10종 다중선택. 비우면 전체 |
sensor.fi_kospi/sensor.fi_kosdaq— 한국 지수sensor.fi_nasdaq/_dow/_sp500— 미국 지수sensor.fi_nikkei/_hangseng/_ftse/_dax— 글로벌 지수sensor.fi_usdkrw— USD/KRW 환율
sensor.fi_kr_<6자리>— 한국 종목 (예_kr_005930)sensor.fi_us_<티커>— 미국 종목 (예_us_aapl)sensor.fi_other_<슬러그>— 암호화폐·환율·선물 (예_other_btc_usd, 24/7 갱신)
- 기본:
price,change,change_pct(전일 종가 대비),prev_close,asof,stale - "상세 attribute 포함" ON 시:
fifty_two_week_high/low,fifty/two_hundred_day_average,regular_market_day_high/low/volume,market_state,currency,quote_type,long_name, equity는dividend_*/forward_pe/trailing_pe - "USD→KRW 환산" ON 시 (USD 자산만):
price_krw - 단기 변동률 (옵션 없이 자동):
change_pct_1min/_5min/_15min/_30min/_60min/_90min/_120min/_180min(8개 윈도우 고정)
sensor.fi_portfolio_kr_value/_kr_pl/_us_value/_us_pl/_krw_total/_krw_plbinary_sensor.fi_portfolio_pl_alert— 평단가 대비 ±임계값 돌파 시 ON
binary_sensor.fi_disclosure_<corp_code>— 24시간 윈도우, device label은 종목명 (예삼성전자)
kr_finance_kit_kr_market_closed— 한국 장 마감 시점 firekr_finance_kit_us_market_closed— 미국 장 마감 시점 fire
옵션 화면이 아닌 HA 서비스(=동작)로 입력 — 평단가·수량은 HA 암호화 저장소에만 저장됩니다.
Settings → 개발자 도구(Developer Tools) → 동작(Actions) 탭 → 검색창에 kr_finance_kit.add_position 입력 → 폼이 자동으로 나타납니다.
HA 2024.8+ 부터 기존 "서비스(Services)" 탭이 "동작(Actions)" 으로 명칭만 변경됐습니다. 같은 화면입니다.
| HA UI 라벨 | 키 | 예시 | 단위 / 비고 |
|---|---|---|---|
| 종목 코드/심볼 | ticker |
🇰🇷 005930, 035720.KQ · 🇺🇸 AAPL, BRK-B |
영문/숫자/./- 만. 공백·특수문자·이모지 → 거부 |
| 수량 | quantity |
10, 1.5 |
0보다 큰 양수. US fractional share OK |
| 평단가 (1주당) | avg_price |
🇰🇷 60000 (원/KRW) · 🇺🇸 180.5 (달러/USD) |
시장 통화 그대로 — 환산 금지 |
| 시장 | market |
KR (한국 주식) / US (미국 주식) |
라디오 버튼 |
⚠ 암호화폐 / 환율 / 선물 (BTC-USD, EUR=X, GC=F …) 은 보유 종목 추적 미지원. 시세 sensor (
sensor.fi_other_*) 는 제공되지만 add_position 의 market 라디오에는 KR/US 만 있어요.
💱 환산 자동 — KR 종목은 원 그대로, US 종목은 달러 그대로 입력. USD/KRW 환율은 통합이 자동으로 가져와서
sensor.fi_portfolio_krw_total/sensor.fi_portfolio_krw_pl에 합산합니다. 환산값을 미리 넣으면 이중 환산되어 망가져요.
🛡️ 입력 검증 — schema 단계에서 ticker는 정규식
^[A-Za-z0-9][A-Za-z0-9.\-]{0,19}$필터, quantity·avg_price는 양수 + finite (NaN/Infinity 거부) + 최대 10억. 잘못된 값 (특수문자, 음수, 빈 칸, 한글 ticker, HTML/SQL 인젝션 시도 등) 은 서비스 호출이 시작 전에 명확한 에러 메시지와 함께 차단됩니다.
저장 후 6개 portfolio sensor (sensor.fi_portfolio_*) + P/L alert binary_sensor가 자동으로 활성화됩니다.
같은 화면에서 kr_finance_kit.remove_position 선택 → ticker + market 입력 → 동작 수행.
여러 종목을 한 번에 넣고 싶다면 개발자 도구 → 동작 → "YAML 모드로 이동":
action: kr_finance_kit.add_position
data:
ticker: "005930"
quantity: 10
avg_price: 60000
market: KR종목별로 동작 1회씩 실행. 자동화 스크립트로 묶어두면 HA 시작 시 자동 등록도 가능.
옵션 화면에서 종목을 여러 개 등록해두고, 블루프린트 입력에서 체크박스로 알림 받을 종목만 선택하는 패턴. 종목 추가/삭제 시 자동화 재생성 불필요.
change_pct (전일 종가 대비) 기반. 입력: 종목·하락 임계값·상승 임계값·알림 대상.
종목별로 다른 분을 트리거하려면 블루프린트 자동화를 여러 개 만드시면 됩니다. 예:
- 자동화 1: 종목=[삼성전자], 윈도우=15분
- 자동화 2: 종목=[비트코인], 윈도우=60분
v0.1.53부터 sensor가 1·5·15·30·60·90·120·180분 8개 윈도우 attribute를 옵션 입력 없이 자동 생성. 블루프린트 number 입력에 그 중 하나(예 30) 넣으면 즉시 동작.
📥 Import 직후 warm-up — 첫 알림은 윈도우만큼 가격 샘플이 쌓여야 옴
⚠️ HA 재시작 시 — N분 윈도우는 N분 동안 attribute None (memory-only buffer)
장 마감 직후(기본 15:30 KST) 지수·환율·종목·평가손익을 한 메시지로.
모든 블루프린트는 notify.send_message (HA 2024.6+ 표준) 사용. mobile_app 자동 호환. service-only notify (일부 telegram_bot 모드 등) 사용자는 docs/examples/ 의 raw YAML 참고.
마크다운 표 위주의 슬림한 vertical-stack 예시 — 본인 취향대로 수정하세요. ApexCharts 1개 외에는 빌트인 markdown 카드만 사용.
- docs/examples/dashboard.yaml 의 view 블록 복사
- HA → Settings → Dashboards → ⋮ Edit → ⋮ Raw configuration editor
views:아래에 paste → Save- 섹션 6 의 종목 entity_id 와 섹션 7 의 disclosure entity_id 를 본인 종목으로 교체
entity 참조는
sensor.fi_*/binary_sensor.fi_*형식. v0.1.54+ migration 후, v0.1.61+positionsattribute 가 있어야 보유 종목 현황 표가 작동합니다.
| 카드 | 어디 쓰임 | 대체 가능 여부 |
|---|---|---|
apexcharts-card |
포트폴리오 30일 추세 차트 1개 | 빼면 그 섹션만 제거 |
다른 모든 카드는 HA 빌트인 (markdown 만 사용).
| 섹션 | 카드 | 데이터 |
|---|---|---|
| 1. Hero | markdown | 헤더 |
| 2. 💼 포트폴리오 KPI 표 | markdown | 한국·미국·KRW 합계 (3행) |
| 3. 📦 보유 종목 현황 표 | markdown | sensor.fi_portfolio_krw_pl 의 positions attribute (qty / avg / current / 손익률) |
| 4. 📈 포트폴리오 30일 차트 | apexcharts-card | sensor.fi_portfolio_krw_total 30일 area chart |
| 5. 🌐 지수 & 환율 표 | markdown | KOSPI · KOSDAQ · USD/KRW · NASDAQ · DOW · S&P 500 · NIKKEI · HANGSENG · FTSE · DAX |
| 6. 📊 종목 시세 표 | markdown | KR + US + 암호화폐/환율/선물 한 표 통합 (placeholder 14행) |
| 7. 📋 공시 라이브 리스트 | markdown | OpenDart binary_sensor — ON 종목 보고서명·날짜·링크, OFF 종목 회색 점선 |
| 8. 🔗 빠른 링크 | markdown | 개발자 도구·통합 옵션·자동화 화면 바로가기 |
trigger:
- platform: state
entity_id: binary_sensor.fi_portfolio_pl_alert
to: "on"
action:
- service: notify.mobile_app_my_phone
data:
title: "포트폴리오 알림"
message: >
평가손익 {{ state_attr('binary_sensor.fi_portfolio_pl_alert', 'current_pl_pct') }}%
— 임계값 ±{{ state_attr('binary_sensor.fi_portfolio_pl_alert', 'threshold_pct') }}%trigger:
- platform: event
event_type: kr_finance_kit_kr_market_closed
action:
- service: notify.notify
data:
message: "코스피 종가 {{ states('sensor.fi_kospi') }}"더 많은 예시: docs/examples/
HA Assist에 자동 등록 (finance_query LLM tool). 8개 query_type:
- index / fx / quote / portfolio / disclosures / disclosure_for_ticker / top_movers / market_summary
예시 질문:
- "코스피 지금 얼마야?"
- "삼성전자 시세 알려줘"
- "오늘 가장 많이 오른 종목?"
- "오늘 시장 요약해줘"
- "관심 종목 새 공시 있어?"
Google Assistant / Alexa / ChatGPT 음성 모드 / 로컬 Whisper — HA Assist 통해 모두 사용 가능 (LLM 기반 conversation 통합 필요).
증권사 계정과 연동하나요?
아니요. 비공식 API 보안·법적 리스크가 있어 의도적으로 빼두었습니다. yfinance(Yahoo Finance 공개) + OpenDart(금융감독원 공식) + 사용자 직접 입력하는 평단가·수량 조합.
무료인가요?
전부 무료. yfinance·OpenDart 둘 다 무료 무제한(개인 사용 범위). 통합 자체도 MIT.
장 마감 후·주말에도 동작하나요?
직전 거래일 종가 표시. 한국·미국 공휴일 자동 처리. 암호화폐·환율은 24/7 갱신.
HA 재시작하면 단기 변동률이 None으로 보입니다
memory-only ring buffer라 정상. N분 윈도우면 N분 동안 None → 그 후 정상. 60분 윈도우는 약 1시간 warm-up.
옵션을 나중에 바꾸려면?
설정 → 기기 및 서비스 → KR Finance Kit → ⚙ 옵션. 저장하면 자동 reload.
차트 카드?
이 통합은 sensor만 제공. apexcharts-card(별도 HACS) 또는 HA 기본 통계 카드에 연결해 사용.
⚙️ 기술 세부사항
| 데이터 | 소스 | yfinance ticker |
|---|---|---|
| 코스피·코스닥 | yfinance | ^KS11, ^KQ11 |
| 나스닥·다우·S&P 500 | yfinance | ^IXIC, ^DJI, ^GSPC |
| 닛케이·항생·FTSE·DAX | yfinance | ^N225, ^HSI, ^FTSE, ^GDAXI |
| USD/KRW | yfinance | KRW=X |
| 한국 종목 | yfinance | 005930.KS / .KQ |
| 미국 종목 | yfinance | AAPL |
| 암호화폐 | yfinance | BTC-USD (24/7) |
| 외환·선물 | yfinance | EUR=X, GC=F (24/7) |
| 공시 + 종목명 매핑 | OpenDart | list.json, corpCode.xml |
- 한·미 시장 중 하나라도 열림: 60초
- 양쪽 다 닫힘 (야간·주말): 600초 (자동 dial-down)
- 암호화폐·환율·선물: 항상 60초 (시장 시간 무관)
- 메모리만, ticker당 deque(maxlen=300) ≈ 5시간 history
- HA 재시작 시 비워짐 (의도된 trade-off)
yfinance>=0.2.40 하나만. HA가 자동 설치.
- ❌ 자동 매매 (법·약관 리스크)
- ❌ 증권사 계좌 직연동
- ❌ 차트 카드 (apexcharts-card 사용)
- ❌ 백테스팅
| 버전 변화 | 영향 |
|---|---|
| ≤v0.1.31 → v0.1.32+ | entity_id 한국어 슬러그 (sensor.hangug_*) → 영어 슬러그. 통합 삭제 후 재추가 권장 |
| v0.1.32~v0.1.33 → v0.1.34+ | sensor.kr_finance_kit_* → sensor.fi_* 단축. 삭제+재추가 또는 entity_id 수동 변경 |
| ≤v0.1.43 → v0.1.44+ | 새 옵션 5종 (target_currency_krw, P/L alert, market_close events, global indices, disclosure filter) — 옵션 화면 한 번 저장 필요 |
| ≤v0.1.47 → v0.1.48+ | config_flow 500 에러 fix (frontend serialize 호환 selector 사용) |
| ≤v0.1.51 → v0.1.52 | 단기 변동률 옵션이 잠시 CSV로 도입 (지금은 제거됨). |
| ≤v0.1.52 → v0.1.53+ | 옵션 제거. sensor가 항상 1/5/15/30/60/90/120/180분 attribute 자동 생성. 블루프린트 number 입력에서 그 중 하나 선택. |
- 가격이 안 뜸 / Unavailable → HA 재시작 후 1~2분. 계속되면 Issues
- 옵션 새 항목이 안 보임 → HA 완전 재시작 (Reload 아님, translation cache flush)
already_in_progress에러 → v0.1.47+ 받기, HA Restart구성 흐름 500 에러→ v0.1.48+ 받기- 더 자세한 가이드: docs/installation-ko.md
도움이 되셨다면 커피 한 잔 🙏
|
토스 |
PayPal |
🤝 버그 리포트·기능 제안: Issues | 📦 변경 이력: Releases | 📝 MIT License
📘 English summary
A Home Assistant HACS integration exposing Korean and US equities, FX, crypto, and OpenDart disclosures as native HA sensors. Free data sources only (yfinance + OpenDart's free key), no brokerage credentials, voice-assist ready.
See README.en.md for the full English version.