fad4006f60
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags
| id | title | status | type | domain | scope | priority | depends | blocks | related | created | updated | tags | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0088g | Trading: app `backtester` | pendiente | feature |
|
app-scoped | alta | 2026-05-17 | 2026-05-17 |
0088g — Trading: app backtester
Status: pendiente Created: 2026-05-14 Type: feature Parent: 0088 Depends: 0088b, 0088c, 0088d, 0088e, 0088f Blocks: 0088h (activar live solo tras backtest verde + paper estable)
Problema
Necesitamos un backtest harness deterministico que corra una Strategy contra OHLCV historico, aplique el mismo pipeline de risk que en live, simule fills via broker_paper, y produzca un reporte estandarizado. Sin este harness, no hay forma de comparar estrategias ni de validar que sharpe_backtest ≈ sharpe_live.
Piezas
- App
projects/trading/apps/backtester/(CLI + opcional web). - Pipeline canonico:
load_ohlcv → loop ticks → Strategy.decide → apply_risk → broker_paper → ledger → siguiente. - Reporte deterministico (JSON + markdown) con:
- Total return, CAGR, sharpe, sortino, max drawdown, calmar, win-rate, avg win/loss, exposure %.
- Equity curve (lista timestamp, equity).
- Tabla de trades con
client_order_id.
- CLI:
./fn run backtester --strategy <id> --params params.yaml --symbol BTCUSDT --interval 1h --from 2024-01-01 --to 2024-12-31.
- Determinismo: misma semilla, mismos datos, mismo reporte byte-a-byte.
e2e_checks:build,smoke(corre backtest dummy 100 velas).determinism: 2 corridas idem producen mismo hash de reporte.
- Reuso obligatorio: cada paso es funcion del registry (no inline en la app).
Aceptacion
- Reporte hash-estable entre corridas con misma seed.
- 2 strategies de referencia (0088e) corren contra >= 1 simbolo y producen reporte completo.
- Reporte importable desde
analysis/strategy_labpara comparar estrategias.
No-objetivos
- Optimizacion de parametros (grid search, bayesian) — saldria a sub-issue futuro.
- Walk-forward / cross-validation — futuro.
- UI rica de reporte — primero CLI + markdown.