BTIG Option Retention Pattern
BTIG removes certain closed options from their P&L downloads, breaking ITD (Inception-to-Date) P&L continuity. This document explains the pattern and how Sable handles it.
The Problem
Options that were held historically can disappear from BTIG's PnL file after closing. When this happens, we lose track of the realized gains/losses on those positions, breaking ITD P&L calculations.
Retention Rules
After analyzing transaction patterns, the rule is:
| Scenario | BTIG Behavior |
|---|---|
| Any voluntary close (BTC, SEL, EXW) at any point | Retained in PnL |
| Only involuntary closes (ASB, AST, EXB, REO) | Removed from PnL |
Key Insight
BTIG tracks whether you ever actively traded out of a position. If you did any voluntary closing action (even partial), they keep the history. If the position was ONLY closed through assignment/exercise with no voluntary action, they drop it entirely.
Transaction Type Reference
Voluntary Closes (Position Retained)
| Code | Description |
|---|---|
BTC | Buy to Close - voluntarily closed short option |
SEL | Sell to Close - voluntarily closed long option |
EXW | Expired Worthless - let option expire |
Involuntary Closes (Position Removed if ONLY these)
| Code | Description |
|---|---|
ASB | Assigned Buy - put exercised against us |
AST | Assigned Transfer - option assigned |
EXB | Exercise Buy - we exercised the option |
REO | Reorganization - corporate action |
Example Scenarios
Retained: Mixed Close
2025-02-26: SSL (open) 40 contracts
2025-03-11: BTC (voluntary) 20 contracts ← voluntary close
2025-03-17: ASB (assigned) 18 contracts
2025-03-18: ASB (assigned) 2 contracts
Result: RETAINED (had voluntary close)
Removed: Only Assigned
2025-11-20: SSL (open) 30 contracts
2025-12-18: ASB (assigned) 30 contracts ← only involuntary
Result: REMOVED from PnL
Detection Tooling
SQL Function
SELECT * FROM sable.fn_disappeared_options();
Returns all options that existed historically but are missing from recent PnL data.
CLI Command
sable pnl disappeared --account AV7K
Options:
--date <date>- Reference date (default: latest)--account <code>- Filter by account--json- Output as JSON
Fill-Down Strategy
For disappeared options, Sable implements "fill-down" logic:
- Identify options with only involuntary closes
- Capture final
itd_total_pnlfrom last PnL appearance - Create synthetic rows with qty=0 carrying forward that P&L value
- Maintain ITD continuity for reporting
Current Statistics
As of January 2026:
- 45 disappeared options need fill-down (all had only involuntary closes)
- 547 retained closed options (qty=0 still in PnL)
- Accounts affected: AV7K (43), XPB006152 (2)
Related
- BTIG Files - File formats and processing
- Epic: Options Fill-Down for ITD P&L Continuity