Back to Arena
Cumulus + Tradier Automated Options Purchasing and Selling
Executive operating model for how Cumulus identifies a boss target, executes a controlled
buy_to_open, and enforces layered exits via broker OCO and redundant sweeper logic.
Signal engine:
options_engine.py
Entry trader: trade_boss_target_cli.py
Exit sweeper: manage_open_positions_cli.py
Broker API: Tradier
Window: 09:35-15:55 ET weekdays
Primary Selection Unit
Boss Target (Top 1)
Entry Order Type
Limit Buy To Open
Default Exit Triggers
TP 30% / SL 25% / Max Hold
State + Audit
JSON state + JSONL trades log
Dynamic Scenario View
Adjust controls to see how the operating path changes in practice.
Execution Path Diagram
Dynamic route map by scenarioSignal and Risk Funnel
How a contract becomes the boss targetHow Purchasing Works
- Snapshot generation: Cumulus scans universe contracts and ranks by score.
- Boss target selection: top-ranked pick (
picks[0]) becomes entry candidate. - Health + history gate: stale snapshot, aged data, or empty history can block entry.
- Tradier guardrails: cash-account check, live quote check, spread and notional checks.
- Order submit: limit
buy_to_openwith polling and timeout handling. - State commit: persist pending/open position and append JSONL audit event.
How Selling Works
- Primary path: broker OCO submits paired TP and stop
sell_to_closelegs. - Fallback path: in-process monitor checks quote ticks and triggers TP/SL/max-hold.
- Redundancy path: sweeper script scans all open options and exits by same rules.
- Fill verification: all exits poll order status until filled, failed, or timeout.
- PnL accounting: realized PnL updates daily state with per-contract fee deduction.
- Resilience: pending-entry recovery on restart prevents duplicate new entries.
Control Tower Matrix
| Control | Intent | Implementation | Failure Response |
|---|---|---|---|
| Market-hours gate | Only trade during liquidity window | run_boss_target_cycle.sh and manage_open_positions_cli.py |
Skip cycle |
| Cash-account safeguard | Block margin-risk entry behavior | TradierClient.assert_cash_account() |
Hard fail |
| Snapshot freshness + health | Avoid stale/empty signal sets | _snapshot_health_violations() |
Trade blocked (rc=2) |
| Entry risk gates | Bound confidence, spread, notional, daily loss | _risk_violations() |
Trade blocked (rc=2) |
| Exit redundancy | Multiple independent sell paths | OCO + optional monitor + sweeper | Continue with alternate path |
| Recovery state | Crash-safe reconciliation | .cumulus_state/trading/state.json |
Recover / avoid duplicate entry |
Educational operating overview. Not investment advice.