Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
성장 × 인플레이션 4분면 기반 경제 지표 개인 대시보드
Translation pending
FinanceJavaScript · PythonGitHub @lukeeee73OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
레이 달리오의 All Weather Portfolio 프레임워크를 참고해, 현재 경제 상황이 4분면(성장 ↑↓ × 인플레이션 ↑↓) 중 어디에 속하는지 판단하기 위한 개인용 지표 모니터링 대시보드입니다. 자동화의 목표는 데이터 수집과 시각화까지이며, 해석과 판단은 수동으로 진행합니다. 주간 판단 노트는 이 리포지토리가 아니라 별도 Obsidian vault(luke-wiki)에 수기로 작성합니다. 지표를 추가/수정하려면 scripts/fetch_fred.py 상단의 INDICATORS 딕셔너리만 편집하면 됩니다. 수집 이후 scripts/analyze.py 가 두 층의 판정을 assessment 블록에 저장합니다. 종합 판정 (Primary — 백테스트 검증 모델) 대시보드 헤드라인. 1980–2026 워크포워드 백테스트(발표 지연 시뮬레이션 포함)에서 8개 후보 모델 중 가장 좋았던 모델 H 의 판정입니다.Read the full README ↗
레이 달리오의 All Weather Portfolio 프레임워크를 참고해, 현재 경제 상황이 4분면(성장 ↑↓ × 인플레이션 ↑↓) 중 어디에 속하는지 판단하기 위한 개인용 지표 모니터링 대시보드입니다.
자동화의 목표는 데이터 수집과 시각화까지이며, 해석과 판단은 수동으로 진행합니다. 주간 판단 노트는 이 리포지토리가 아니라 별도 Obsidian vault(luke-wiki)에 수기로 작성합니다.
| 분면 | 성장 | 인플레이션 | 유리한 자산 (참고) |
|---|---|---|---|
| 1 | ↑ | ↑ | 원자재, 신흥국 주식, 인플레 연동채 |
| 2 | ↑ | ↓ | 선진국 주식, 회사채 |
| 3 | ↓ | ↑ | 금, 인플레 연동채, 원자재 |
| 4 | ↓ | ↓ | 국채(장기), 현금 |
| 지표 | FRED 코드 | 분면 | 변환 | 비고 |
|---|---|---|---|---|
| 10Y-2Y 금리차 | T10Y2Y | 성장 | — | 역전 시 침체 경고 (선행) |
| 산업생산 YoY | INDPRO | 성장 | YoY% | 성장 현재 상태 |
| 비농업 고용 YoY | PAYEMS | 성장 | YoY% | 성장 확산 지표 |
| 주 단위 선행지수 | USSLIND | 성장 | — | Philly Fed, 6개월 성장 전망 |
| CPI YoY | CPIAUCSL | 인플레 | YoY% | 표면 인플레 |
| Core CPI YoY | CPILFESL | 인플레 | YoY% | 끈적한(sticky) 인플레 |
| PCE YoY | PCEPI | 인플레 | YoY% | Fed 통화정책 준거 |
| 10Y BEI | T10YIE | 인플레 | — | 시장 기대 인플레 |
| WTI YoY | DCOILWTICO | 인플레 | YoY% (일간→월말) | 공급측 압력 |
지표를 추가/수정하려면 scripts/fetch_fred.py 상단의 INDICATORS 딕셔너리만 편집하면 됩니다.
수집 이후 scripts/analyze.py 가 두 층의 판정을 assessment 블록에 저장합니다.
대시보드 헤드라인. 1980–2026 워크포워드 백테스트(발표 지연 시뮬레이션 포함)에서 8개 후보 모델 중 가장 좋았던 모델 H 의 판정입니다.
| 신호 | 적중 | 중위 선행 | FPR | flips/yr |
|---|---|---|---|---|
| 성장 low → NBER 침체 | 4/4 | +16개월 | 7.7% | 0.54 |
| 인플레 high → 고인플레 국면 | 3/3 | +0개월 | 5.9% | 0.52 |
(베이스라인 단순 백분위 평균 대비 FPR 을 1/3~1/2 로 줄이면서 선행성 유지.
전체 비교는 data/eval/comparison.json, 재현은 python scripts/compare_models.py)
각 지표의 현재값을 두 개의 참조 창에 대한 백분위(percentile) 로 환산한 단순 평균 — 종합 판정과 엇갈리는지 비교하는 보조 뷰로 유지합니다.
high, ≤ 40 → low, 그 사이 → neutral한국 탭은 백테스트 정답지(침체/인플레 episode)가 미국 기준이라 아직 종합 판정 없이 참조용 백분위 뷰만 제공합니다.
기존 JSON 에 assessment 를 재계산만 하고 싶을 때는 네트워크 없이 이렇게:
python scripts/analyze.py
data/labels/ 의 정답지(NBER 침체 + 사전 등록 규칙 기반 인플레 episode)에 대해
각 월말 시점에 "그때 알 수 있었던 데이터"(발표 지연 시뮬레이션)만으로 판정을
재실행해 채점합니다. 하이퍼파라미터는 모두 사전 등록 — 결과를 보고 조정하지
않습니다 (과적합 방지).
python scripts/backtest.py # 베이스라인 채점 → data/eval/baseline.json
python scripts/compare_models.py # 모델 A~H 비교 → data/eval/comparison.json
dalio-dashboard/
├── README.md
├── .gitignore
├── index.html # 대시보드 진입점 (Chart.js CDN 로드)
├── style.css # 다크 테마 + 반응형 카드 레이아웃
├── app.js # data/ fetch & 차트 렌더링 (국가 탭 + 섹터 서브탭)
├── vercel.json # Vercel 배포 설정 (JSON 캐시 정책)
├── data/
│ ├── index.json # 메타데이터 + assessment (4분면 판정) 요약
│ ├── indicators/
│ │ └── <CODE>.json # 지표별 전체 payload — 개별 편집 가능
│ ├── assets/
│ │ └── <CODE>.json # 비교 자산별 전체 payload
│ └── principles/
│ └── timeline.json # 원칙 탭 시나리오 데이터 (scripts/build_principles.py)
├── scripts/
│ ├── fetch_fred.py # FRED API → data/ 분할 저장
│ ├── analyze.py # percentile/label/quadrant 재계산 (CLI)
│ ├── build_principles.py # 원칙 탭용 국면·자산수익률 타임라인 생성
│ └── requirements.txt
└── .github/workflows/
└── update.yml # 주 1회 자동 수집 + 커밋
각 지표/자산의 시계열은 개별 JSON 파일로 분리 저장됩니다. 개별 파일을 직접 열어서 편집·가공한 뒤
python scripts/analyze.py를 돌리면current(백분위·레이블) 와assessment를 재계산해 반영합니다.
# 1. FRED API 키 발급: https://fred.stlouisfed.org/docs/api/api_key.html
export FRED_API_KEY="your_api_key_here"
# 2. 의존성 설치
pip install -r scripts/requirements.txt
# 3. 수집 실행
python scripts/fetch_fred.py
실행이 끝나면 data/indicators.json 이 갱신되고, 각 지표별로 Fetching T10Y2Y... OK (520 points) 형태의 로그가 찍힙니다.
정적 파일이라 어떤 HTTP 서버로도 띄울 수 있습니다. 파이썬 내장 서버가 가장 간편합니다.
python -m http.server 8000
# 브라우저에서 http://localhost:8000 접속
⚠️
file://로 직접index.html을 열면fetch("data/indicators.json")이 CORS 정책에 막혀 데이터가 안 보입니다. 반드시 HTTP 서버로 띄우세요.
자동 수집을 위해 리포지토리에 FRED API 키를 Secret 으로 등록해야 합니다.
FRED_API_KEY, Value: 발급받은 API 키이후 .github/workflows/update.yml 이 매주 월요일 09:00 UTC (한국시간 월요일 18:00) 에 자동 실행되며, 데이터가 바뀌었을 때만 chore: update indicators (YYYY-MM-DD) 커밋을 생성합니다.
Actions 탭의 "Update FRED Indicators" → Run workflow 버튼으로 수동 실행도 가능합니다.
정적 사이트라 빌드 단계가 없고, Vercel 이 자동으로 감지해 루트를 그대로 서빙합니다.
lukeeee73/Indicator_dashboard 선택 → ImportOther (자동으로 잡힐 것)https://<프로젝트명>.vercel.app URL 발급Vercel 이 GitHub 의 default branch 를 감시하므로,
data/indicators.json 을 자동 커밋하면자동으로 재배포됩니다. 별도 동작 필요 없음.
vercel.json)data/indicators.json 은 Vercel Edge CDN 에서 최대 5분만 캐시되도록 설정되어 있어, 주간 갱신이 곧바로 반영됩니다. 나머지 정적 파일은 기본 캐시 정책을 따릅니다.
대시보드 상단의 🧭 원칙 탭은 "과거 특정 시점으로 돌아가 그 때 알 수 있었던 정보만으로 투자 결정을 내렸다면 수익률이 어땠을까"를 시뮬레이션하는 개인용 백테스트 실험실이다. 레이 달리오의 성장×인플레이션 4분면 프레임워크에서 아이디어를 가져왔다.
scripts/backtest.py / compare_models.py
가 이미 구현한 발표 지연(release lag) 시뮬레이션 + 모델 H(백테스트 승자)
워크포워드를 그대로 재사용한다 — 그 시점 이후 데이터는 전혀 보지 않는다.DGS10 금리에서 duration 근사로 총수익 지수 역산data/indices/GSPC.json (S&P500, 가격지수, 배당 미반영)data/assets/KOSPI.json (가격지수, KRW)data/assets/GOLD.json (XAU/USD 현물, 수집된 뒤부터 자동으로 나타남)data/principles/timeline.json 의 note
필드에 그대로 노출된다.localStorage 에 쌓이며, 반복해서
시나리오를 시험하며 나만의 투자 원칙을 만들어가는 것이 목적이다. JSON 내보내기로
백업할 수 있다.데이터 갱신:
python scripts/build_principles.py # data/principles/timeline.json 재생성
새 지표를 수집하지 않고 기존 data/ 를 재조합만 하므로 네트워크 호출이 없다.
국면/지표 데이터가 갱신되면(주간 자동 수집) 다시 실행해 최신 상태로 맞춘다.
⚠️ 국면 판정과 자산 수익률 모두 이 레포 데이터로 만든 교육용 근사치이며, 투자 조언이 아니다.
requests 만 사용. 학습과 유지보수 부담을 낮추기 위함.대시보드 왼쪽 사이드바의 위키 탭은 Obsidian vault(lukeeee73/luke_wiki)의
노트와 [[위키링크]] 구조를 frontmatter 기반 3D 지식 좌표계로 시각화한다.
confidence + type + sources + fact/claim calloutweight + type (reference → foundational)authorship/origin 명시값을 우선하고, 없으면 폴더·type·
[!judgment] callout으로 추정 — 위로 갈수록 내 판단·원칙, 아래는 AI·루틴 수집나의 개입도는 저자를 단정하는 값이 아니다. 현재 노트 대부분에는 작성 주체 필드가
없어 휴리스틱으로 추정하며, 정확히 고정하려면 노트 frontmatter에
authorship: human | mixed | ai | routine을 추가한다. 노드를 클릭하면 상세 패널에
원본 frontmatter, 세 축 점수, fact/claim/judgment callout 수가 뜨고,
📖 이 화면에서 읽기 로 노트 본문을 대시보드 안에서 마크다운으로 읽을 수 있다
(본문 속 [[위키링크]] 를 클릭하면 그 노트로 바로 이동).
노트 뷰어는 위키 탭 전용이 아니다 — 시장 지도의 노드/기업 상세 패널에도 "옵시디언 위키 노트" 섹션이 붙어, 지도의 짧은 요약을 vault 의 긴 글로 확장해서 읽을 수 있다. 노트는 두 경로로 연결된다:
markets[].wiki: [{path, label}] (vault 상대 경로,
예: wiki/concepts/hbm.md). 연결된 노드에는 지도에서 📖 n 배지가 붙는다.players[].ticker 를 루틴 뉴스 로그(wiki/news/tickers/{TICKER} - *.md)와
매칭 — daily-market-analysis 루틴이 매일 누적하는 종목 뉴스가 그대로 지도에 꽂힌다.
플레이어 지도(예: HBM)의 기업 상세에서도 같은 방식으로 열린다.data/wiki/graph.json 이 아직 동기화 전이면 섹션은 조용히 숨겨진다.
scripts/build_wiki_graph.py 가 vault 를 파싱해 두 가지를 만든다:
data/wiki/graph.json — 노드/엣지 + frontmatter + 인식론 callout + 3D 좌표 점수data/wiki/notes/{i}.json — 노트 본문 (노트 뷰어; --no-content 로 끌 수 있음)⚠️ 본문을 내보내면 대시보드 배포본에 노트 내용이 포함된다. 대시보드가 공개 URL 이면 노트도 공개되는 셈이니, 원치 않으면 워크플로의 빌드 명령에
--no-content를 붙일 것.
접근 설정:
WIKI_REPO_TOKEN
시크릿 추가 (luke_wiki Contents: Read 권한의 fine-grained PAT).| 방법 | 지연 | 설정 |
|---|---|---|
wiki-sync.yml 시간별 폴링 | 최대 1시간 | 기본 동작, 설정 불필요 |
| Actions 에서 Sync Wiki Graph 수동 실행 | 즉시 | 버튼 클릭 |
luke_wiki push → repository_dispatch | 푸시 후 ~1분 | 아래 참고 |
푸시 즉시 반영 설정 — luke_wiki 저장소에 아래 워크플로를 추가한다
(.github/workflows/notify-dashboard.yml). Obsidian 의 git 플러그인으로
commit-and-sync 하는 순간 대시보드가 자동 갱신된다:
name: Notify dashboard
on:
push:
branches: ["**"] # 또는 사용 중인 기본 브랜치만
jobs:
notify:
runs-on: ubuntu-latest
steps:
- run: |
curl -sS -X POST \
-H "Authorization: Bearer ${{ secrets.DASHBOARD_DISPATCH_TOKEN }}" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/lukeeee73/Indicator_dashboard/dispatches \
-d '{"event_type":"wiki-updated"}'
DASHBOARD_DISPATCH_TOKEN 은 luke_wiki 저장소의 시크릿으로,
Indicator_dashboard 에 Contents: Read and write 권한이 있는
fine-grained PAT 를 넣는다 (repository_dispatch 호출에 필요).
로컬 생성: python scripts/build_wiki_graph.py --vault ../luke_wiki --out data/wiki/graph.json
index.html + app.js + style.css + Chart.js 기반 카드형 대시보드data/markets/ai-semiconductor.json 하나에 모이며, 티커별 narrative_score 가
시장별로 자동 집계된다. 조사·갱신은 .claude/routines/market-research/ 루틴 담당.signals: 공급 긴축/완화·수요 확대/축소, 강도 1~3)를 달고,
scripts/market_pulse.py 가 시장별 병목 판정 기준
(data/markets/criteria/)에 따라 시간 감쇠·다중 소스 hysteresis 로 집계해
시장별 병목 압력·수요 모멘텀·severity 전이 제안·병목 이동 경보
(data/markets/analysis/)를 산출한다 (예: 2024 CoWoS → 2026 HBM·전력 이동 패턴).
스크립트는 지도를 직접 고치지 않는다 — 탐지(스크립트)와 판단(루틴) 분리:
주간 market-research 루틴이 제안을 교차 검증한 뒤 지도에 반영한다. 웹 시장
지도에는 노드 ▲▼ 압력 화살표·보드 상단 자동 신호 스트립·상세 패널 게이지로 표시.data/markets/power-ai.json, 14개 시장). 핵심 질문은 "BTM(구내 전용 발전)에
얼마나 몰리는가 vs 그리드(계통 접속·PPA)에 얼마나 몰리는가" — 전기가 만들어지는
구조([연료 → 발전(터빈·원자로·PV) → 승압 → 송전 → 부하])를 따라
연료(가스·우라늄) → 장비(가스터빈·변압기·ESS) → 발전원(가스·기존 원전·SMR·
재생+ESS·연료전지) → 조달 경로(BTM vs FTM·송전망) → AI DC 수요의 5단 캐스케이드로
배치했다. 어떤 경로든 터빈·변압기라는 공통 장비 관문을 지나는 것이 구조의 핵심.
watchlist 에 "전력 인프라 (AI)" 그룹 10종(GEV·ETN·VRT·PWR·BE·OKLO + K-전력기기
4종) 신설, market pulse 자동 신호·criteria·주간 루틴() 동일 적용.대시보드의 주식 탭 → 개별 종목 에서 섹터별로 묶인 모든 종목 카드를 확인할 수 있다.
종목 정의는 scripts/watchlist_data.py 한 파일에 모여 있으며, 변경 후
python scripts/gen_watchlist.py 한 줄로 fetch_fred.py / competitors.py /
app.js 가 일관되게 재생성된다. 자세한 절차는
.claude/routines/daily-market-analysis.md
"종목·섹터 추가 가이드" 참고.
🤖 이 daily 루틴과 주간 시장 리서치 루틴을 Claude Code 웹 (claude.ai/code/routines)에 등록·복원하는 폼 입력값(프롬프트 전문 · 스케줄 · 환경 설정 체크리스트)은 .claude/routines/SETUP.md 가 단일 기준이다. 루틴은 레포가 아니라 개인 계정에 저장되므로, 삭제했다면 저 문서를 보고 다시 등록한다.
| 섹터 그룹 | 종목 수 | 대표 종목 |
|---|---|---|
| 빅테크 / 소프트웨어 | 10 | AAPL · MSFT · GOOGL · AMZN · META · ORCL · CRM · ADBE · IBM · PLTR |
| 반도체 — AI 칩 · 설계 | 11 | NVDA · AMD · INTC · QCOM · AVGO · MRVL · MediaTek · MBLY · SNPS · CDNS · ARM |
| 반도체 — 메모리 (HBM·DRAM) | 3 | 삼성전자 · SK하이닉스 · MU |
| 반도체 — 파운드리 · 패키징 · 기판 | 3 | TSM · AMKR · Ibiden |
| 반도체 — 장비 · 소재 | 10 | ASML · AMAT · LRCX · TOELY · KLAC · 한미반도체 · Advantest · DISCO · BESI · Shin-Etsu |
| AI 인프라 — 네트워킹 · 광 · 네오클라우드 | 5 | ANET · COHR · MPWR · CRWV · NBIS |
| 로보틱스 / 피지컬 AI | 5 | TER · HSAI · MP · FANUC · Harmonic Drive |
| 자동차 / 모빌리티 | 10 | TSLA · TM · F · GM · STLA · HMC · RIVN · NIO · 현대차 · 기아 |
| 바이오 / 제약 / 헬스케어 | 10 | LLY · NVO · JNJ · PFE · MRK · ABBV · AZN · UNH · TMO · ABT |
| 에너지 / 원자재 | 10 | XOM · CVX · COP · SHEL · OXY · SLB · FCX · NEM · LIN · APD |
| 금융 | 10 | JPM · BAC · WFC · C · GS · MS · V · MA · AXP · BRK-B |
| 소비재 | 10 | WMT · COST · KO · PEP · PG · MO · MCD · HD · NKE · SBUX |
| 산업재 / 방산 | 14 | CAT · DE · BA · LMT · RTX · NOC · HON · GE · UPS · FDX · AVAV · KTOS · 한화에어로스페이스 · LIG넥스원 |
| 부동산 (REITs) | 10 | AMT · CCI · PLD · EQIX · DLR · O · SPG · WELL · PSA · VICI |
| 통신 / 미디어 | 10 | VZ · T · TMUS · CMCSA · CHTR · NFLX · DIS · SPOT · EA · TTWO |
| 유틸리티 / 전력 | 10 | NEE · SO · DUK · AEP · EXC · CEG · VST · SRE · ED · D |
| 전력 인프라 (AI) | 10 | GEV · ETN · VRT · PWR · BE · OKLO · 두산에너빌리티 · HD현대일렉트릭 · 효성중공업 · LS일렉트릭 |
| 조선 (한국, KRW) | 4 | HD현대중공업 · 한화오션 · 삼성중공업 · HD현대미포 |
각 카드에는 사업 모델 한 줄 설명, 1년 가격 추이, 4가지 핵심 재무 지표 (P/E·영업이익률·ROE·배당수익률), 분기 매출/이익 추세, 자체 산출 fair value 와 valuation gap, watchlist 내 경쟁사 비교, daily-market-analysis 루틴이 누적하는 정성 분석(narrative_score) 이 표시된다.
watchlist 가 155 종목으로 늘어 하루에 다 처리하면 부담이 크므로, daily routine 은
요일별로 섹터를 나눠서 처리한다. 매핑은 scripts/watchlist_data.py 의
DAY_OF_WEEK_SECTORS 에 정의되어 있다:
| 요일 | 처리 섹터 | 종목 수 |
|---|---|---|
| 월요일 | 빅테크 / 소프트웨어 + AI 인프라 (네트워킹·광·네오클라우드) | 15 |
| 화요일 | 반도체 4개 그룹 (AI 칩·설계 / 메모리 / 파운드리·패키징 / 장비·소재) | 27 |
| 수요일 | 로보틱스 / 피지컬 AI + 자동차 / 모빌리티 + 조선 (한국) | 19 |
| 목요일 | 바이오 / 제약 / 헬스케어 | 10 |
| 금요일 | 에너지 / 원자재 + 유틸리티 / 전력 + 전력 인프라 (AI) | 30 |
| 토요일 | 금융 + 부동산 (REITs) | 20 |
| 일요일 | 소비재 + 산업재 / 방산 + 통신 / 미디어 | 34 |
7일에 한 번 모든 종목이 한 바퀴 도는 구조다. 가격·재무 데이터(update.yml)
는 여전히 주 1회 일괄 수집한다 — 가벼우므로.
power-ai.mdvaluation.qualitative.as_of == 오늘)만 그날 자동으로
열리고 🗞️ 배지가 붙는다. 그리고 가치 발굴 탭 (주식 탭 → 🎯 가치 발굴):
버핏식 "훌륭한 기업을 훌륭한 가격에" 월간 스크리닝 — scripts/value_screen.py 가
매월 1일(value-screen.yml) 전 종목 재무제표를 훑어 사업의 질 3가지(ROE ≥ 15% ·
영업이익률 ≥ 15% · 4분기 연속 흑자) × 가격 1가지(적정가치 대비 20%+ 할인)를
모두 통과한 기업만 data/value_screen.json 에 기록한다. 통과 기업은 카드
모아보기 + 일반 카드에 🎯 배지, '기준 3개 통과(가격만 남은)' 후보는 지켜보기
리스트로 표시. 통과 0개인 달이 정상 — 그것이 '기다림'이다.