ETF 백테스트, 금융 데이터 엔지니어링, 재현 가능한 연구 · ETF Backtesting, Financial Data Engineering, and Reproducible Research
상태: 저장소 소유자가 2026-10-18에 공개 범위를 승인했습니다. 사이트는 GitHub Pages로 배포합니다. Status: the repository owner approved the public scope on 2026-10-18. The site is deployed with GitHub Pages.
국내 상장 ETF의 과거 종가로 월별 모멘텀 자산배분(S0)과 균등 배분(B1)을 비교한 연구를, 결과·파이프라인·검증 근거·한계와 함께 살펴볼 수 있게 만든 정적 사이트와 검증 저장소입니다.
미리 정한 기준으로는 S0가 B1보다 낫다는 가설이 지지되지 않았습니다. 판정에 쓴 수치와 기준은 public/data/research-summary.v1.json에 있으며, 사이트는 이 파일의 값만 보여 줍니다.
별도 사례로, 운용사 문서에서 ETF 사실을 추출한 AI 보조 실험의 평가 결과도 함께 보여 줍니다.
- 할 수 있는 일: 사이트를 빌드하고 실행하기, 공개 JSON의 스키마와 연구 수치의 일관성을 검사하기, synthetic 예제를 실행해 independent reference 계산과 비교하기, 공개 파일 목록과 secret을 감사하기.
- 할 수 없는 일: 과거 연구를 다시 실행하는 일입니다. 가격 자료, 실행 결과, 연구 구현은 비공개이며 재배포 권리도 확인하지 않았습니다(재현성).
Node.js 22 이상과 Python 3.12 이상이 필요합니다.
npm ci
npm run dev # http://localhost:5173
python -m venv .venv && . .venv/bin/activate
python -m pip install -r requirements-dev.txt
python demo/scripts/run_synthetic_demo.py --check
python -m pytest -qCI(verify.yml)는 아래 명령을 모두 실행합니다.
| Gate | 명령 | 확인하는 것 |
|---|---|---|
| 공개 안전성 | python scripts/audit_publication.py |
추적 파일·과거 커밋 경로가 allowlist에 있는지, secret·절대 경로·요청 ID·raw 가격 열이 없는지, commit identity |
| Data contract | python scripts/validate_public_data.py |
JSON 스키마, 구간·월 수, Sharpe 차이, V1~V3, grid 36칸, 국문·영문 숫자 일치 |
| Claim binding | python scripts/check_claim_bindings.py |
내보낸 숫자마다 source binding이 있는지, 화면·문서에 연구 숫자를 직접 적지 않았는지 |
| Synthetic 검증 | python demo/scripts/run_synthetic_demo.py --check, python -m pytest -q |
synthetic trace가 최신이고 deterministic한지, 회계·시점·실패 처리 검사 |
| 화면 | npm run typecheck, npm test |
구간·비용률·단계 선택, 언어 전환, 빈 상태, 자동 접근성 검사 |
| 빌드 산출물 | npm run build, python scripts/audit_publication.py --dist dist |
배포 파일 목록, source map 없음, 데이터 파일 일치 |
| 경로 | 내용 |
|---|---|
src/ |
JSON을 읽어 보여 주는 React·TypeScript 화면. 숫자는 계산하지 않음 |
public/data/ |
공개 데이터 6종. 연구 수치의 유일한 출처 |
schemas/ |
공개 데이터의 JSON Schema |
demo/ |
synthetic 예제 엔진, independent reference 계산, 고정 입력, 검사 |
scripts/ |
데이터 검증, claim binding 검사, 공개 감사 |
docs/ |
구조, 방법, 근거, 재현성, 한계, 기여 |
release/ |
공개 allowlist, 승인 체크리스트, 검증 보고서 |
allowlist의 모든 파일은 소유자의 공개 승인을 받았습니다(APPROVED_PUBLIC, 승인 체크리스트).
이 저장소는 아직 오픈 소스 라이선스를 부여하지 않았습니다. 번들에 포함되는 외부 패키지의 라이선스 고지는 빌드 시 third-party-licenses.md로 함께 배포됩니다.
A static site and verification repository for a study that compared a monthly momentum allocation (S0) with equal weighting (B1) on historical closes of Korean-listed ETFs. Under the predefined criteria, superiority was not supported. All figures come from public/data/research-summary.v1.json; the site displays only those values. A separate case shows the evaluation of an AI-assisted fact-extraction experiment on issuer documents. The site itself is bilingual (Korean first, English via the language switch).
You can build and run the site, validate the public JSON and the consistency of the research figures, run the synthetic demo against its independent reference, and audit the published file set. You cannot rerun the historical study: price data, run outputs and the research implementation are private, and redistribution rights are unconfirmed (reproducibility, in Korean).
Requires Node.js 22+ and Python 3.12+. Use the commands in the Korean section above; the CI workflow verify.yml runs every gate listed there.
Every file in the allowlist is approved for publication by the owner (APPROVED_PUBLIC). No open-source licence is granted yet. Notices for bundled third-party packages ship with the build as third-party-licenses.md.