| # | 항목 | 완료일 | 메모 |
| 1 | 서버 엔진 버전 확인 | 2026-07-24 | VPS 직접 실측: git 소스·실행 컨테이너 md5 완전 일치(v1.2), 재현 CAGR 29.81%/MDD -56.1%/32,283x. 「코드목록_v1」의 "서버 v1.1" 기록은 낡은 정보였음 |
| 2 | /chart 세후 곡선 교체 | 2026-07-24 | realistic_backtest.py v2.4 편입(레포에 없던 파일 — 고객 로컬 보관본 확보), 세금버퍼(12월 이관→5월납부)+비상버퍼 적용. 세후 CAGR 21.6%/MDD -71.0%/2,368x |
| 3 | /chart 서버 이식 확인 | 2026-07-24 | 이미 완료 상태였음(문서 기록이 낡았음). HTTP 200 확인 |
| 4 | engine.py v1.2·차트 파일 GitHub 백업 | 2026-07-24 | 그동안 VPS 로컬에만 존재, 커밋된 적 없었음(위험) → 커밋 46a625d로 해소 |
| 5 | /chart 3계좌 표시 | 2026-07-24 | 세후 모드 상단 본계좌·총자산 2줄 + 중단 세금버퍼·비상버퍼 패널 신설. 라이브 반영 완료(브라우저 시각 확인은 안 함) |
| 6 | 텔레그램 토큰 재발급 | 2026-07-24 | 완료 (고객 확인) |
| 7 | _NDX_conflict_*.csv 누적 해소 | 2026-07-24 | 2024-10-22 건 매일 무해 판정되며 파일만 쌓이던 문제. run_update.py에 halt=False 확정 직후 자동 정리 로직 추가. 기존 11개 삭제 + 재발 방지 확인 |
| 8 | 구글드라이브 동기화 파이프라인 구축 | 2026-07-24 | VPS에 rclone 설정 + Claude 전용 SSH 키(~/.ssh/argo_vps_automation) 등록. git pull && rclone copy docs/ gdrive:...로 실제 바이트 전송(API 재입력 방식은 한글 손상 실증돼 폐기) |
| 9 | 카드 페이지 네비게이션 버튼 | 2026-07-24 | /chart, /portfolio 이동 버튼 추가 — 신호카드가 홈 역할 |
| 10 | 내 포트폴리오 평가액 페이지(/portfolio) | 2026-07-24 | domain/portfolio.py 신규 — portfolio.json(수동입력) + 기존 1계층 CSV 최신가로 평가액 계산. 도커 재빌드·배포 완료 |
| 11 | portfolio_log.py cron 등록 | 2026-07-24 | crontab의 기존 체인(argo_update_all.py 뒤)에 추가 — 최신 가격 반영 후 실행되게 순서 배치. 수동 실행 테스트 정상(portfolio.json 미설정 시 정상 스킵) |
| 12 | 진짜 2021-23 HY OAS 확보 | 2026-07-24 | FRED가 2026-04부터 ICE 지수 전체를 3년 롤링으로 정책 제한(curl 3종·고객 브라우저 다운로드 모두 동일 확인) — 우회로 제한 전(2025-11-04) 웨이백머신 스냅샷에서 1996-12-31~2025-11-03 전체이력 확보, 공백 601거래일 채움. 경계값 3개 독립소스 일치. 2022-03-14 실측 4.16%(구 프록시 6.28%)는 gate_v1.py 문서화된 편향보정 예상범위(3.28~4.78%)에 부합, 문턱 6.5% 기준 프록시·실측 모두 미달이라 게이트 조건B 판정 불변. 고객에게 완성 파일 전달 완료 |
| 13 | /chart — ARGO모드/차트모드 인터랙티브 도구 신설 | 2026-07-25 | 신규 domain/series_catalog.py(NDX/TQQQ/QLD+HY OAS·VIX·T10Y3M·T10Y2Y·TEDRATE·NFCI 카탈로그) + web/main.py에 /api/series/catalog·/api/series/{id} 라우트 + chart.html 전면 재작성(ARGO모드=기존 렌더러 이식, 차트모드=지표추가·기간입력·다중축/%정규화·차트추가·기간동기화체크박스·드래그재정렬 신규). VPS 배포(docker compose up -d --build) 완료, API 전부 200 확인. 실브라우저 조작 검증은 미실시(항목#9로 별도 추적) |
| 14 | 웹에 액션리스트 확인 메뉴 신설(/actions) | 2026-07-25 | 신규 domain/mdrender.py(이 레포 문서 문법 전용 최소 마크다운→HTML 렌더러, 외부 라이브러리 미추가) + /actions 라우트가 이 문서(ARGO_PLN_Action-Items_v01_REL.md)를 직접 렌더링. docker-compose.yml에 docs/를 읽기전용 볼륨 마운트 추가 — 이 문서를 고치고 git pull만 하면 재빌드 없이 즉시 반영됨. 카드·포트폴리오 페이지 네비게이션에 "✅ 잔여 작업" 링크 추가. FastAPI TestClient로 로컬 라우트 렌더링 검증(표 3개 정상 렌더) + VPS 배포 후 https://starlog.work/actions 200·표 렌더 확인. 실브라우저 시각 확인(모바일 레이아웃 등)은 미실시 |
| 15 | 데이터 관리 UI(/data) — 조회·다운로드·티커추가 | 2026-07-25 | 신규 domain/data_registry.py — scripts/argo_update_all.py의 TIER1/TIER2 레지스트리·status_one()을 재구현 없이 import해서 재사용. 조회: 1계층/2계층/참고파일/웹추가 티커 현황표(행수·기간·용량) + 최근 자동갱신 성공여부. 다운로드: 화이트리스트 검증 후 CSV 그대로 제공(경로탐색 시도 404로 실측 차단 확인). 티커추가: data/web_config/extra_tickers.json에 등록만 하고 실제 수신은 야간 cron부터(웹요청 중 실시간 fdr 호출 안 함, 기존 아키텍처 원칙 유지) — scripts/argo_update_all.py가 이 파일을 자동 병합하도록 확장. Dockerfile에 scripts/ 추가 COPY, docker-compose.yml에 data/web_config만 별도 rw 마운트(나머지 data/는 :ro 유지). 실서버에서 티커 등록→cron측 --status에 반영→해제까지 전 과정 curl로 왕복 검증 완료 |
| 16 | 병행검증 — 이중계산 대조 + 이상치체크 자동화, 신뢰 개시 확정 | 2026-07-25 | 신규 scripts/parallel_verify.py — core/engine.py와 실제 운용경로 core/engine_lab.py(V12_KW)를 동일 데이터로 매일 전 구간(1985~오늘) 대조 + 오늘 수익률 이상치체크. 정본 두 파일 모두 무수정(import만). VPS 첫 실행: 10,281거래일 전부 일치. crontab 등록(verify_source.py 다음 순서), adapters/data_source.get_parallel_status() 신설해 notify.py 텔레그램·card.html 경고배너에 합류. 고객이 "병행검증 개시로 보자" 확정(2026-07-25) — 이제 이 상시 자동대조를 손계산 없이 신뢰하는 단계로 전환 |
| 17 | T10Y3M·T10Y2Y·NFCI 야간 자동갱신 편입 | 2026-07-25 | 실측(fdr FRED 조회, 3년 롤링 제한 없음 확인) 후 argo_update_all.py TIER1에 편입. 기존 파일 포맷(observation_date/시리즈명 컬럼)을 HY_OAS_live.csv와 동일한 (DATE, Close) 규격으로 통일(원본은 *.csv.pre_fdr_format 보존, 재포맷 직후 행수·값·인덱스 완전일치 자체검증 통과). 드라이런에서 버그 발견: 장단기금리차·NFCI는 역전/완화 국면에 음수가 정상값인데(실측: 음수일 T10Y3M 1229/11141, T10Y2Y 2049/12532, NFCI 1892/2429) 기존 merge_update의 "0 이하 종가 발견" 가격류 전제 검증에 걸려 전량 실패 — allow_negative 파라미터를 추가해 해결(기본값 False라 기존 16개 가격류 티커는 영향 없음). VPS 드라이런→실행 순으로 검증 후 반영: T10Y3M 신규+1·보충+483, T10Y2Y 신규+1·보충+507, NFCI 변동없음(최신). TEDRATE는 제외(FRED 소스가 2022-01-21 이후 발행 중단, 자동화 실익 없음 — 정적 유지). domain/data_registry.py의 REFERENCE_FILES에서 TIER1과 중복 등재됐던 _VIX.csv(기존 버그)와 이번에 옮긴 3개 파일 정리 — /data 조회 화면 중복 표시 해소. 도커 재빌드 배포, /data·/api/series/T10Y3M 라이브 확인 완료 |
| 18 | 사전등재 후보목록(인수인계 §7-1) 현황 확인 | 2026-07-25 | 고객이 ARGO_인수인계_v4.md 첨부. 실측 결과 §7-1은 이 문서에 없음 — 목차상 7개 절뿐이고 §7은 "검증 좌표(숫자 카드)"라 gate_v1.py 주석의 참조 위치가 실제로 존재하지 않음(구버전 절 번호를 가리키는 낡은 주석으로 추정). 교차확인 위해 로컬 ARGO_REP_Dev-Whitepaper_v01_REL.md §7 "미완의 지도"를 봤더니 "새 정보 트랙" 후보가 한 줄뿐: "VIX(1990~)·GSPC 교차시장". 즉 사전등재 후보는 큰 목록이 아니라 이 한 줄이 전부 — 이미 #6 서브트랙(VIX)으로 추적 중이던 내용과 일치, GSPC 교차시장만 누락돼 있어 #6 메모에 추가. 더 찾을 목록 없음, 조사 종결 |
| 20 | 유명 전략 카나리아 자산 운용법 벤치마크 (Top 5) | 2026-07-26 | 신규 ARGO_REP_Canary-Strategies-Benchmark_v01_DFT.md — GEM(Antonacci)·VAA·DAA·BAA·HAA(Keller·Keuning 계보) 5개 전략의 카나리아 자산·모멘텀 공식·방어전환 규칙을 웹 조사(SSRN·allocateSmartly·PortfolioDB·CXO Advisory·TuringTrader)로 정리, 출처 전부 병기. ARGO와의 구조 비교(§8) 포함 — ARGO는 별도 카나리아 없이 투자대상(NDX) 자신의 낙폭이 방아쇠라는 점이 GEM과 가장 유사, 판정 주기는 일간으로 5개 전략(전부 월간)보다 빠름. 순수 참고자료, 규칙 변경 제안 없음(DFT 상태) |
| 23 | 벤치마크 15종 신호체계 — 실제 데이터 시계열 차트 + 웹 공개 | 2026-07-26 | fetch_prices.py(신규)로 fdr 28개 티커+FRED:UNRATE 실측 수신(1993~2026, 티커별 상장일부터) → build_signal_history.py(신규)로 15종 전부 실제 데이터 기반 위험노출(%) 월별 시계열 산출 → signal_history.json. 과정에서 실버그 발견: RAA/LAA는 공격/방어 유니버스에 겹치는 티커가 많아(IEF·TLT·GLD 공통) 전체 공격비중 합으로는 노출도가 항상 100%로 나와 신호가 안 보임 — 오펜스전용 차이 티커(QQQ)만으로 재계산해 해결, 수정 후 2008 GFC·2020 코로나 저점에서 정확히 0%(완전방어)로 확인. signal_comparison.html에 Plotly 시계열 차트(범례클릭 토글·기간선택버튼·레인지슬라이더줌·다크/라이트 테마 반응형) + "동시 방어전환 전략 수" 2차 차트(2008-11 GFC: 활성 7개 중 7개 방어, 2020-03 코로나: 15개 중 11개 방어 — 실제 위기와 패턴 일치) 추가. /benchmark/signals로 웹 공개(Dockerfile에 benchmark_strategies/ 추가 COPY, 카드·포트폴리오·데이터관리·액션리스트 4개 페이지 네비게이션에 링크 추가). 원 가격 CSV는 레포 전체 *.csv gitignore 규칙대로 미추적(재생성 가능) |
| 22 | easyinvesting.app 동적배분 15종 신호체계 정리 + Python 구현 | 2026-07-26 | 요청 시 "17개"였으나 사이트가 React SPA라 정적 HTML로는 목록이 안 보여 JS 번들에서 실제 호출 API(/api/dynamic/list)를 찾아 직접 조회 — 실측 결과 15개(excelMissing:false, 누락 없음 확인). 신규 ARGO_REP_EasyInvesting-Dynamic-Strategies_v01_DFT.md에 15종(GEM·변형/가속/종합 듀얼모멘텀·Novell채권·VAA·DAA·PAA·BAA 공격/중도형·HAA·NLX HAA·GTAA·RAA·LAA) 전부 원 논문·2차자료와 대조해 정리, 사이트 구현과 학술 원안의 차이(모멘텀공식·카나리아 구성)·명칭 혼동(RAA≠Alpha Architect RAA) 명시. 신규 benchmark_strategies/ 폴더에 15종 전부 Python 구현(registry.py로 key 조회, 표준 인터페이스 generate_weights(prices)->weights_df) — 합성 20년치 데이터로 15/15 실행 성공(비중합=1, NaN·음수 없음) 확인, 과정에서 idxmax 전체-NaN 행 크래시·BAA 중복컬럼·PAA pd.NA 캐스팅 등 실버그 3종 발견·수정. 실제 시장데이터 백테스트 검증은 미실시(항목#21로 별도 추적). ARGO 신호발생기 무수정, 규칙 변경 제안 없음 |
| 25 | /benchmark/signals 개선 — ARGO 자체 라인 + 범례 하단 이동 + 게이트 상태패널 | 2026-07-26 | 변경 3파일: ① domain/chart.py — build_cache()에 offense_pct(TQQQ+QLD 비중%) 추가(기존 tw 컬럼 노출만, 재구현 아님). ② build_signal_history.py — chart_cache.json의 offense_pct를 월말 리샘플해 out["argo"]로 추가(engine 재실행 없이 야간 산출물 재사용, --chart-cache 옵션 신설). ③ signal_comparison.html — ARGO 16번째 라인(--good, 굵게) + 범례 차트 하단 이동 + 신규 섹션 "ARGO 자체 — 게이트 기준 상태구간(일별)"(/api/chart 그대로 fetch, chart.html drawPanel() 패턴 이식, 재판정 없음). VPS 실측검증: build_chart_data.py 재실행 → offense_pct 10026행·0~100 범위 확인 / build_signal_history.py 임시경로 드라이런 → 실경로, argo 478개월(1986-10~2026-07, 15종 중 최장) / 위기구간 교차검증 — 닷컴·GFC·2022 전부 0%(완전방어), 2020-03 월말 100%는 실제 2020-03-26 복귀(state 6, 일별 원본 대조)로 버그 아님 확인(월말 스냅샷 한계는 신규 일별 패널이 보완) / docker compose up -d --build / 라이브 4개 엔드포인트 200 + /api/benchmark/signal-history에 argo 키·/api/chart에 offense_pct 존재 확인 / 서빙된 HTML의 신규 DOM id·함수 9종 존재 + 인라인 JS 15,938자 node -e 파싱 통과. 야간 파이프라인은 build_chart_data.py가 build_signal_history.py보다 먼저 돌므로 매일 자동 최신화됨(순서 확인). 실브라우저 육안 확인은 항목#26으로 분리 |
| 2 (위임) | 커스텀 스킬 — 위임 라우팅(값싼 서브에이전트로 잡일 분리) | 2026-07-27 | 설계·계획·구현·검증 전 과정 완료. 정본 문서 2종: ARGO_DES_Delegation-Routing_v01_DFT.md(설계·근거·기각대안·한계), ARGO_PLN_Delegation-Routing-Impl_v01_DFT.md(구현계획). 산출물 5개: .claude/agents/argo-lookup.md(haiku, Read,Grep,Glob, memory 없음)·argo-livecheck.md(sonnet, Bash,Read+disallowedTools: Write,Edit)·argo-gather.md(sonnet, memory: project), .claude/skills/argo-delegate/SKILL.md, CLAUDE.md §3-7번. 전부 effort: low(미지정 시 메인의 high effort를 물려받아 값싼 모델을 비싸게 돌림). 방향 검증(웹조사): 약한 오케스트레이터는 정확도 80%→57% 붕괴(arXiv 2601.11327)라 메인 Opus 유지가 옳음. 기대 절감은 동일 품질에 30% 안팎(LLMRouterBench 31.7%+실사용 보고 ~30%) — 절반 절감은 없는 숫자이고, 잘못하면 마이너스(상업용 라우터 −24.7%)라 판정식 기본값을 "애매하면 메인이 직접"으로 박음. 위임은 총 토큰을 늘린다(최대 7배 보고) — 절약되는 건 메인 컨텍스트 몫과 비싼 토큰 비중. CLAUDE_CODE_SUBAGENT_MODEL은 호출시 지정을 덮어써 3계층을 무너뜨리므로 미사용 확정. 리뷰 2회 통과(통합+범위한정 재리뷰): 사양 준수 ✅, 지적 4건 전건 해소(790c256) — livecheck 자기모순(파일 쓰지 마라 vs /tmp 인코딩 예시), gate_v1.py→core/gate_v1.py, build_cache 126행→117행(실측), §9 근거 기록. 실측 검증 4건 전부 통과(2026-07-27, 스펙 §8-1): ① 반환 형식 3종 정확 — 템플릿 수정 불필요 ② memory가 tools 제한을 덮는다(§9 미확인 항목 종결) — memory 켠 argo-gather만 Write/Edit 부착, 나머지 둘은 미부착. argo-lookup에서 memory를 포기한 결정이 옳았음이 증명됨 ③ argo-lookup haiku가 offense_pct 위치 3곳 오차 0 ④ argo-livecheck 라이브 3항목 값이 독립 실측과 일치. 부수 관찰: argo-gather가 WebFetch 가공 한계를 스스로 표기 — "없는 내용을 채우지 마라" 규율 작동 확인. 환경 제약(첫 1회만): .claude/agents/가 세션 시작 전에 없으면 그 세션에서 로드 안 됨 → /exit+claude --continue로 대화 보존한 채 재시작 필요. 스킬 본문·§9에 기록 |
| 21 | 벤치마크 전략 백테스트 하네스 + 20종 실계좌 성과 비교 | 2026-07-27 | 1단계(세전 월별): benchmark_strategies/backtest.py 신설 — 월말 비중을 CAGR·MDD로 환산. 룩어헤드 차단(w_t를 다음 달 수익률에 적용)을 --selfcheck로 검증. 타당성 대조: ADM 8.66%/-24.3% vs SPY 단순보유 8.74%/-52.2%(동일 396개월 — 수익 같고 낙폭 절반, 전술전략이 보여야 할 형태). 2단계(고객 지시로 확장, 실계좌 회계): MDD 일별 측정 · 양도세 22%(기본공제 0원) · 거래비용·슬리피지 ARGO 동일 · 전략당 py 파일 하나 · 총 20종(벤치마크15 + ARGO 3종 + VR·TQ공격형) + 참고 2종(TQQQ/QLD B&H). 정본 무수정 원칙 준수: scripts/realistic_backtest.py(준정본)를 복사해 benchmark_strategies/accounting.py로 티커 일반화(회계 골격이 TQQQ/QLD에 하드코딩돼 있었음 — weights.columns에서 자산 유도로 변경). 원본과 출력 동일성 증명: 5개 전략의 CAGR·MDD·배수·거래횟수가 소수점 10자리까지 일치. 비교군 ARGO_LX1(QQQ)·ARGO_LX1S(SPY) 신설 — ARGO 신호·배분 그대로 두고 레버리지만 1배로 내려 무차입 15종과 같은 조건에서 신호 자체를 잼. 결과: LX1이 15종 전부를 CAGR·MDD 양쪽에서 이김(8.31%/-24.96%), LX1S는 13/15 승(5.85%/-26.81%) — 레버리지가 아니라 신호가 이긴 것. 세후로 보니 15종 중 6개가 마이너스 (월간 다자산 리밸런싱 + 양도세 22% + 공제 0 + 거래비용). 실행 중 구간 왜곡 1건 발견·수정: 전 전략을 ARGO 전체구간(1986~)으로 돌려 벤치마크가 상장 전 수십 년을 현금으로 놀았고 CAGR이 희석됨(GEM 6.9%→2.85%) → 전략별 자연 시작일 + 비교군 동일구간 절단으로 해결. 웹 공개: /benchmark/performance + /api/benchmark/performance. domain/chart.py의 GATES를 재사용해 전구간+게이트 10구간으로 분할 (panels.py) — 전략당 한 번만 돌린 일별 자산곡선을 잘라 읽으므로 세금·버퍼 이월이 끊기지 않음. 야간 파이프라인(nightly_update.sh) 편입 완료. 실브라우저 확인은 항목#27로 분리 |
| 24 | 벤치마크 전략용 티커 22종+실업률 야간 자동갱신 편입 + 신호 시계열 자동 재계산 | 2026-07-26 | 고객 지시: "전략에 사용했던 티커들은 데이터 관리에도 등록해서 항상 업데이트해서 유지" → 이어서 "추가해"(cron 자동화까지). scripts/argo_update_all.py TIER1에 22종(EFA·SHY·TIP·LQD·HYG·BNDX·EMB·SCZ·REM·IEFA·IEMG·AGG·IWM·VNQ·PDBC·VGK·EWJ·BND·VEA·VWO·VBR·VTV, SPY·BIL·IEF·TLT·GLD·QQQ는 이미 있었음) + FRED:UNRATE 추가, VPS 드라이런→실행 검증(23/23 성공). 아키텍처 전환: 기존엔 signal_history.json을 signal_comparison.html에 정적으로 구워 넣어서 자동화가 사실상 불가능했음 — GET /api/benchmark/signal-history 신설(/api/chart·chart_cache.json과 동일 패턴, data/benchmark_signal_history.json을 그대로 서빙)하고 페이지가 매 로드마다 fetch하도록 전환, 정적 재배포·컨테이너 재빌드 불필요하게 만듦. crontab에 긴 세미콜론 체인을 직접 넣다가 "command too long"으로 install 실패 → scripts/nightly_update.sh(신규, git 추적)로 파이프라인을 분리하고 crontab은 이 스크립트 한 줄만 호출(set -e 의도적으로 안 씀 — 개별 단계 실패가 파이프라인 전체를 막으면 안 됨). VPS 1회 시딩 후 /api/benchmark/signal-history·/benchmark/signals 라이브 확인 완료. 매일 밤 22:00 자동 최신화 완성 | 2026-07-26 |