입력 길이를 늘리면 실제 트레이딩 성과가 좋아지는가
BTCUSDT IQL v4 모델 12개를 동일한 실제 OOS 구간에서 비교해 backbone별 입력 window, parameter 규모, 최근 성과와 untouched final test를 분석합니다.
> 연구 상태: 단일 seed 로컬 pilot 완료. 합성 transition으로 학습한 12개 > 정책을 같은 실제 BTCUSDT OOS frame에서 추론했다. 공식 context 선택은 > validation만 사용했고 untouched final test는 선택된 3개 context에만 존재한다. > 비선택 context의 full-OOS 및 최근 수치는 모두 사후 보고 진단이다.
질문
같은 IQL/v4 학습 계약에서 입력 window를 늘리면 실제 시장 OOS 트레이딩 성과가 좋아지는가? 그리고 이 효과는 backbone마다 같은가?
실험 설정
| 항목 | 계약 |
|---|---|
| Symbol | BTCUSDT |
| 학습 데이터 | synthetic transition only |
| 실제 시장 데이터 | checkpoint inference와 OOS 평가에만 사용 |
| Algorithm / version | iql / v4 |
| Seed | 714 한 개 |
| Backbone | Price Causal Mixer, PatchTST, iTransformer |
| Context | 32, 64, 128, 256 bars |
| Real OOS | 2021-07-14 ~ 2026-07-13 |
| Validation | 2021-07-14 ~ 2025-07-13 |
| Untouched final | 2025-07-14 ~ 2026-07-13 |
| Position timing | realized_position[t] = target_position[t-1] |
모든 context dataset은 같은 512-bar canonical trajectory에서 observation suffix만 잘랐다. 12개 curve는 checkpoint를 같은 real BTC frame에 결정론적으로 다시 실행해 복원했으며 source 51개 checksum 불일치는 0개였다.
모델 구조와 parameter count
| Backbone | Window | Encoder | Actor total | Full IQL | Selected |
|---|---|---|---|---|---|
| Price Causal Mixer | 32 | 787,018 | 935,243 | 5,612,994 | |
| Price Causal Mixer | 64 | 787,018 | 935,243 | 5,612,994 | |
| Price Causal Mixer | 128 | 787,018 | 935,243 | 5,612,994 | |
| Price Causal Mixer | 256 | 787,018 | 935,243 | 5,612,994 | Yes |
| PatchTST | 32 | 416,266 | 482,315 | 2,894,914 |
Full IQL은 actor, twin critic, target twin critic, value를 모두 포함한다. IQL 내부에는 같은 구조의 encoder copy가 6개 있다. Price Causal Mixer는 window가 늘어도 parameter count가 같지만 PatchTST와 iTransformer는 context-dependent parameter 때문에 조금씩 증가한다.

Figure 1. Encoder, actor, full-IQL parameter와 사후 full-OOS Sharpe를 함께 그렸다. Full-OOS Sharpe는 모든 context를 본 뒤 계산한 보고용 수치다.
공식 선택과 untouched final test
| Backbone | Selected context | Validation Sharpe | Validation annual return | Final Sharpe | Final annual return | Final MDD |
|---|---|---|---|---|---|---|
| Price Causal Mixer | 256 | 0.634 | 3.70% | 1.933 | 8.51% | -1.67% |
| PatchTST | 64 | 0.689 | 6.98% | -0.559 | -2.46% | -6.98% |
| iTransformer | 128 | 0.365 | 3.34% | 1.591 | 11.42% | -4.38% |

Figure 2. Validation으로 context를 고른 뒤 선택된 모델에만 untouched final test를 적용했다. PatchTST는 validation 양수에서 final 음수로 반전됐다.
공식 선택은 Price Causal Mixer 256, PatchTST 64, iTransformer 128이다. Price Causal Mixer와 iTransformer는 final year에서 양의 Sharpe를 유지했지만 PatchTST는 유지하지 못했다. 이 결과는 “window가 길수록 좋다”는 단일 규칙을 지지하지 않는다.
전체 real OOS curve

Figure 3. 2021-07-14부터 각 curve의 strategy_return을 1에서 다시 복리한 실제 BTC OOS 누적수익률이다. 굵은 선은 공식 선택 context이며 나머지는 post-hoc이다.
Full-OOS Sharpe 요약
| Backbone | ctx32 | ctx64 | ctx128 | ctx256 |
|---|---|---|---|---|
| Price Causal Mixer | 0.408 | 0.719 | 0.829 | 0.833 selected |
| PatchTST | -0.091 | 0.541 selected | 0.236 | 0.501 |
| iTransformer | 0.308 | 0.353 | 0.559 selected | 0.407 |
Full OOS는 validation과 final을 합친 5년 구간이다. 비선택 context의 값은 전체 기간을 본 후 계산됐으므로 context 선택을 다시 정당화하는 데 사용하면 안 된다.
최근 구간 성과
아래 표는 실제 시장 curve의 사후 total return이다. 모든 context에 동일하게 1M/3M/6M/1Y/full-OOS를 적용했지만 사전에 선택 기준으로 선언된 fold가 아니다.
Price Causal Mixer
| Context | 1M | 3M | 6M | 1Y | Full OOS |
|---|---|---|---|---|---|
| 32 | 1.1% | 6.0% | 15.7% | 23.7% | 27.5% |
| 64 | 1.8% | 5.6% | 12.7% | 19.4% | 30.8% |
| 128 | 0.8% | 4.5% | 13.9% | 21.0% | 35.1% |
| 256 selected | 0.5% | 1.1% | 6.0% | 8.5% | 25.5% |
PatchTST
| Context | 1M | 3M | 6M | 1Y | Full OOS |
|---|---|---|---|---|---|
| 32 | 0.7% | 4.0% | 5.5% | 5.4% | -3.2% |
| 64 selected | 0.3% | 0.6% | -2.7% | -2.5% | 27.8% |
| 128 | -1.1% | -0.9% | -6.4% | -7.5% | 15.4% |
| 256 | 0.3% | 2.6% | 6.5% | 7.1% | 19.8% |
iTransformer
| Context | 1M | 3M | 6M | 1Y | Full OOS |
|---|---|---|---|---|---|
| 32 | 0.3% | 1.6% | 3.8% | 5.8% | 9.5% |
| 64 | 0.7% | 3.5% | 9.0% | 13.8% | 17.2% |
| 128 selected | 0.6% | 3.0% | 7.4% | 11.4% | 27.1% |
| 256 | 0.5% | 2.7% | 6.5% | 10.1% | 16.4% |

Figure 4. 12개 모델의 trailing total return이다. Full OOS를 포함한 모든 칸은 보고용 post-hoc metric이다.
최근 성과만 보면 PatchTST 256이 선택된 64보다 좋아 보인다. 그러나 final period를 확인한 뒤의 관찰로 선택을 바꾸면 test leakage가 된다. 다음 실험의 사전 가설로만 사용해야 한다.
결론
1. 입력 길이는 실제 OOS 성과에 영향을 줬지만 더 길수록 항상 좋아지지는 않았다. 2. 최적 validation context는 backbone마다 달랐다. 3. 선택된 PatchTST는 final year에서 실패했다. Validation 성과만으로 robustness를 보장할 수 없다.
입력 길이는 backbone별 hyperparameter로 연구할 가치가 있다. 다만 학습 seed가 714 하나이고 optimizer가 synthetic transition만 봤다. Active ensemble 대비 position-level marginal 평가도 하지 않았다. 이 실험은 registry upload와 promotion을 수행하지 않았으며, production default를 바꿀 근거는 아직 부족하다.
다음 단계
최소 3개 seed와 동일 validation/final 경계를 유지하고, 선택된 context만 final test에 한 번 노출해야 한다. 이후 active ensemble에 후보 position을 추가한 position-level marginal Sharpe/MDD/turnover까지 통과해야 운용 후보로 검토할 수 있다.