Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
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 ↗
한국과 미국의 통화 가치, 환율, 인플레이션을 살펴보는 개인용 지표 대시보드입니다. 첫 화면은 한국이며, 사이드바에서 한국 → 미국 → 주식으로 이동합니다. 국가별 화면 상단에는 현재 국면과 성장 × 인플레이션 4분면 차트를 표시하고, 지표는 통화 가치·환율과 인플레이션 두 영역으로 구성합니다.
위키와 원칙 탭, 원칙 시뮬레이터·생성 파이프라인, 성장 지표 섹터는 제거했습니다. 기존 지표의 해석 방식은 이후 별도로 검토합니다. 수집된 원본 자료와 과거 분석 도구는 보존합니다.
한국·미국 화면의 현재 국면 (자동 판정) 패널은 기존 assessment_kr·assessment를
사용합니다. 장기 기준과 최근 10년 기준의 성장·인플레이션 점수와 국면을 표시하며,
미국은 기존 종합 판정 자료가 있으면 해당 카드도 표시합니다.
차트의 X축은 인플레이션, Y축은 성장이며 경계는 기존 40/60입니다. 최근 24개월 궤적과 현재 위치를 나타내는 붉은 점을 함께 표시합니다. 한국·미국의 4분면 프레임워크 참고 카드도 기존 문구 그대로 유지합니다. 개별 성장 지표 섹터는 추가하지 않습니다.
| 화면 | 주요 기존 자료 | 코드 예시 |
|---|---|---|
| 한국 통화 가치·환율 | 원/달러 환율, 10년 국채금리, M2, GDP 대비 정부부채 | DEXKOUS, IRLTLT01KRM156N, MYAGM2KRM189S, DEBTTLKRQ052N |
| 한국 인플레이션 | CPI 전년 대비 변화율 | KORCPIALLMINMEI |
| 미국 통화 가치·환율 | 광의 무역가중 달러 지수, 국채금리, M2, 부채·국채 수요 | DTWEXBGS, DGS10, M2SL, GFDEBTN, TREAST |
| 미국 인플레이션 | CPI·Core CPI·PCE, 기대 인플레이션, 생산자물가·원유 | CPIAUCSL, CPILFESL, PCEPI, T10YIE, T5YIFR, DCOILWTICO |
환율과 달러 지수는 이미 수집하는 assets 시계열을 사용합니다. 기존 지표의 기간 선택,
비교 차트, 주요 이벤트 표시는 유지합니다. 종목 데이터는 주식 탭을 처음 열 때 불러옵니다.
지표 정의는 scripts/fetch_fred.py의 INDICATORS와 ASSETS에 있습니다.
성장 지표는 기존 수집·분석 자료로 보관하고, assessment·assessment_kr는
국가별 현재 국면 패널과 4분면 차트에서 사용합니다. 개별 성장 지표 섹터는 표시하지 않습니다.
scripts/analyze.py, scripts/backtest.py, scripts/compare_models.py는 기존 자료를
재검토할 때 사용할 수 있는 오프라인 분석 도구로 남겨 둡니다.
Indicator_dashboard/
├── README.md
├── .gitignore
├── index.html # vendor + js/ 스크립트를 의존 순서대로 로드
├── style.css # 다크 테마 + 반응형 카드 레이아웃
├── app.js # DOMContentLoaded 시작 코드
├── js/ # 데이터 클라이언트·공통 함수·기능별 화면 코드
├── vercel.json # Vercel 배포 설정 (JSON 캐시 정책)
├── data/
│ ├── index.json # 메타데이터 + assessment (4분면 판정) 요약
│ ├── indicators/
│ │ └── <CODE>.json # 지표별 전체 payload — 개별 편집 가능
│ ├── assets/
│ │ └── <CODE>.json # 비교 자산별 전체 payload
│ ├── stocks/ # 주식 가격·재무 자료
│ └── wiki/ # 주식 시장 지도에서 사용하는 노트 색인·본문
├── scripts/
│ ├── fetch_fred.py # FRED API → data/ 분할 저장
│ ├── analyze.py # percentile/label/quadrant 재계산 (CLI)
│ ├── analytics_series.py # 시계열 변환·월말 집계·백분위·EWMA 공통 함수
│ ├── data_io.py # 수집 스크립트의 JSON 입출력 공통 함수
│ ├── build_static.js # 배포용 dist/ 생성 (UI + vendor + 주식 연구 노트)
│ ├── build_wiki_graph.py # 주식 연구 노트 색인·본문 내보내기
│ └── requirements.txt
└── .github/workflows/
└── update.yml # 주 1회 자동 수집 + 커밋
각 지표/자산의 시계열은 개별 JSON 파일로 분리 저장됩니다. 개별 파일을 직접 열어서 편집·가공한 뒤
python scripts/analyze.py를 돌리면current(백분위·레이블) 와assessment를 재계산해 반영합니다.
index.html은 일반 브라우저 스크립트를 순서대로 로드하고 마지막에 app.js가 화면을 시작합니다.
기존 인라인 이벤트 핸들러가 호출하는 전역 함수는 유지합니다. 모듈을 추가하거나 순서를 바꿀 때는
index.html과 스크립트 로드 회귀 테스트를 함께 확인합니다.
| 파일 | 책임 |
|---|---|
js/data-client.js | API 요청 제한·타임아웃·재시도·문서 조회 |
js/metadata.js, js/watchlist.js | 지표 표시 정보와 자동 생성 종목·경쟁사 목록 |
js/helpers.js, js/charts.js | 표시 함수와 공통 차트 렌더링 |
js/dashboard.js, js/sidebar.js | 탭별 지연 로딩·현재 국면과 4분면 차트·지표 카드·내비게이션 |
js/stocks.js, js/value-screen.js | 종목·재무·가치 발굴 화면 |
js/market-map.js, js/player-map.js | 시장 지도와 기업 지도 |
js/wiki-notes.js | 주식 시장·기업 지도에서 공유하는 노트 조회·본문 뷰어 |
js/watchlist.js의 생성 구간은 scripts/watchlist_data.py를 수정한 뒤
python scripts/gen_watchlist.py로 갱신합니다.
python -m pip install -r scripts/requirements.txt
python -m unittest discover -s tests -v
node --test --test-isolation=none tests/test_*.js
python -m compileall -q scripts
for source in app.js js/*.js scripts/*.js; do node --check "$source"; done
node scripts/build_static.js
git diff --exit-code -- data
회귀 테스트는 외부 데이터 API 호출 없이 임시 파일과 모의 응답을 사용합니다.
정적 빌드는 원본 data/를 수정하지 않으며, dist/에는 화면 코드·라이브러리·주식 연구 노트 JSON만 복사합니다.
생성된 HTML은 JavaScript·CSS 내용에 따른 버전 주소를 사용해 이전 파일 캐시가 새 화면과 섞이지 않도록 합니다.
데스크톱·모바일 브라우저 회귀 검증은 Playwright를 설치한 환경에서 실행합니다.
아래 검증은 dist/를 로컬 서버로 열고 원격 데이터 요청을 저장소의 자료로 대체합니다.
python -m pip install playwright
python -m playwright install chromium --only-shell
node scripts/build_static.js
python tests/browser_currency_smoke.py
스크린샷과 결과 JSON은 기본적으로 /tmp/currency-browser-smoke/에 저장합니다.
# 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/index.json과 지표·자산·종목별 JSON이 갱신되고, 각 지표별로 Fetching T10Y2Y... OK (520 points) 형태의 로그가 찍힙니다.
정적 파일이라 어떤 HTTP 서버로도 띄울 수 있습니다. 파이썬 내장 서버가 가장 간편합니다.
node scripts/build_static.js
python -m http.server 8000 --bind 0.0.0.0 --directory dist
# 브라우저에서 http://localhost:8000 접속
file://대신 HTTP 서버로 실행하세요. 주식 연구 노트는 로컬data/wiki/를 우선 사용하고, 지표·종목 등은js/data-client.js의 원격 데이터 소스를 조회합니다.
자동 수집을 위해 리포지토리에 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.json의 설정에 따라 node scripts/build_static.js로 정적 산출물을 만들고 dist/를 서빙합니다.
This is the beginning of the README. Read the rest at the original. Read the full README ↗