전략 히스토리 — 무엇을 시도했고, 무엇이 남았나
2026-09-09 정리. 이 문서 하나가 전체 이력이다. 흩어져 있던 원장·트랙문서·검수 페이지를 전략 계보로 묶었다.
지금 돌아가는 것은
panic+calm둘뿐이다. 나머지는 전부 접었고, 접은 것을 지우지 않는다 — 왜 접었는지가 다음 실마리이기 때문이다.⚠️ 전부 모의(페이퍼) 다. 실거래가 아니고 투자 권유가 아니다.
0. 한 장 요약
| 계보 | 무엇 | 사전등록 | 판정 |
|---|---|---|---|
| ① 횡단면 저회전 | 여러 종목을 묶어 롱숏 | 1~14 | ✘ 못 가린다 — 라이브 가능 구간이 표본의 37%뿐 |
| ② 3틱 · 극단 변동성 | 급락 뒤 반전 | 14~17 | ✔ panic 으로 채택 |
| ③ 돈치안 · 앵커드VWAP | 돌파를 따라간다 | 19~28 | ✔ calm 으로 채택 |
| ④ 평행채널 반전 | 통로 하단 매수 · 상단 매도 | 35~50 · 59 | ⚠ 2026-09-08 폐기 → F1 로 부활, 2026-09-11 별도 트랙(조건부) |
| ⑤ 돌파 진입 | 뚫리는 쪽을 탄다 | 51~58 | ✘ 여섯 번 기각 · 축 영구 종료 |
| ⑥ 기타 오버레이 | 거래량 · 볼린저 · 사이징 등 | 18·21·22·29~34 | ✘ 대부분 기각 |
총 59건의 사전등록. 채택 2건(panic·calm) + 조건부 1건(평행채널 · 별도 트랙).
★이 낮은 채택률이 정상이다. 문제는 기각이 많은 게 아니라, 기각이 옳았는지다. 그래서 이 문서는 "무엇이 안 됐나"보다 "어떻게 그걸 알았나" 에 무게를 둔다.
1. 계보 ① — 횡단면 저회전 (2026-07 ~ 08)
착상. 종목 하나의 방향을 맞히는 건 어렵지만, 여러 종목을 동시에 상대비교하면 시장 전체의 출렁임이 상쇄된다. 저회전(거래가 뜸한) 종목이 되돌림이 크다는 가설.
사전등록 PREREG-1~14 (넓은 q + MR · 저회전 · IC 비중 · 펀딩 반영 · 잔차 되돌림 · 잔차변동성 · 펀딩변동성 · 시간 해상도 · min_names · 초기 유니버스 · 결합)
어디서 무너졌나 — 넷이 겹쳐 있었다.
-
손익을 로그 수익률로 계산했다. 포트폴리오 손익은 단순 수익률이어야 한다. 숏에서 방향이 나쁘다 — 정정폭 Sharpe 3.69 → 1.27. ★라이브 엔진은 처음부터 맞았다 ⇒ 라이브와 백테스트가 다른 걸 재고 있었다.
-
연구 하네스가 펀딩을 안 물었다. 라이브는 물었는데. 실측 −3.60bp/일(연 −12.3%). 기전: 거래대금이 터진 종목은 대개 급락 중이고, 그때 숏 쏠림으로 펀딩이 음수다 ⇒ 이미 숏이 몰린 곳에 뒤늦게 합류해 펀딩을 낸다. SR 0.89 → 2023~ 는 0.18.
-
없는 계약을 숏했다. 유니버스 마스크가 "무기한선물이 존재한 적 있는" 심볼이라 2021년 상장 계약을 2019년에도 잡았다. SR 0.89 → 0.43.
-
★라이브 전제조건을 연구에 안 걸었다. 라이브는
min_names=200이 필요한데 퍼프가 200종목을 넘긴 건 2023-10-18 부터다.실제 검정 가능 구간 1,027일(2.8년) · SR 0.71 2.8년 창의 검출 하한
2/√T= 1.19 > 0.71 ⇒ 이 표본으로는 못 가린다
★"엣지가 없다"가 아니라 "이 표본으로는 못 가린다" 다. 둘은 다르다. 그리고 그때까지의 모든 판정이 라이브 불가능 구간을 표본의 63%로 쓰고 있었다.
남은 것. 회전 감축 기법 · 펀딩을 비용이자 심리 지표로 보는 관점.
2. 계보 ② — panic (채택 · 지금 돌아감)
착상. 값이 급하게 무너지면 과하게 빠진다. 그 되돌림을 산다.
경로. 3틱룰(연속 하락 카운터) → 그 트리거가 최선이 아님을 확인 → 트리거를 버리고 모든 봉을 후보로 놓고 LightGBM 이 자리를 고르게 함 (PREREG-14 → 15 → 16 → 17).
규칙 (동결 · PREREG-17, 실질 8관문 통과)
봉 5분봉 · 진입 후보는 1시간 격자 (STRIDE=12)
진입 ATR% +4.08σ + 전 시간축 과매도(RSI 1h/4h −1.9~−1.5σ)
+ 채널 바닥(Donchian −1.43σ · BB%B −1.36σ) + 하락지속 + 거래량 폭증 → 롱
청산 익절 1.25×ATR · 손절 8×ATR · 백스톱 120분 (평균 보유 54분)
모델 LightGBM 워크포워드 · PIT 확장창 99.5분위 컷 (21일마다 갱신)
★국면 스위치를 사람이 안 짰다. ATR% +4σ 조건 자체가 변동성 폭발에서만 발화하므로 구조적으로 자동이다. (하드코딩 레짐 스위치는 이 프로젝트의 금지 항목이다.)
★원래 자주 안 나온다. 연도별 하루 발생: 2021 0.90 / 2022 0.42 / 2023 0.15 / 2024 0.32 / 2025 0.28 / 2026 0.05. 조용한 장에서 며칠 아무 일 없는 것이 정상이다.
3. 계보 ③ — calm (채택 · 지금 돌아감)
착상. 값이 한 방향으로 뻗을 때 따라간다. panic 과 반대 국면에서 발화한다.
경로. 돈치안 채널 반전(19·20) → 겹침 규칙(23) → 하단 숏(24) → 양다리(25) → 상단 롱 단독(26) → 신규 7종목 홀드아웃(27) → 앵커드 VWAP 결합 북(28, 7/7 통과)
★이름이 실제와 반대였다 (2026-09-09 정정)
calm 은 "채널 반전(Channel Reversal)" 이라는 이름을 오래 달고 있었다. 그런데
배포본의 실제 규칙은 c >= 20봉최고 − 0.25×ATR → 롱, 즉 높은 데서 산다.
반전이 아니라 돌파 추종이다.
경위: PREREG-19·20 은 정말 반전이었다(하단 롱 · 상단 숏). PREREG-24 에서 방향이 뒤집혔고(하단 터치 = 숏), PREREG-26 이 "신고가 돌파는 돌파의 정의 그 자체다" 라고 명시했다. 규칙은 바뀌었는데 이름만 안 바뀌었다.
★그래서 "채널 회귀 전략은 어디 갔냐"는 질문이 나왔다. 답은 둘이다:
· 돈치안 계열의 회귀는 방향이 뒤집혀 돌파로 채택됐다(= 지금의 calm)
· 진짜 채널 회귀(통로 하단에서 사는 것)는 계보 ④ 평행채널 반전이고
2026-09-08 에 사망 시점 미래참조로 폐기했다가, F1 필터로 되살아나
2026-09-11 부터 별도 트랙으로 돈다(§4-B)
★이름이 규칙과 어긋나면 몇 달 뒤의 자신이 속는다. CLAUDE.md §2.5 도 같이 고쳤다.
규칙 (동결 · PREREG-28)
봉 4시간봉
진입 돈치안 20봉(당봉 제외) 상단 돌파=롱 / 하단 돌파=숏 · 터치 허용 0.25×ATR
새 접촉만 (붙어 있는 동안 반복 진입하지 않는다)
청산 앵커드 VWAP 추격 손절 (진입 다음 봉부터 누적 · 선은 한 방향으로만)
초기 손절 = 진입가 ∓ 채널폭 × 0.5 · 백스톱 90일
시간축을 왜 4시간으로 고정하나 (2026-09-07 실측 · 처음 잰 축)
| TF | 거래 | gross | t | net(+10bp) | 비용 몫 |
|---|---|---|---|---|---|
| 60분 | 32,515 | +7.9bp | 10.30 | −2.1 | 127% |
| 240분 ★배포 | 8,129 | +26.9bp | 8.33 | +16.9 | 37% |
| 480분 | 3,930 | +73.9bp | 9.64 | +63.9 | 14% |
★1시간봉은 신호가 죽은 게 아니다(t 10.3). 엣지가 보유시간에 거의 비례해 쌓이는데 비용은 거래당 고정이라, 거래가 4배 많은 쪽이 진다. ★480분이 더 높지만 바꾸지 않았다 — 결과를 보고 옮기는 것이 사후 선택이다.
숏 다리는 보험이다. 숏을 빼면 자본 −14.6% · 낙폭 13.9→12.4% · 최악버킷 −8.6→−3.3%. 하락장에서 −16.5%p 잃고 상승장에서 +1.4%p 얻는다 ⇒ 수익원이 아니라 방어다.
4. 계보 ④ — 평행채널 반전 (2026-09-08 폐기)
착상. 차트에 평행한 통로를 긋고, 하단에서 사서 중간선에서 반익절+본절, 상단에서 전량. 사용자가 직접 지시한 "채널 매매의 기본"이다.
경로. 16건의 사전등록(35~50)으로 다듬었다 — 다중 스케일 · 4시간봉 · 진입 선별 · Kaufman 존 진입 · 거래량 방향 · 홀드아웃 · 탐지 앞당기기 · 터치 관문 · 게이트 C 제거 · 노출 맞춘 재비교 · 종목당 2개 · 시간초과 버킷 · 사망 후 손절 · 회귀실패 폐기 · 무반등 손절.
한때 이 프로젝트에서 가장 좋아 보이던 숫자였다: 5,273거래 · 승률 48.5% · 거래당 +25.9bp · 낙폭 −12.0% · 두 달 버킷 (+) 97.1%
★★그런데 미래참조였다
엔진이 채널을 t1 까지만 쓴다. t1 = 탐지기가 마지막으로 "살아있다"고 보고한 봉.
그런데 그 봉에서 탐지기의 end_reason 은 실측 2,066/2,066 전부 "open"(살아있음) 이다.
⇒ 죽었다는 사실은 다음 탐지에서야 안다. t1 에 끄는 것은 미래를 보고 끄는 것이다.
| 사망을 아는 시점 | 거래 | 거래당 | 결합 Sharpe | CAGR | 최종자본 |
|---|---|---|---|---|---|
| t1 (연구·현행) | 4,569 | +23.6bp | 2.27 | 64.1% | 160,271$ |
| t1+1봉 | 6,305 | −10.6bp | 0.17 | 1.3% | 10,740$ |
| t1+16 (실제 탐지 주기) | 13,673 | −85.4bp | −8.99 | −93.4% | 0$ |
★한 봉만 늦어도 무너진다 ⇒ 탐지를 더 자주 해도 못 살린다. 그래서 고치지 않고 접었다.
기전. 채널은 가격이 뚫고 나갈 때 죽는다. 그 직후 "레일에서 산다"는 지정가는 떨어지는 칼을 잡는다. 추가되는 9,205건이 승률 7.4% · −138.5bp · t −75. 계보 ⑤가 여섯 번 기각한 바로 그 자리다.
★전방 기록이 먼저 맞았다
API 종료 전에 백업한 실제 페이퍼 기록 (web/public/data/archive/forward/):
| 트랙 | 거래 | 승률 | 수익률 |
|---|---|---|---|
| 순수 채널 | 119 | 32.8% | −2.26% |
| 통합 채널 | 97 | 36.1% | −3.69% |
| 채널 + LVN 필터 | 54 | 27.8% | −1.14% |
백테스트는 좋은데 실제로는 몇 달 내내 지고 있었다. 그 불일치가 답을 먼저 말하고 있었고, 우리는 2026-09-08 에야 이유를 찾았다.
★그리고 누수 감사는 통과했었다
leak_check 48/48 통과가 사실이었다. 그 감사는 "통로의 선이 흔들리나"를 봤고,
누수는 "어느 통로를 쓰나"에 있었다.
감사를 통과했다 = 감사가 본 축에는 없다. 그뿐이다.
이 프로젝트가 배운 것 중 가장 비싼 것이다.
4-B. 계보 ④ 의 부활 — F1 (PREREG-59 · 2026-09-11 별도 트랙)
★2026-09-09 에 이 문서는 계보 ④ 를 "폐기"로만 적어 두었고, 사용자가 그걸 보고 물었다: "채널전략 우리 계속 만들다가 잠시멈춘건데, 그걸 왜 다죽여? … 살려내" 옳은 지적이었다. 백테스트가 무효라는 것과 전략이 안 먹힌다는 것은 다른 말인데, 에이전트가 그 둘을 섞어서 묻지 않고 다리를 내렸다.
무엇이 문제였나. 사망을 정직하게 t1+16(실제 탐지 주기)로 밀면 거래가 4,569 → 13,673
으로 늘고, 늘어난 9,205건이 떨어지는 칼이었다(승률 7.4% · −138.5bp). 즉 문제는
"채널이 안 먹힌다"가 아니라 채널이 이미 뚫린 뒤에도 레일에서 사는 것이었다.
해법 — F1 한 줄. 진입 봉의 종가가 채널 안이어야 한다. 뚫고 나간 봉은 종가가
밖이므로 걸러진다. 자유도 0 — 임계값도 창도 없다. 결과를 보기 전에 사전등록했다
(docs/PREREG_channel_inside.md · 시행 9건 선언 · MDE ≈ 9.1bp 사전 계산).
| 사망을 아는 시점 | F1 없음 | F1 |
|---|---|---|
| t1+16 (정직한 시점) | −85.4bp | +14.1bp |
홀드아웃(14종목 · 11,935건): 거래당 +23.9bp · t +10.47 · 14/14 종목 (+) ⇒ 5관문 중 4개 통과. G5(낙폭)만 미달이라 조건부 채택이다.
★그 낙폭은 메인과 한 계좌를 쓸 때의 값이었다. 그래서 2026-09-11 사용자 지시로
별도 트랙(자기 자본 $10,000 · 자기 계좌 · 자리 안 나눔)으로 분리했다 — /paper-channel.
★분리는 그 관문을 통과시킨 것이 아니라 다른 질문으로 옮긴 것이다. 판정은 전방 기록으로 한다.
라이브 다리는 연구 하네스와 탐지가 정확히 일치하고 청산 다리가 394/394 일치함을
확인한 뒤에 붙였다(tests/validation/test_paper_channel_matches_research.py).
5. 계보 ⑤ — 돌파 진입 (여섯 번 기각 · 축 종료)
착상. 통로가 뚫리면 그 방향으로 탄다. 반전의 반대편이다.
시도. 비빔 필터(51) → 비빔 한 번이라도(52) → 비빔 돌파 진입(53) → 확인 후 진입(54) → 전면 탐색으로 찾은 규칙(55) → 관통으로 제대로 센 비빔(56) → 상대 기준 청산(57) → 변동성 상위에서만(58).
가장 큰 시도. 제한을 전부 풀고 신호 17,417개 × 청산 1,680가지 × 진입 13축 = 3,539 시행. 8종목에서 자본 2.18배가 되는 조합을 찾았다.
홀드아웃(안 본 종목): −24.0bp · −55.5% — 부호가 뒤집혔다.
★여기서 얻은 교훈이 오늘 가장 비싸다: "격자가 매끄럽다(면을 이룬다)"는 과적합을 막지 못한다. 이웃 칸들은 같은 거래를 공유 하므로 서로 독립된 증거가 아니다. 나는 그 논리로 안심했었고, 홀드아웃이 반증했다.
⇒ 돌파 축은 영구 종료. 다시 열지 않는다.
6. 계보 ⑥ — 오버레이 · 필터 (대부분 기각)
| 후보 | 판정 |
|---|---|
| 거래량 게이트 (5각도) | ✘ 전부 기각. 요일 교락 실재 — raw 저거래봉 66%가 주말 |
| 볼린저 3.0σ 돌파 (29·30) | ✘ |
| 엔벨로프 숏 (21) · 평행채널 숏 (22) | ✘ |
| 포지션 줄여 다리 늘리기 (31) | ✘ |
| 우선순위 큐 시차 (33) · 볼린저 다리 추가 (34) | ✘ |
| SMA20 정렬 | △ 사이징 가중으로만 조건부 유효 |
| 메타라벨링 | ✘ AUC 0.49 |
| 레버리지 | ✘ 최악 버킷을 깊게 한다 (−19 → −30%) |
| PBO (18) | ✘ 적용 불가로 확정 — 같은 유니버스를 도는 전략군에는 원리적으로 안 붙는다 |
7. 반복된 실수 — 같은 모양이 계속 나온다
이 프로젝트가 같은 종류의 실수를 다섯 번 이상 했다. 종류가 셋뿐이다.
㉠ 관문이 달성 불가능했다 (5회)
| 걸었던 관문 | 실제 상한 |
|---|---|
| 블록 z ≥ 2 | 우리 표본에서 연 41% 이상 벌어야 통과. 진짜 +20% 엣지의 검정력 14% |
| 단일종목 Sharpe | 검출 하한 = 2/√T, 거래 수와 무관(Lo 2002). 4.5년 창에서 문헌 효과 0/6 검출 가능 |
| 유효랭크 ≥ 3 + 쌍상관 < 0.6 | 후보 8개에서 산술적으로 양립 불가능 |
| R² 관문 | 상한 미계산 |
| Sharpe ≥ 2.41 (PREREG-45) | 2.41 자신의 SE 가 0.41. 관측 격차 0.108 은 검출 하한의 10% |
★관문을 걸기 전에 그 관문의 상한을 먼저 계산한다. ★MDE 없는 기각은 기각이 아니다.
㉡ 연구와 라이브가 다른 걸 쟀다 (4회)
로그 vs 단순 수익률 · 펀딩 누락 · 없는 계약 숏 · 논퍼프 롱 · 채널 사망 시점. ★공통 질문 하나로 전부 잡힌다: "이 북을 라이브가 그대로 들 수 있는가?"
㉢ 못 재는 것을 실패로 찍었다
"유의하지 않다"는 "엣지가 없다"가 아니라 "이 검정으로는 못 가린다" 다. 후자면 고칠 것은 전략이 아니라 설계다.
㉣ 같은 줄이 복사돼 같이 틀렸다 (2026-09-09)
월 수익률을 각 달의 마지막 / 그 달의 첫 값으로 쟀다. 그러면 달과 달 사이 구간이 통째로 빠진다. 그 줄이 12개 파일에 복사돼 있었다.
월수익 전부 복리 8.179배 vs 계좌 최종 **7.471배** ⇒ **+9.5% 부풀림**
월 (+) 비율 64.7% -> **61.8%**
2개월 버킷 (+) 64.7% -> **61.8%**
★버킷 승률은 이 프로젝트의 궁극 목표(70%) 를 재는 자다. 그 자가 틀려 있었다.
★검사는 한 줄이면 됐다 — 월수익을 전부 곱하면 총배수와 같아야 한다.
src/quantcrypto/stats/periods.py · tests/validation/test_monthly_decomposition.py
8. 지금 상태 (2026-09-09)
돌아가는 것: panic + calm
과거 기준 (2021~ · 8종목 · 슬리피지 10bp · 무레버리지)
거래 7,973건 · 승률 46.3% · 월 (+) **61.8%** · 2개월 버킷 (+) **61.8%**
낙폭 15.2% · Sharpe 1.72 · CAGR 43.2% · 1,000만원 -> 7,471만원 (5.7년)
★월 (+) 는 2026-09-09 에 **64.7% -> 61.8%** 로 정정됐다 —
월 수익률이 달 사이 구간을 빠뜨리고 있었다(§7 ㉣).
사이징 (동결) 포지션 15% · 총 노셔널 80% · 동시 8개
유니버스 BTC ETH BNB XRP SOL DOGE LINK ADA (시가총액 상위 8)
전방 기록 시작: 2026-09-07 17:35Z. Railway cron 이 1시간마다 재생하고 결과를 저장소에 커밋한다(서버 없음). 화면은 /paper-main.
★거래 30건이 쌓이기 전에는 아무 판단도 하지 않는다. 좋게 보이든 나쁘게 보이든 운의 범위다. 그리고 채널이 준 교훈대로, 판정은 전방 기록으로 한다.
부록 — 원본 자료
| 무엇 | 어디 |
|---|---|
| 사전등록 58건 | docs/PREREG_*.md |
| 옛 원장(횡단면 세대) | docs/STRATEGY_LEDGER.md · docs/TRACK_ANATOMY.md |
| 진행 로그 | PROGRESS.md |
| 채널 부검 | scripts/hq_alive_lag.py · docs/hq_alive_lag.json |
| calm 시간축 | scripts/ho_calm_tf.py · docs/ho_calm_tf.json |
| 전방 기록 보관본 | web/public/data/archive/forward/ |
| 배포 설정 | docs/RAILWAY_PAPER_CRON.md |
| 재발 방지 테스트 | tests/validation/ (특히 test_channel_death_lookahead.py) |