inst_daily_flow.individual_net 5일 합산 추가. calc_inst_flow_signal에 개인
컨트래리언 로직: 개인 순매수=감점(과열), 개인이탈+큰손매집=가점, 개인매수+큰손매도=분산 감점.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
일요일 가중치·가격모델 학습이 lambda:coro()로 등록돼 APScheduler가 await 못해
실제로 안 돌던 버그(weight_config 05-24 이후 스케줄 갱신 0) → 명명 코루틴 함수
(_learn_weights_job/_learn_pricing_job)로 교체. learn_weights 수동검증 OK(표본10,683).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- send_briefing에 30분 쓰로틀(_last_briefing_sent) — n8n 중복/재시도로 /briefing/send가
분당 수십 회 호출돼 같은 브리핑이 3~4건+씩 발송되던 폭주를 원천 차단.
- 스케줄러 lambda:coro() → 명명 코루틴 함수(_daily_score_notify/_ta_intraday/_ta_close).
APScheduler가 lambda 반환 코루틴을 await 안 해 16:30 일간리포트·TA 장마감분석이
'coroutine never awaited'로 실행 안 되던 버그 수정.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- score-engine: run_cio_decisions에 보유종목(user_portfolio) 매도 결정안(등급악화/손절)
추가, 모든 결정안에 entry_price 기록. verify_decisions_job(매일18:10)이 7일 실측
수익·알파·정답여부 채점 → /decisions/accuracy (자동실행 게이트, "회사 결정이 실제 맞았나").
- dashboard-api: /api/data-health·accuracy·hot-validate·decisions·decisions-accuracy 프록시.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
/hot/validate: 키움 거래량급증(ka10023) 종목을 ETF/파생·초소형(작전)·영업적자·
분식의심(Beneish≥50)·음수점수로 걸러 '검증통과'만 추림. 평일 09:35 통과분 1회 보고.
현재 핫 30개 중 77%가 ETF/파생 노이즈로 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
장 시작 09:00 토큰 만료 시 여러 잡이 동시 재발급 → 키움 앱키당 토큰 1개
정책으로 무효 토큰을 붙들어 ka10001 전건 실패(ok:0) → 시세 stale(텔레그램
현재가 불일치). KiwoomToken.get()에 락+재확인 추가, _refresh 분리.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase 1 (now): clone main → /home/kyu/trading-prod, run `docker compose config`
with project name 'trading-prod' (separate from running trading-ai stack).
No containers are created or touched.
Phase 2 (later): uncomment Deploy stage to actually run `docker compose up -d`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Stages: checkout info, repo layout, compose syntax validation.
No build/deploy yet — used to verify Jenkins ↔ Gitea wiring before
adding real deployment stages.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
calculate_daily_scores가 today 하드코딩이라 과거 시점 score 재계산 불가, 결과적으로
가중치 학습이 18일치 빈약 표본(87건)으로만 돌아 10공식 중 7개 가중치=0,
백테스트 평균 -5.59%·승률 12.6%로 시스템이 거짓 패턴 학습 중이었음.
as_of: date 매개변수로 백필 모드 도입, look-ahead bias 차단:
- 헬퍼 7개(_load_insider/consensus/macro/inst_flow, calc_market_regime,
calc_trend_score, calc_momentum/amihud/beta) 시점 매개변수화
- weight_config는 config_date <= as_of 필터
- reliability/credibility 캐시는 백필 모드 비활성화
- DART 재무는 보고서 종류별 표준 공시일 추정으로 시점 필터
- analyst_consensus는 이력 미보존이라 백필 모드 제외
POST /score/backfill, GET /score/backfill/status 엔드포인트 추가.
96일치 백필 결과: GP/A(Novy-Marx 2013)가 진짜 알파 공식으로 학습됨,
강력매수 등급 평균 +2.96%·승률 66.7%·시장 알파 -0.31%로 거의 시장 따라잡음.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
배치 200건이 직렬 처리로 30분 초과해 매시 1회로 후퇴, 일 4,800건 처리에 그쳐
일 신규 5,500건 유입을 못 따라잡고 백로그 16K가 정체 상태.
asyncio.Semaphore(4)로 병렬화(OLLAMA_NUM_PARALLEL=4와 매칭) → 한 배치 6분 20초,
스케줄러를 minute="*/30"으로 복원 (max_instances=1로 중첩 방지).
일 처리 용량 9,600건 → 백로그 자연 소화.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
LLM 공통 코딩 실수 감축 가이드 4섹션 (Think Before Coding /
Simplicity First / Surgical Changes / Goal-Driven Execution) 원문 영문 보존.
기존 한국어 "Claude 행동 원칙"과 보완 관계.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
us-market/main.py:
1) /signal/latest 라우트 순서 버그 수정
- 기존: /signal/{kr_code} 가 먼저 선언되어 'latest'를 코드로 매칭 → 항상 []
- 수정: /signal/latest 를 path-param 라우트보다 위로 이동
2) pair beta 재계산이 stock_prices(7~10일치)에서 데이터 부족으로 32건 전부 skip
- stock_ohlcv(81일치) 우선 조회, 폴백으로 stock_prices 유지
- 결과: updated 0→32, 베타·상관 정상 산출
dashboard-api/index.html:
- 미증시 시그널 카드 필드명 수정 (signal_score → total_adj/sector_adj/pair_adj)
- 절대값 큰 순 정렬 + 섹터/페어 기여도 분해 표시
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>