Files
fn_registry/dev/issues/0088c-trading-broker-interface-and-paper-adapter.md
T
egutierrez 212875ed0d chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

2.1 KiB

0088c — Trading: broker interface + adapter paper

Status: pendiente Created: 2026-05-14 Type: feature Parent: 0088 Depends: 0088a, 0088d (necesita ledger funcionando para reflejar fills) Blocks: 0088g, 0088h, 0088l (broker real)

Problema

No hay contrato comun broker. Sin contrato, cada broker se cablearia ad-hoc en cada app. El primer adapter debe ser paper — simula fills usando OHLCV + modelo de slippage simple — y debe ser totalmente intercambiable con un broker real bajo la misma interfaz.

Piezas

  1. Tipo Python BrokerInterface (protocolo / abstract class) con metodos minimos:
    • place_order(order: OrderIntent) -> OrderAck
    • cancel_order(client_order_id: str) -> None
    • get_positions() -> list[Position]
    • get_balance() -> Balance
    • stream_fills() -> Iterator[Fill]
  2. Tipos del registry: OrderIntent, OrderAck, Fill, Position, Balance en python/types/finance/.
  3. Funciones puras de soporte:
    • make_client_order_id_py_finance(strategy_id, intent_ts, intent_payload) -> str (idempotencia).
    • simulate_fill_paper_py_finance(intent, ohlcv_snapshot, slippage_model) -> Fill.
  4. Adapter broker_paper:
    • broker_paper_place_order_py_finance (impure: persiste intent + simula fill via OHLCV ultimo).
    • broker_paper_get_balance_py_finance (impure: lee ledger).
    • broker_paper_get_positions_py_finance (impure: lee ledger).
    • broker_paper_stream_fills_py_finance (impure: tail del ledger).
  5. Tag broker aplicado a interface + adapter functions. Pagina madre docs/capabilities/broker.md.

Aceptacion

  • Demo en analysis/strategy_lab (o test): place_order → fill → reconciliacion ledger → balance updated.
  • BrokerInterface implementable por un broker real sin tocar el codigo de la app que lo consume.
  • client_order_id deterministico: misma intent reproduce misma id (idempotencia comprobada).

No-objetivos

  • Adapters binance/IB/alpaca reales — sale a 0088l.
  • Order book matching realista (FIFO/queue position). El paper inicial usa slippage simple sobre OHLCV.