5e6a974a5d
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 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 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0088e | Trading: capability group `strategy` + Strategy contract | pendiente | feature |
|
multi-app | alta | 2026-05-17 | 2026-05-17 |
0088e — Trading: capability group strategy + Strategy contract
Status: pendiente Created: 2026-05-14 Type: feature Parent: 0088 Depends: 0088a Blocks: 0088g, 0088h
Problema
No hay contrato de estrategia. Sin contrato cada estrategia se cablea distinto y backtester/live_runner no pueden tratarlas uniformemente. El contrato debe ser puro: entrada = market state + portfolio state + params; salida = lista de OrderIntent (no efectos).
Piezas
- Tipos del registry en
python/types/finance/:MarketSnapshot(OHLCV ventana + last_price + ts).PortfolioSnapshot(balance + positions).StrategyParams(dict tipado por estrategia, validado via JSON Schema).OrderIntent(lado, qty, instrument, kind=market/limit, price_limit, ttl, reason).
- Contrato Strategy (Python protocol):
Funcion pura. Sin I/O, sin random sin semilla, sin tiempo system.
def decide(market: MarketSnapshot, portfolio: PortfolioSnapshot, params: StrategyParams) -> list[OrderIntent] - Dos estrategias de referencia (puras):
strategy_sma_cross_py_finance(SMA rapida/lenta cross → entry/exit).strategy_rsi_meanrev_py_finance(RSI < 30 → long, > 70 → short con caps).
- Funcion
validate_strategy_output_py_finance(intents, portfolio, params)que aplica sanity (qty>0, instrumento valido, no oversize) antes de pasar a risk. - Tag
strategy. Pagina madredocs/capabilities/strategy.mdcon ejemplo canonico end-to-end (snapshot fake → decide → list[intent]). - Tests deterministicos: dado snapshot fijado,
decideretorna lo esperado.
Aceptacion
mcp__registry__fn_search query="" tag="strategy"devuelve interface + >= 2 estrategias.- Tests pasan en
go test/pytest. - Estrategias son puras:
purity: pureen frontmatter; sin imports impuros.
No-objetivos
- Estrategias optimizadas, backtest report (sale a 0088g), parametrizacion via UI (analysis/strategy_lab futuro).