== Pass 1: opening trades == OK NOK classified: got 'CSP' OK AMD classified: got 'VERTICAL' OK AMD capital_at_risk (cents): got 30130 OK AMD max_profit (cents): got 69870 OK SPY classified: got 'IRON_CONDOR' OK SPY capital_at_risk (cents, $5 wings): got 30000 OK SPY max_profit (cents): got 20000 OK PLTR classified: got 'STRANGLE' OK AAPL classified: got 'CALENDAR' OK AAPL capital_at_risk (cents debit): got 30000 == Pass 2: NOK assignment + AMD close == OK NOK status after assignment: got 'assigned' OK NOK realized_pl (cents, premium kept): got 4500 OK AMD status after close: got 'closed' OK AMD realized_pl (cents): got 19740 OK Wheel cycle count: got 1 OK Wheel cycle rotations after CSP assignment: got 1 OK Wheel adjusted_basis (cents/share): got 855 == Pass 3: NOK covered call opened mid-wheel == OK Wheel rotations after CC opened: got 2 OK Wheel premium collected so far (cents): got 7500 OK Wheel still active: got 'active' == Pass 4: NOK covered call assigned (cycle completes) == OK Wheel status after CC assignment: got 'completed' OK Wheel total_pl (cents) = 45 + 30 + (10-9)*100: got 17500 == Journal stats == { "closed_trades": 3, "win_rate": 1, "avg_return_pct": 35.26, "avg_duration_days": 30.3, "profit_factor": null, "sharpe": 0.824, "sortino": null } OK Closed trades counted: got 3 [ { "strategy": "CC", "label": "Covered Call", "trades": 1, "win_rate": 1, "avg_roc_pct": null }, { "strategy": "CSP", "label": "Cash-Secured Put", "trades": 1, "win_rate": 1, "avg_roc_pct": 5 }, { "strategy": "VERTICAL", "label": "Vertical Spread", "trades": 1, "win_rate": 1, "avg_roc_pct": 65.52 } ] == SchwabClient::normalizeTransaction adapter sanity check == { "broker_execution_id": "999888777", "broker_order_id": "20260901-01", "executed_at": "2026-09-01 14:32:00", "underlying_symbol": "HPE", "instrument_type": "option", "option_type": "put", "strike": 25, "expiration": "2026-10-16", "action": "sell_to_open", "quantity": 1, "price": 0.55, "fees": 0.02, "commission": 0.65 } OK Adapter produced a CSP-shaped record: got 'sell_to_open' ALL CHECKS PASSED