Dimensiones del proyecto — variables y direcciones de R&D
Este documento inventaría todas las variables del proyecto BTC trading que pueden modificarse durante R&D, organizadas en 8 dimensiones independientes. Cada variable incluye: valor canónico actual, alternativas, impacto esperado, esfuerzo de testear, e hipótesis concreta a validar. Generado por equipo de 4 agentes especializados (ML Architecture, Labeling/Features, Backtest/Risk, Validation/MLOps).
1. Arquitectura & Entrenamiento
Inventario de variables de modelado y entrenamiento para el clasificador 3-class (TP/SL/Timeout) sobre secuencias OHLCV+features de BTC 15min. Canónico actual: GRU(2×128) + 36 feats + seq=300, batch 64, Adam 1e-3, 5-seed ensemble. Fold A5000 ≈ 30-50s.
1.1 Familia de arquitectura
| Campo |
Valor |
| Canónico |
GRU unidireccional, 2 capas |
| Alternativas |
LSTM, Bi-LSTM, Transformer encoder (4-6 heads), CNN-LSTM, TCN dilatado, N-BEATS, TFT |
| Impacto esperado |
Bi-LSTM y TFT: más contexto temporal bidireccional. Transformer/TFT: mejor captura de dependencias largas pero peor con seq=300 cortas y ruido cripto. TCN: paraleliza, receptive field controlado. CNN-LSTM: filtra ruido local antes de la recurrencia. |
| Effort |
Medio (cada familia: ~30 min código + 4 folds × 5 seeds en A5000 ≈ 15 min compute) |
| Hipótesis |
¿Un TCN con receptive field = 300 supera a GRU en F1 de la clase TP manteniendo el alpha vs V66? |
1.2 Hidden size
| Campo |
Valor |
| Canónico |
128 |
| Alternativas |
64, 96, 192, 256, 384 |
| Impacto |
<96: underfit en alta vol. >256: overfit + colinealidad entre seeds (ensemble pierde diversidad). |
| Effort |
Cheap (sweep de 5 valores ≈ 20 min A5000) |
| Hipótesis |
¿Existe una meseta plana 96-192 donde alpha se mantiene? Si sí, 96 = más diversidad de ensemble. |
1.3 Num layers
| Campo |
Valor |
| Canónico |
2 |
| Alternativas |
1, 3, 4 |
| Impacto |
1 capa: más estable, menos memoria de fase. 3-4: gradient vanish en GRU sin residual connections. |
| Effort |
Cheap |
| Hipótesis |
¿GRU-1 layer 128 iguala al 2-layer en alpha pero entrena 40% más rápido permitiendo 10 seeds? |
1.4 Dropout y regularización
| Campo |
Valor |
| Canónico |
dropout=0.2 entre capas GRU, sin weight decay |
| Alternativas |
0.1 / 0.3 / 0.4; variational dropout; zoneout 0.05-0.1; weight decay 1e-5..1e-4; input noise gaussiano σ=0.01 |
| Impacto |
Variational dropout en GRU (Gal & Ghahramani): mucho mejor que dropout estándar para RNNs. Zoneout preserva estado oculto. |
| Effort |
Cheap |
| Hipótesis |
¿Variational dropout 0.25 + WD 1e-5 reduce overfitting del fold 1 sin tocar arquitectura? |
1.5 Sequence length / lookback
| Campo |
Valor |
| Canónico |
300 eventos |
| Alternativas |
96, 144, 200, 480, 720, multi-scale (96+300 concat) |
| Impacto |
<144: pierde régimen intra-día. >480: introduce señal de día previo. Multi-scale: tendencia + microestructura. |
| Effort |
Medio |
| Hipótesis |
¿Seq=144 preserva ≥90% del alpha con 50% menos tiempo de training? |
1.6 Output head
| Campo |
Valor |
| Canónico |
3-class softmax (TP/SL/Timeout) + CE |
| Alternativas |
Binary; Regresión sobre retorno; Dual-head (TP+SL sigmoides independientes); Ordinal; Quantile head |
| Impacto |
Dual-head: separa risk-side vs reward-side. Quantile: usable por sizing. |
| Effort |
Medio |
| Hipótesis |
¿Dual-head sigmoide supera al softmax 3-class dado que TP/SL no son mutuamente excluyentes? |
1.7 Loss function
| Campo |
Valor |
| Canónico |
Cross-Entropy uniforme |
| Alternativas |
Focal loss (γ=1.5-2.5); class-weighted CE; label smoothing 0.05-0.1; CE + auxiliar MSE; asymmetric loss |
| Impacto |
Clase TP minoritaria (~25%). Focal/class-weighted reducen sesgo. Label smoothing mejora calibración. |
| Effort |
Cheap |
| Hipótesis |
¿Focal γ=2 + label smoothing 0.05 aumenta recall TP ≥5pp? (R134 mostró recall real 15-49%) |
1.8 Optimizer + weight decay
| Campo |
Valor |
| Canónico |
Adam lr=1e-3, sin WD explícito |
| Alternativas |
AdamW; SGD-Nesterov; Lion lr=3e-4; RAdam; Lookahead(Adam) |
| Impacto |
AdamW desacopla WD correctamente. Lion: 3-10× menos memoria. SGD-N puede generalizar mejor. |
| Effort |
Cheap |
| Hipótesis |
¿AdamW con WD=1e-4 reduce gap train/val en fold 3? |
1.9 Learning rate schedule
| Campo |
Valor |
| Canónico |
ReduceLROnPlateau |
| Alternativas |
Cosine annealing; Warmup+cosine; OneCycleLR; Cosine warm restarts |
| Impacto |
Warm restarts produce snapshots → ensemble interno. ReduceLROnPlateau es reactivo, no proactivo. |
| Effort |
Cheap |
| Hipótesis |
¿Cosine warm restarts produce snapshots usables como ensemble interno sin entrenar más seeds? |
1.10 Batch size
| Campo |
Valor |
| Canónico |
64 |
| Alternativas |
32, 128, 256, 512 |
| Impacto |
Batch pequeño = más ruido en gradiente = mejor exploración + ensemble más diverso. |
| Effort |
Cheap |
| Hipótesis |
¿Batch 32 mejora diversidad inter-seed? Si correlación baja de 0.85 a <0.75, ensemble debería ganar. |
1.11 Epochs + early stopping
| Campo |
Valor |
| Canónico |
max 30, patience 8 sobre val_loss |
| Alternativas |
Patience sobre val_F1_TP; patience 4/12; entrenamiento fijo a N epochs |
| Impacto |
val_loss bajo ≠ buen PnL (CLAUDE.md). Early stop sobre métrica PnL-proxy alinea mejor con objetivo. |
| Effort |
Cheap |
| Hipótesis |
¿Early stop sobre F1_TP reduce la brecha val_loss-PnL? |
1.12 Multi-seed ensemble
| Campo |
Valor |
| Canónico |
5 seeds, hard voting con MIN_VOTES |
| Alternativas |
3/7/10/15 seeds; averaging de softmax; weighted averaging por val_F1; rank-averaging; Bayesian model averaging |
| Impacto |
Voting hard pierde info de confianza. Soft averaging suele dar +1-3pp F1. |
| Effort |
Cheap-Medio |
| Hipótesis |
¿Soft averaging con umbral calibrado (Platt scaling per-seed) supera a hard voting? |
1.13 Stack / blend (meta-learner)
| Campo |
Valor |
| Canónico |
No implementado (solo voting) |
| Alternativas |
Logistic regression sobre softmax; LightGBM stacker; isotonic regression; MLP shallow |
| Impacto |
Stacking puede capturar patrones de en-qué-régimen-cada-seed-acierta. Alto riesgo de leakage. |
| Effort |
Medio |
| Hipótesis |
¿Logistic stacker sobre 10 seeds (purged WF) supera al soft averaging? |
Top 3 untested high-EV experiments (Arquitectura)
- Dual-head sigmoide + focal loss γ=2 + label smoothing 0.05. Las clases TP/SL no son mutuamente excluyentes a nivel de path simulado.
- Snapshot ensembling con cosine warm restarts. Una sola run produce 3-5 snapshots usables como ensemble interno.
- Seq=144 + 10 seeds + soft averaging + Platt calibration. Reasigna compute: mitad de lookback, doble de seeds, calibración explícita.
2. Etiquetado
2.1 Triple-barrier ratios (k_up / k_dn)
| Campo |
Valor |
| Canónico |
k_up=10, k_dn=7 (asimétrico, sesgo long) |
| Alternativas |
Simétrico 7/7, 10/10, 5/5; asimétrico short 7/10; muy ancho 15/10 |
| Impacto |
Define ratio TP:SL realizable. Ratios estrechos suben hit-rate pero matan R:R; anchos al revés. |
| Riesgo |
Asimetría fuerte invita sesgo de régimen. |
| Hipótesis |
¿Simétrico 8/8 con meta-labeling supera 10/7? ¿Ratios regime-conditional? |
2.2 Horizonte temporal (max-hold)
| Campo |
Valor |
| Canónico |
60 barras 15min = 5h |
| Alternativas |
24 (6h), 48 (12h), 96 (24h), 120 (30h) |
| Impacto |
Corto sube Timeout y empeora R:R; largo aumenta path-dependency y solapamiento. |
| Riesgo |
Horizontes largos generan solapamiento (uniqueness ↓) y leak por eventos concurrentes. |
| Hipótesis |
¿96 barras reduce Timeout de 37% a ~25% sin destruir Sharpe? |
2.3 Estructura de clases
| Campo |
Valor |
| Canónico |
3-clase: TP / SL / Timeout (24/39/37) |
| Alternativas |
Binario (TP vs ¬TP), 5-clase por cuantiles, regresión continua |
| Impacto |
Binario simplifica pero pierde info de Timeout. Regresión preserva magnitud. |
| Riesgo |
Cuantiles globales filtran info futura → leak silencioso. |
| Hipótesis |
¿Regresión sobre MFE-en-ventana + threshold posterior bate clasificación 3-clase? |
2.4 Escalado de volatilidad
| Campo |
Valor |
| Canónico |
ATR-14 multiplicador |
| Alternativas |
GARCH(1,1) σ̂, realized vol 1h/4h/24h, range-based (Garman-Klass, Parkinson, Yang-Zhang) |
| Impacto |
RV intra-día reacciona más rápido que ATR. Mejor escalado = barreras más homogéneas. |
| Hipótesis |
¿Yang-Zhang vol reduce dispersión de Timeout ≥10pp vs ATR-14? |
2.5 MFE / MAE vs barrier
| Campo |
Valor |
| Canónico |
Barrera (primer toque gana) |
| Alternativas |
MFE/MAE como label continuo o multi-task |
| Hipótesis |
¿Doble cabeza (clasif. barrera + regresión MFE/MAE) sube AUC ≥3pp? |
2.6 Meta-labeling (López de Prado)
| Campo |
Valor |
| Canónico |
NO implementado |
| Alternativas |
Primary = trend signal; Secondary = ML filter take/skip |
| Impacto |
Mejora precision a costa de recall; reduce drawdown. |
| Hipótesis |
¿V66 como primary + modelo R&D como secondary bate V66 standalone en Sharpe y MDD? |
2.7 Sample weighting
| Campo |
Valor |
| Canónico |
Uniforme |
| Alternativas |
Average uniqueness, exponential decay (recencia), inverse class freq, return-magnitude weighting |
| Impacto |
Uniqueness corrige solapamiento; decay enfoca régimen reciente. |
| Hipótesis |
¿Uniqueness × inverse-freq sube F1 macro de la clase TP en val purgada? |
2.8 Forward-looking vs current-bar labels
| Campo |
Valor |
| Canónico |
Forward (corregido en R134) |
| Riesgo |
Cualquier feature derivado del bar de label = leak. R121b/R128d históricos inflados por esto. |
| Hipótesis |
¿Re-correr todos los hits R110-R128 con forward strict + purged WF? |
2.9 Combinatorial Purged K-Fold (CPKF)
| Campo |
Valor |
| Canónico |
Walk-forward simple |
| Alternativas |
Purged K-Fold, CPKF, embargo de H barras |
| Impacto |
Reduce optimismo en val ~5-15pp; revela overfitting real. |
| Hipótesis |
¿CPKF con embargo=H descarta ≥30% de "hits" actuales como ruido? |
Top 3 untested high-EV experiments (Etiquetado)
- Meta-labeling V66→modelo R&D: explota el único alfa reproducible (V66) como primary y deja al ML solo decidir take/skip.
- Multi-task barrera + regresión MFE/MAE: añade señal densa sin cambiar la arquitectura mucho.
- CPKF con embargo=60 sobre R110/R117: clarifica qué resultados son reales antes de seguir construyendo sobre arena.
3. Features & Datos
3.1 Familias de indicadores
| Campo |
Valor |
| Canónico |
36 TA hand-crafted: RSI, MACD, ATR, Bollinger, SMA daily, slope, return percentiles |
| Alternativas |
Volumen: OBV, VWAP, CVD; Volatilidad: GK, Parkinson, RV; Microestructura: order-flow imbalance |
| Impacto |
Volumen añade dimensión ortogonal. Microestructura mayor diferenciador pero requiere data nueva. |
| Hipótesis |
¿Añadir CVD + VWAP-distance sube AUC ≥2pp con feature count constante? |
3.2 Multi-timeframe
| Campo |
Valor |
| Canónico |
Solo 15min |
| Alternativas |
1H, 4H, 1D resampled features alineadas |
| Impacto |
Contexto macro filtra trades contra-tendencia; boost ~3-5pp Sharpe en literatura. |
| Riesgo |
Forward-fill mal hecho = leak. |
| Hipótesis |
¿8 features 1H + 4 features 1D (RSI, slope, distancia a SMA) bate baseline en Sharpe OOS? |
3.3 Cross-asset / on-chain
| Campo |
Valor |
| Canónico |
BTC OHLCV únicamente |
| Alternativas |
ETH (corr rolling), SPX/DXY, gold, on-chain (active addr, NVT, exchange flows), funding rate, perp basis |
| Impacto |
Funding + basis son features microestructura derivativos con alto EV. |
| Riesgo |
Datos on-chain con latencia/revisión retrospectiva → leak. |
| Hipótesis |
¿Funding-rate + perp-basis suben Sharpe ≥0.2 con coste mínimo de ingestión? |
3.4 Sentiment / news
| Campo |
Valor |
| Canónico |
Ninguno |
| Alternativas |
Fear & Greed index, Google Trends, Twitter/Reddit volumen, LLM-scored news headlines |
| Impacto |
Útil en colas (capitulación, euforia); ruido en régimen tranquilo. |
| Hipótesis |
¿F&G como single feature mejora filtrado en régimen extremo? |
3.5 Calendar features
| Campo |
Valor |
| Canónico |
Ninguno |
| Alternativas |
hour-of-day sin/cos, day-of-week, end-of-month, days-since-halving |
| Impacto |
Coste cero; estacionalidad horaria documentada en cripto (Asia/EU/US sessions). |
| Hipótesis |
¿Hour-of-day sin/cos como 2 features extra sube AUC sin tocar nada más? |
3.6 Normalización
| Campo |
Valor |
| Canónico |
Per-sequence MinMax sobre ventana 300 |
| Alternativas |
Global Z-score (con μ,σ solo de train), differenced, log-returns, robust scaler, rank-transform |
| Impacto |
MinMax destruye info de nivel absoluto entre ventanas; rank-transform invariante a outliers. |
| Hipótesis |
¿Rank-transform per-sequence + level features globales bate MinMax puro? |
3.7 Feature ablation
| Campo |
Valor |
| Canónico |
36 features, sin selección formal |
| Alternativas |
SHAP-based pruning, mutual information ranking, drop RSI variantes redundantes |
| Impacto |
Reducción a 18-24 sin pérdida de AUC; mejor generalización. |
| Hipótesis |
¿Top-20 por permutation importance en train iguala 36 features en val purgada? |
3.8 Event filter alternatives
| Campo |
Valor |
| Canónico |
ATR-based (atr_mult=2.0, return_pct=90) → ~10.5% bars |
| Alternativas |
CUSUM filter, volume-spike, time-based, regime-change (HMM/Markov), híbrido CUSUM+volume |
| Impacto |
R141 (loosen a 80) DESTRUYÓ alpha → filtro actual selectivo y útil. R142 (95) pending. |
| Hipótesis |
¿CUSUM (h=2σ) + volumen como segundo filtro AND con ATR sube precision sin matar recall? |
Top 3 untested high-EV experiments (Features & Datos)
- Multi-timeframe 1H + 1D features: coste implementación bajo, mejora documentada en literatura, ortogonal al modelo actual.
- Funding rate + perp basis: únicas señales de microestructura accesibles sin tick data.
- Rank-transform per-sequence + level features globales: ataca limitación estructural de MinMax actual.
4. Simulación Backtest
4.1 Granularidad de la barra
| Campo |
Valor |
| Canónico |
Bar-by-bar 15min (resampleado desde 5min) |
| Alternativas |
Tick-by-tick, 5min nativo, 1H, daily aggregate |
| Impacto |
Granularidad fina mejora fidelidad de stops; daily oculta wicks. |
| Trader view |
15min es sweet spot intra-day en BTC. Failure mode: backtest "ejecuta" precios intra-barra que en vivo nunca tocaste. |
| Hipótesis |
Re-simular V66 en 5min nativo y 1H; si compound cae >30% en 1H ⇒ alpha vive en wicks intra-15min (frágil). |
4.2 Modelo de slippage
| Campo |
Valor |
| Canónico |
Fijo 0.01% por lado |
| Alternativas |
Spread-based, volume-proportional, Almgren-Chriss |
| Impacto |
Subestimar slippage es #1 killer de live PnL con 75 trades/fold. |
| Trader view |
0.01% es optimista: flash crash 2020-03-12 = 50-200bps de slippage real. |
| Hipótesis |
Stress test slippage condicionado: 0.01% lateral, 0.05% bull, 0.15% bear/high-vol. Si compound cae >40% ⇒ V66 depende de liquidez ideal. |
4.3 Modelo de comisión
| Campo |
Valor |
| Canónico |
0.04% fijo (taker) |
| Alternativas |
Maker/taker mix, tiered por 30d volume, funding cost en perp |
| Impacto |
75 trades × 0.04% × 2 sides = 6% drag/fold antes de slippage. |
| Trader view |
Si estrategia vive en perp, funding cost es el elefante en la sala — puede ser ±0.01-0.1% cada 8h. |
| Hipótesis |
Añadir funding histórico Binance perp BTCUSDT al P&L. Si gap > 8% compound ⇒ migrar a spot o hedgear funding. |
4.4 Position sizing
| Campo |
Valor |
| Canónico |
Full notional (100% capital cada entrada) |
| Alternativas |
Kelly fraccional, vol-targeting σ=30% anual, fixed-fractional 50% |
| Impacto |
Full notional maximiza compound pero maximiza también DD. |
| Trader view |
Full notional en BTC σ=80% es leverage implícito. El +70k% es en parte artefacto de no escalar down en alta vol. |
| Hipótesis |
Vol-targeting a 50% σ anual. Esperaría -20% compound pero +40% Sharpe. |
4.5 Walk-forward design
| Campo |
Valor |
| Canónico |
Expanding window, 4 folds, 2018-2026 |
| Alternativas |
Sliding (fixed lookback), CPCV, nested CV |
| Trader view |
4 folds es muestra pequeña para robustez. Cada fold es 1 régimen → riesgo de overfit secuencia. |
| Hipótesis |
CPCV con embargo 5 días, 12 splits; reportar distribución compound por path. Si IQR > 2× median ⇒ resultado path-dependent. |
4.6 Bootstrap confidence
| Campo |
Valor |
| Estado |
NO REPORTADO sistemáticamente |
| Trader view |
Sin IC sobre alpha, +62 min α puede ser ruido. |
| Hipótesis |
Block bootstrap (bloque=20 bars), 5000 réplicas; reportar α 5/95 percentil. Si 5%ile < 0 ⇒ alpha no estadísticamente distinto de 0. |
Top 2 untested high-EV experiments (Backtest)
- CPCV + block bootstrap sobre V66 R110. Separar "alpha real" de "alpha en secuencia afortunada". Experimento más barato con mayor poder de invalidación.
- Slippage stress condicionado por régimen + funding perp. Revelar si el +70k% sobrevive a fricción realista.
5. Reglas Entry/Exit
5.1 Entry filter
| Campo |
Valor |
| Canónico |
GRU ≥ 3/5 votos + DRSI ≤ 78 + cooldown finalizado |
| Trader view |
En bear los 5 GRUs votan correlacionados — "5 modelos" en práctica son 1. |
| Hipótesis |
Medir correlación errores entre 5 GRUs por régimen; si ρ>0.7 ⇒ ensemble redundante, sustituir 2 por modelos heterogéneos. |
5.2 Always-invested vs selective
- Canónico: always-invested (V66). Selective probado en R135 → -75% compound
- Trader view: en BTC con drift positivo, estar fuera tiene costo asimétrico. Selective falló porque perdió las colas derechas.
- Hipótesis: selective SOLO en regime=bear, always-invested en bull/lateral.
5.3 Exit cascade priority
- Canónico: init_sl → trail → DRSI>78 → GRU danger → peak_drop
- Trader view: orden lógico pero DRSI>78 antes de GRU danger asume momentum extremo es mejor predictor — discutible.
- Hipótesis: A/B test reordenando GRU danger ANTES de DRSI. Esperaría +5-10% compound si GRU captura turning points que DRSI ignora.
5.4 Initial stop loss
| Campo |
Valor |
| Canónico |
Fijo 10% |
| Alternativas |
k·ATR(14), swing low estructural, vol-adjusted |
| Trader view |
10% fijo es ingenuo en asset cuya σ pasó de 40% a 120%. |
| Hipótesis |
SL = max(2·ATR_60, swing_low_20). Esperaría -20% DD sin sacrificar >5% compound. |
5.5 Trail logic
- Canónico: ratchet 3 niveles, triggers en +18% (pt1) y +24% (pt2) unrealized
- Trader view: niveles demasiado altos para lateral, demasiado bajos para parabolic bull.
- Hipótesis: triggers escalados por ATR régimen-dependiente. +10% compound en folds 2-3.
5.6 DRSI threshold
- Canónico: 78
- Trader view: 78 captura overbought clásico. En bull parabólico DRSI vive en 80-90 — salir en 78 es mata-ganadores.
- Hipótesis: DRSI dinámico — 75 lateral, 82 bull confirmado, 70 bear.
5.7 Peak-drop
- Canónico: drop relativo desde peak de avg_tp_bar
- Trader view: salir por peak-drop es profit-locker sano. Pero usar avg_tp_bar acopla exit a model drift.
- Hipótesis: peak_drop sobre price puro (Chandelier exit clásico, 3·ATR desde peak close).
5.8 Regime detection
- Canónico: daily SMA slope
- Alternativas: HMM 3-estado, change-point (PELT), ATR regime, realized vol percentile
- Trader view: SMA slope lagging. Failure mode: switching tardío 2022 enero perdió oportunidad proteger capital.
- Hipótesis: ensemble régimen = vote(SMA_slope, HMM, ATR_pctile).
5.9 Cooldown
- Canónico: 4 bars normal, 48 bars post-loss
- Trader view: 48 post-loss es excelente anti-revenge-trading. 4 normal puede ser corto en alta vol.
- Hipótesis: cooldown dinámico = max(4, k·ATR_pct/ATR_baseline).
5.10 Pyramiding
- Estado: NO implementado
- Trader view: pyramiding en trends fuertes es el secreto de los CTAs. En BTC con bulls parabólicos, no piramidar deja 30-50% sobre la mesa.
- Hipótesis: añadir 50% size en +10% unrealized + GRU re-confirma.
Top 2 untested high-EV experiments (Entry/Exit)
- ATR-adaptive stops + ATR-scaled trail triggers: reemplazar 10% fijo y pt1/pt2 fijos por k·ATR percentilizado. Impacta los 4 folds simultáneamente.
- Pyramiding 1.5x en breakouts confirmados (GRU re-vote + ruptura de máximo 20-bar): capturar fat tail de bulls 2020/2024 que sizing fijo desperdicia.
6. Portfolio & Risk Management
6.1 Single vs portfolio
- Canónico actual: V66 solo en producción. R138/139 = V66 + MACD divergence en R&D
- Trader view: un solo edge = un solo punto de falla. R134 τ=0.3 +173k compound es seductor pero recuerda label-leak en classifier.
- Hipótesis: validar R134 con forward-label antes de bet operacional.
6.2 Allocation policy
| Política |
Pros |
Contras |
| Fixed-weight 50/50 (R138) |
Simple, sin overfitting |
Ignora régimen, sub-óptimo |
| Daily classifier (R139) |
Adaptativo a régimen |
Riesgo de leak |
| HRP / risk-parity |
Robust, no necesita Σ⁻¹ |
Asume estabilidad correlación |
| Vol-targeting por sleeve |
Suaviza DD |
Bajo compound en bull |
- Hipótesis: HRP sobre 60d rolling, rebalance semanal. Baseline a batir = R138 fixed-weight.
6.3 Número de sleeves
- Canónico: 2 (V66 + MACD div)
- Trader view: 2 sleeves con ρ probablemente >0.5 ≠ diversificación real. Necesitas estilos ortogonales: trend-following (V66), mean-reversion (RSI extremes), carry (funding arb), event (post-FOMC).
- Hipótesis: añadir sleeve mean-reversion 4H + sleeve breakout daily. Si correlación promedio cae <0.3 ⇒ diversificación efectiva.
6.4 Max drawdown stop-out
- Estado: NO implementado
- Trader view: gap crítico. Sin circuit breaker, un fallo de modelo puede comer el book. Estándar institucional: kill-switch en -25%.
- Hipótesis: pausa de 30 días tras DD -20%, reset tras 10 días en breakeven.
6.5 Hedging
- Canónico: straight exit
- Alternativa: short perp BTC en danger signal
- Trader view: hedge vs exit es trade-off: hedge mantiene tax-deferral y evita re-entry slippage, pero paga funding.
- Hipótesis: hedge 50% de posición en danger signal, hedge OFF al re-entry.
6.6 Multi-asset
- Estado: solo BTC
- Trader view: ETH ofrece ρ~0.85 (poca diversificación) pero beta ~1.2 (más jugo). SOL agrega cola izquierda (-95% 2022).
- Hipótesis: V66 entrenado per-asset (BTC/ETH/SOL), pesos invertidos a vol.
6.7 Capital allocation across timescales
- Estado: solo swing (15min)
- Trader view: diversificar por timescale es la frontera más limpia. Scalper (1min, ρ→0 con swing), swing (15min, V66), position (daily HODL filtrado).
- Hipótesis: añadir position sleeve simple = HODL filtrado por SMA(200d) > 0. Esperaría +0.2 Sharpe portfolio con cero coste operacional.
Top 2 untested high-EV experiments (Portfolio)
- Max-DD circuit breaker (-20% pausa 30d): protección de cola sin sacrificar α en condiciones normales. Seguro más barato del proyecto.
- HRP sobre 4 sleeves: V66 trend + MACD div + mean-reversion 4H + HODL filtrado: única configuración con verdadera diversificación de estilo y timescale.
7. Validación & Reproducibilidad
7.1 Walk-forward scheme
- Canónico: Expanding window, 4 folds.
- Riesgo: 4 folds → CoV across folds es high-variance; un mal fold (COVID 2020) domina summary.
- Hipótesis: R110 V66 a 6 y 10 folds. Si alpha CoV se colapsa en 10 ⇒ hemos sido over-confident en medias de 4-fold.
7.2 Purging
- Canónico: Drop last
label_window bars de train para que labels no peek en test.
- Riesgo: Triple-barrier con 24h horizonte → 288 bars de leak por fold boundary. R121b war story: labels con leak inflaron recall a 80%+; R134 forward-labels mostró real 15-49%.
- Hipótesis: Extender purging a regressor sleeves (V66 incluido).
7.3 Embargo (López de Prado)
- Canónico: Después de purge, añadir embargo gap (~1% de test length) para absorber serial correlation.
- Estado: NO CHECKED. Purgamos pero no embargamos.
- Hipótesis: Añadir 0.01 × len(test) embargo. Si classifier alpha cae >10% ⇒ leak de autocorrelación oculto.
7.4 Combinatorial Purged CV
- Estado: NO CHECKED
- Riesgo: 4 walk-forward paths → CI amplio sobre alpha; no distinguible seed afortunada de edge real.
- Hipótesis: CPCV sobre V66 + R134 classifier. Top-2 untested improvement.
7.5 Multi-seed stability
- Canónico: ≥5 seeds; threshold CoV < 0.5 para "stable".
- Riesgo: Cherry-picked seed = unfalsifiable result. R110 vivió en esta danger zone hasta R136 reprodujo en Hetzner CPU.
- Hipótesis: Apretar threshold a CoV < 0.3 para live-promotion candidates.
7.6 Bootstrap CI on alpha
- Estado: NO CHECKED
- Riesgo: Point estimates sin CI → no se puede tamañar confianza en decisión de promoción.
- Hipótesis: Añadir a verify_strategy(). Si V66 alpha CI lower bound < 0, deployment thesis débil.
7.7 Out-of-time hold-out
- Estado: NO CHECKED — hemos iterado en data completa 2017-2026.
- Riesgo: 130 rondas de iteración en misma data = implicit overfit a 2025-2026.
- Hipótesis: Declarar 2026-01-01 onwards frozen ahora. Score futuros V7 candidates en él exactamente una vez antes de live.
7.8 Reproducibility check
- Canónico: Mismo seed + mismo code + misma data = idéntico.
- Riesgo: R135 stackeó 4 simulator bugs precisamente porque nadie re-corrió R110 en máquina limpia por 6 meses.
- Hipótesis: "Golden run" trimestral — re-ejecutar R110 V66 en container fresco, diff métricas.
Top 2 untested high-EV improvements (Validación)
- Combinatorial Purged CV on V66: CI ajustado sobre alpha del sleeve desplegado. Coste: ~$5 RunPod. EV: confianza que V66 no es 4-fold lucky path.
- Frozen 2026 out-of-time hold-out + block bootstrap CI: gate más leverage-y antes de cualquier promoción V7.
8. MLOps & Deployment
8.1 Phase 0 gate
- Canónico: No strategy promotes sin pasar verify_strategy().
- Riesgo: R121b-class bugs llegan a paper trade.
- Hipótesis: Make Phase 0 a pre-commit hook on src/strategies/. Hard block.
8.2 Checkpoint versioning
- Canónico: Immutable path per (round, seed, fold).
- Riesgo: Re-running silenciosamente reemplaza pesos R110 → R136 reproduction imposible.
- Hipótesis: Añadir SHA256 de checkpoint a MODEL_COMPARISON.md row.
8.3 Live-vs-backtest daily diff
- Estado: NO CHECKED
- Riesgo: V66 alpha decae silenciosamente de +12% a 0 sin alerta.
- Hipótesis: Cron diario que ejecuta 100 bars históricos por live trader, diff predicciones vs backtest. Tripwire para drift.
8.4 Paper trade period
- Canónico: ≥60 días paper antes de $ live.
- Riesgo: Bugs ejecución/slippage/fees solo surgen en live order book.
- Hipótesis: Dashboard panel: live PnL acumulado vs backtest PnL en mismas bars. Auto-fail si drift >5%.
8.5 Drift detection
- Estado: NO CHECKED
- Hipótesis: Rolling 30-día live alpha vs R110 backtest expectation; alert en Z < -2.
8.6 Compute orchestration
- Canónico: RunPod A5000 + Hetzner CPU split (validado R141). ~$0.10 por GRU retrain.
- Hipótesis: Añadir per-experiment cost en ROUNDS_LOG.md. Visibilidad = disciplina.
8.7 Cost discipline
- Canónico: $3/$6 caps para autonomous loops; RunPod auto-pay OFF; $9.98 balance ceiling.
- Hipótesis: Cap-usage gauge en dashboard. Loop self-aborts at 80% cap.
Top 2 untested high-EV improvements (MLOps)
- Live-vs-backtest daily diff cron: gap MLOps más leverage-y. Habría capturado R135-class bugs en días, no meses. Coste: minutos de Hetzner CPU/día.
- CI-enforced Phase 0 gate: convierte verify_strategy() de advisory a blocking. Para R121b-class label leaks antes de paper trade.