Files
fn_registry/dev/issues/0088e-trading-strategy-capability-group.md

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
trading
meta
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

  1. 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).
  2. Contrato Strategy (Python protocol):
    def decide(market: MarketSnapshot, portfolio: PortfolioSnapshot, params: StrategyParams) -> list[OrderIntent]
    
    Funcion pura. Sin I/O, sin random sin semilla, sin tiempo system.
  3. 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).
  4. Funcion validate_strategy_output_py_finance(intents, portfolio, params) que aplica sanity (qty>0, instrumento valido, no oversize) antes de pasar a risk.
  5. Tag strategy. Pagina madre docs/capabilities/strategy.md con ejemplo canonico end-to-end (snapshot fake → decide → list[intent]).
  6. Tests deterministicos: dado snapshot fijado, decide retorna lo esperado.

Aceptacion

  • mcp__registry__fn_search query="" tag="strategy" devuelve interface + >= 2 estrategias.
  • Tests pasan en go test/pytest.
  • Estrategias son puras: purity: pure en frontmatter; sin imports impuros.

No-objetivos

  • Estrategias optimizadas, backtest report (sale a 0088g), parametrizacion via UI (analysis/strategy_lab futuro).