동기화
한 명령으로 firma가 의존하는 외부 데이터를 모두 업데이트합니다. Finnhub의 실시간 주가와 FRED의 과거 환율을 가져오며, 이미 등록한 데이터를 기준으로 필요한 부분만 요청합니다.
firma sync
기본적으로는 활성 보유 종목의 가격과 5개 지원 통화(KRW, JPY, EUR, CNY, GBP)의
환율 이력을 함께 가져옵니다. 한 번 실행하면 둘 다 처리됩니다.
$firma sync
◇ Updated 4 stocks ◇ Synced 9525 FX rates across 5 currencies
가격을 위한
finnhub-key와 환율을 위한 fred-key가 모두 필요합니다.
먼저 firma config set finnhub-key <key>와
firma config set fred-key <key>를 실행합니다.범위는 데이터에서 도출
firma는 필요한 만큼만 API에 요청합니다. sync 범위는 로컬 SQLite 데이터베이스에서
계산됩니다:
주가, 현재 보유 종목 기준
거래 내역에서 계산한 순보유 수량이 0이 아닌 티커만 Finnhub에서 가져옵니다. 0까지 매도하면 다음 sync에서 빠집니다. 보유 종목이 4개라면 Finnhub 호출은 4번이지 400번이 아닙니다.
환율 이력, 가장 이른 데이터 기준
첫 실행에서는 거래, 자산, 현금흐름 항목을 훑어 가장 이른 날짜를 찾고, 그 시점부터 오늘까지의 환율을 백필합니다. 보통 FRED 호출은 5회 정도이고 10초 안팎이면 끝납니다. 이후에는 마지막 캐시 날짜 이후만 가져오므로 보통 1초도 걸리지 않습니다.
따라서 데이터를 먼저 등록한 다음 sync하는 편이 맞습니다. 빈 데이터베이스에서는
범위를 계산할 근거가 없어서 아무 일도 일어나지 않습니다.
firma sync fx
환율 이력만 새로 고칩니다. 훨씬 오래된 거래를 새로 가져와서 현재 FX 캐시가 그
시점을 덮지 못할 때, 혹은 가격은 그대로 두고 환율 이력만 갱신하고 싶을 때 유용합니다.
$firma sync fx
◇ Synced 9525 FX rates across 5 currencies
동일한 증분 로직.
FRED의
일별 시리즈(
DEXKOUS, DEXJPUS, DEXCHUS,
DEXUSEU, DEXUSUK)에서 가져와 일관된 방향(USD 1당
외화)으로 ~/.firma/firma.db의 fx_rates 테이블에 저장합니다.과거 환율이 중요한 이유
과거 환율 캐시 없이 USD가 아닌 통화로 과거 자산을 표시하면 오늘의 환율이
적용됩니다. 즉 "2018년 KRW 기준 내 순자산은?" 같은 질문에 잘못된 답이 나옵니다. Firma는
각 항목을 해당 날짜의 환율로 변환하므로, 과거 수치는 그 시점에 실제로 가지고
있던 가치를 반영합니다.
날짜가 붙은 항목은 모두 과거 환율을 사용합니다. 반대로 "현재 가치"를 뜻하는 항목,
예를 들어 포트폴리오 시가, 브리핑의 MACRO TODAY 섹션, 어제 대비 FX 영향 등은
실시간 환율(
open.er-api.com)을 사용합니다.일상 루틴
초기 설정 이후, 아침 루틴은 두 명령 또는 Claude 프롬프트 하나입니다:
$firma sync && firma brief
또는 Claude에서:
Claude Desktop · firma MCP 연결됨
사용자
전체 동기화하고 오늘 브리핑 줘.
Claude
sync_prices ✓ sync_fx_rates ✓ get_brief ✓
포트폴리오는 오늘 +$1,820 (+1.1%) 상승했습니다. NVDA가 +4.3%로 선두입니다. 거시경제는 risk-on (5/5), 스트레스는 낮음 (4/100)입니다. MSFT 실적 발표는 4/29입니다. 더 깊이 살펴볼 항목이 있나요?