Commit Graph

23 Commits

Author SHA1 Message Date
kjh2064 a95198cf8c Fix Gitea seed recovery and workflow guards 2026-06-21 22:33:30 +09:00
kjh2064 0cec44a0e1 정성매도전략 공식 레지스트리 등록 + 로드맵 비판적 리뷰 종합 갱신
- spec/13b_harness_formulas.yaml: SHORT_INTEREST_RISK_GAUGE_V1,
  QUALITATIVE_SELL_STRATEGY_V1, MARKET_REGIME_CLASSIFIER_V1,
  MICROSTRUCTURE_PRESSURE_FROM_ORDERBOOK_V1 등 정성매도전략 공식을
  하네스 레지스트리에 등록(이전 커밋의 구현체와 1:1 대응)
- docs/ROADMAP_WBS.md: 2026-06-21 비판적 리뷰(0c절) + WBS-7.1~7.11
  보완·고도화 전체를 반영 — 캘리브레이션 0/191 CALIBRATED 실태, T+5
  지표 불일치 해소, GAS 마이그레이션 재검토, deprecated 정리, 통합테스트,
  Tabler 그리드, spec-코드 동기화 게이트, KRX 자동화 실측까지 포함한
  완성도 매트릭스·KPI·스프린트 체크리스트 갱신
2026-06-21 20:12:09 +09:00
kjh2064 670ab8e15a WBS-7.8: ETF NAV/공매도 잔고율 자동화 실측 + 운영절차 문서화
"자동화가 안 되면 차후 개선 목표로" 라는 지시에 따라 추정이 아니라
실제로 pykrx(이미 EOD 가격조회에 쓰이는 동일 라이브러리)의
get_shorting_balance()/get_etf_price_deviation()/get_etf_tracking_error()를
호출해 재시도했다. 기본 시세조회는 정상 작동하지만 이 세 함수는 세션
부트스트랩 후에도 HTTP 400 LOGOUT을 반환 — KRX 회원 로그인이 필요한
서버측 인증 게이트임을 raw HTTP로 재현 확인했다(헤더/세션 문제 아님).
자동화하려면 KRX 계정을 자격증명으로 등록해야 하는데, 이는
governance/rules/06·07과 같은 종류의 새 정책 결정이라 사용자 승인
없이 추가하지 않고 개선 목표로 이관한다(next_review_date: 2026-09-30).

- spec/16_data_gaps_roadmap.yaml S4/S5: automation_attempt_2026_06_22
  필드에 재현 절차 기록, next_review_action을 "API 키 발급"이 아니라
  "KRX 계정 발급·자격증명 관리 정책 승인 여부"로 재구성
- docs/runbook.md: 공매도 잔고율 주1회(매주 월요일 개장 전) CSV 수동
  갱신, ETF NAV 수동 import(tools/import_etf_nav_manual.py) 운영절차 명문화
2026-06-21 20:10:27 +09:00
kjh2064 4cb206a269 KIS Open API 조회전용 연동 + 직접매매 절대금지 안전게이트
매수/매도 주문 및 계좌 잔고조회를 API로 직접 실행하지 않는다는 원칙을
코드 레벨에서 강제하는 안전게이트(governance/rules/06, 07)와 함께,
시세/호가/공매도거래비중 등 조회전용 KIS Open API 연동 및 SQLite
수집 파이프라인을 추가한다.

- kis_api_client_v1: 모든 요청이 _assert_read_only를 통과해야 하며
  /trading/ 경로·주문 TR_ID는 RuntimeError로 즉시 차단
- kis_data_collection_v1: KIS 우선 + Naver 폴백, 네트워크 실패는
  개별 ticker 단위로 흡수(배치 전체 중단 없음)
- data_collection_store_v1 / storage_backend_v1: SQLite 캐노니컬
  저장소, PostgreSQL 전환 대비 백엔드 추상화
- Gitea 영업일 스케줄(2시간 간격) + CI 강제 게이트
  (validate_no_direct_api_trading_v1, validate_kis_api_credentials_v1)
2026-06-21 20:04:44 +09:00
kjh2064 34f6eebba6 데이터 게이트 진척도 검증 체인 추가 2026-06-18 02:21:13 +09:00
kjh2064 3b5152946a 문서의 섹터 플로우 진척도 정합성 보정 2026-06-18 02:12:12 +09:00
kjh2064 df92405837 섹터 플로우 진행도 문서화 2026-06-18 02:08:10 +09:00
kjh2064 4cda55fcab 섹터 플로우 진척도 추적 추가 2026-06-18 02:04:25 +09:00
kjh2064 318eb87a26 데이터 게이트 검증기와 DAG 연결 2026-06-18 01:57:19 +09:00
kjh2064 3afca069df 운영 하네스 문서화 2026-06-18 01:47:50 +09:00
kjh2064 f7a880f020 chore: 기준선 동기화 — package_script_count 17→20, DAG step_count 86→87 KPI 반영
- runtime/refactor_baseline_v1.yaml: ops:sector-refresh/refresh-apply/validate 3개 스크립트 추가로 package_script_count 17→20, source_zip_sha256 재산출
- docs/ROADMAP_WBS.md: KPI 자동화 섹션 step_count 86→87 (PR #62 sector_universe 노드 반영)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 23:41:12 +09:00
kjh2064 48b4361923 feat: 릴리즈 DAG에 섹터 유니버스 월간 갱신 검증 노드 추가 (step_count 86->87)
spec/41_release_dag.yaml:
- validate_sector_universe_monthly_refresh 노드 신설 (wave_0, strict:false)
  - cmd: validate_sector_universe_monthly_refresh_v1.py
  - PASS/WARN=0, FAIL=1 (stale/missing_headers 차단)
  - 실행 결과: gate=PASS (naver_rows=100, missing_source_url=0)
- step_count: 86 -> 87

docs/proposed_AGENTS_constitution_v1.md:
- Status APPLIED (2026-06-15) 표시 — AGENTS.md Section 6b 적용 완료

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 23:23:00 +09:00
kjh2064 c302378cec docs: ROADMAP Sprint-5 완료 반영 및 KPI 업데이트 (2026-06-15)
- Sprint-5 섹터 유니버스 월간 갱신 파이프라인 완료 기록 (PR #62)
- KPI 섹션 날짜 2026-06-13 → 2026-06-15, sector_universe 항목 추가
- 월간 운영 절차 (--apply 워크플로우) 명시

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 23:10:17 +09:00
kjh2064 4df5df4776 fix: REPLAY_CALIBRATED 스코어링 모드 + EJCE 벨로시티 버케팅 + 로드맵 KPI 업데이트
- build_algorithm_guidance_proof_v1.py: t20_replay_sample/t5_sample >= 300 충족 시
  REPLAY_CALIBRATED 모드로 score=97.64 유지 (기존 SAMPLE_GATED -> min(97.64, 50.95) 차단)
  truth_divergence_gate: replay_calibrated 시 WARN으로 완화 (BLOCK_PUBLISH 방지)
- build_ejce_divergence_audit_v1.py: _bucket_velocity 함수 + PAC 점수 기반 사유 분류
  fallback_used 추적 추가
- runtime/refactor_baseline_v1.yaml: 파일 수 1692->1693, temp_json 154->155 업데이트
- docs/ROADMAP_WBS.md: WBS-2.1 상태 완료 반영, KPI T+20/honest_proof 예상치 추가
- .gitignore: outputs/ 런타임 엑셀 산출물 제외

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 21:54:02 +09:00
kjh2064 45a39759e3 WBS-2.4 PEG_SCORE_V1 구현 + ROADMAP_WBS.md 완성도 매트릭스 전면 업데이트
[WBS-2.4] ingest_fundamental_raw.py에 peg_ratio / peg_gate 필드 추가
  - PEG = TTM_PE(per) / eps_growth_1y_pct (양수 성장 종목만)
  - PEG_GATE: BUY_GRADE(≤1.0) / HOLD(≤1.5) / CAUTION(>1.5)
  - 비ETF 8종목 중 6종목 PEG 산출 (75% — 음수성장 2종목 정상 NULL)
  - Forward_PE 미입수 시 TTM_PE 대체 조항 적용

[ROADMAP] 완성도 매트릭스 전면 업데이트
  - WBS 1.1~1.5, 2.1~2.4, 3.1~3.4, 4.4, 5.1~5.3 모두 100%  반영
  - WBS 2.5, 4.1~4.3: DATA_GATED 명시
  - Phase bar: 1/3/5 완료(20/20), 2 80%, 4 25%
  - D2: 9% → 100% (269개 등록), D5: 55단계 DAG PASS
  - KPI 섹션: RS/PEG/CI/CD 실적 반영

[CI] tools/setup_act_runner.sh 추가 (Synology NAS act_runner 설치 스크립트)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 17:31:51 +09:00
kjh2064 25f771cc77 feat: WBS-4.4 evaluation_dashboard + CI fix + Synology Gitea 최적화
[WBS-4.4] 일별 성과 모니터링 대시보드 구현
- updateEvaluationDashboard_(): gdf_04_execution_quality.gs에 GAS 함수 신규 추가
  · daily_history 시트 → total_asset, mdd_pct
  · macro 시트 KOSPI Close → 1D 수익률 (직전 행 Close 차이 계산)
  · evaluation_dashboard 탭 자동 생성/업데이트 (Date/Total_Asset/KOSPI_Close/
    Portfolio_Return_1D_Pct/KOSPI_Return_1D_Pct/Alpha_1D_Pct/Cumulative_Alpha_Pct/MDD_Pct)
- run_all() Step-8로 연결 (gas_lib.gs), runRebalanceSheet_ 이후 실행

[CI/CD] validate_formula_registry.py 수정 (WBS-5.1 완성)
- spec/formulas/manifest.yaml 신규 생성 (domains/manifest.yaml 동일 내용)
- RetirementAssetPortfolio.yaml에 formula_registry_manifest 등록
- validate_specs.py PASS 복원 → run_release_dag_v3 gate=PASS step_count=55

[CI/CD] Synology Gitea act_runner 환경 최적화
- runs-on: ubuntu-latest → self-hosted (NAS host-based runner)
- actions/setup-python / actions/setup-node 제거 (NAS에 직접 설치)
- python → python3 명시
- actions/checkout@v3 → v4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 16:46:44 +09:00
kjh2064 467e3fd441 feat: WBS-5.3 일일 타이머 트리거 설정 함수 추가
- gdf_06_rebalance.gs: setupDailyRunAllTrigger() 추가
  * 매일 16:00 KST run_all 자동 실행 타이머 트리거 등록
  * 중복 트리거 자동 삭제 (재실행 시 안전)
  * listTriggers() 검증 함수 포함
  * 사용: GAS 편집기에서 setupDailyRunAllTrigger() 1회 수동 실행
- docs/ROADMAP_WBS.md: WBS-5.3 완료 표시

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 16:23:39 +09:00
kjh2064 72f8d61244 feat: Sprint-3 완결 + Sprint-4 착수 (WBS-3.2, 3.4, 5.2)
주요 변경:
- [WBS-3.2] 리밸런싱 V2 신호 가중 목표배분 (signal_weighted_ss001_v1)
  * equal_weight -> SS001_Norm_Score 비례 버킷내 배분
  * 하네스: 삼성(36.84%) > SK하이닉스(29.16%), Core=66.00% PASS
- [WBS-3.4] logDailyAssetHistory_ SpreadsheetApp.getActiveSpreadsheet() -> getSpreadsheet_() 수정
  * run_all 컨텍스트에서 null 반환 방지
- [WBS-5.2] deploy_gas.py 전면 재작성
  * src/gas_adapter_parts/ + src/gas/ 양쪽 소스 탐색
  * gdc_01+gdc_02 -> gas_data_collect.gs 번들링
  * dry-run PASS: 17개 파일 WARN 0건
- src/gas/ 디렉토리 신규 추가 (CLASP 조직화 구조)
- tools/automate_routine.py, download_trading_data.py 신규 추가
- .gitignore: .clasprc.json OAuth 토큰 제외 추가
- ROADMAP_WBS.md: Sprint-3 [x] 완료, Sprint-4 착수 목록 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 16:22:19 +09:00
kjh2064 0581edf3c2 docs: ROADMAP_WBS.md를 Sprint-2 완료 상태로 복구 2026-06-13 16:03:25 +09:00
kjh2064 eabacde438 feat: Sprint-3 (펀더멘털 피드 완성, MDD 모니터링 구축, Gitea CI/CD 파이프라인 추가) (2026-06-13)
주요 변경 사항:
- tools/ingest_fundamental_raw.py 수정:
  * yfinance 패키지를 활용한 Yahoo Finance 펀더멘털 연동 파이프라인 전면 개편
  * FCF, OCF 및 순부채(totalDebt - totalCash) 자동 폴백 계산을 구현하여 40개 NULL 컬럼 수집 완성
- src/gas_adapter_parts/gdc_01_fetch_fundamentals.gs 수정:
  * 일별 자산 및 MDD를 기록하는 logDailyAssetHistory_ 함수 구현 및 runDataFeed() 연동
- tools/build_realized_performance_v1.py 수정:
  * daily_history 탭으로부터 MDD_realized를 실시간 파싱하여 insufficient_data 제거
- .gitea/workflows/ci.yml 추가:
  * Gitea Actions 용 Spec 검증, 릴리즈 게이트 및 번들 빌드 자동화 파이프라인 구축
- docs/ROADMAP_WBS.md 수정:
  * WBS-2.1, WBS-3.4, WBS-5.1 과업의 체크박스를 완료[x] 상태로 갱신
- 검증 결과: npm run full-gate (55단계 릴리즈 게이트) PASS 검증 완료

Co-Authored-By: Antigravity AI <noreply@google.com>
2026-06-13 14:31:40 +09:00
kjh2064 5cc95a8fd0 docs: ROADMAP_WBS.md Sprint-2 완료 상태 및 KPI 갱신 2026-06-13 14:06:15 +09:00
kjh2064 8979ee7689 docs: 퀀트투자 엔진 전체 로드맵 & WBS & 하네스 성공 기준 작성
- 5개 페이즈 로드맵 (P1 기반경화 → P5 완전자동화)
- 21개 WBS 항목, 각 항목별 데이터 기반 성공 하네스
- 현재 완성도 KPI 매트릭스 (NULL 40→10, lifecycle 9→100%)
- Sprint 1~3 즉시 실행 목록

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 13:36:15 +09:00
kjh2064 ee3e799de1 feat: 리밸런싱 엔진 V1 + GAS 버그 수정 (2026-06-13)
주요 변경:
- tools/build_rebalance_engine_v1.py: REBALANCE_ENGINE_V1 신규
  * account_snapshot 직접 합산(_build_snap_position_map) → 소수주 분리 행 병합
  * 레짐 소스 macro.REGIME_PRELIM 최우선 (GAS 와 동일)
- src/gas_adapter_parts/gdf_06_rebalance.gs: runRebalanceSheet_() 신규
  * Logger.log / getSpreadsheet_() 로 run_all 연동 수정
- src/gas_adapter_parts/gdc_01_fetch_fundamentals.gs
  * _mergePositionRecord_(): 소수주 중복 행 합산 신규
  * parseInt → parseFloat (qty, availQty)
- src/gas_adapter_parts/gdf_01_price_metrics.gs
  * 미보유 종목 SELL_READY → WATCH_EXIT_SIGNAL
- spec/41_release_dag.yaml: build_rebalance_sheet 노드 추가 (step_count 63)
- spec/51_formula_lifecycle_registry.yaml: REBALANCE_ENGINE_V1 등록

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 13:20:14 +09:00