Positions Ledger
Two surfaces for tracking deployed paper-trade positions:
1. Per-strategy folders (operational state)
Each strategy gets a positions/<strategy-slug>/ folder. Inside:
YYYY-MM-DD-initial-deploy.md— submission record, fills, slippageYYYY-MM-DD-rebalance.md— periodic rebalances (smart-money-mirror Q'ly on 13F cadence)YYYY-MM-DD-exit.md— closes (full or partial)
Files include: order IDs, share counts, fill prices, slippage vs reference, account snapshot pre/post-trade.
2. Attribution ledger (cross-cutting P&L source-of-truth)
_attribution-ledger.csv — flat ticker-by-strategy ledger. Source of truth for "of $X Alpaca P&L, $Y came from strategy A." Alpaca shows positions as one undifferentiated portfolio; this ledger tags each share by which strategy bought it and at what R-weight.
CSV columns:
date,strategy,ticker,target_R,target_notional_usdentry_shares,entry_price_usd,actual_notional_usd— filled post-executiondecision_page_url— link back to /decisions/ HQ page that gated this deploystatus—queued | pending-fill | filled | partially-exited | fully-exitedexit_date,exit_price_usd,exit_notional_usd— filled on closenotes— entry rationale, signal source, anything load-bearing
How attribution works at quarterly rollup
- Pull current Alpaca positions + cost basis.
- For each Alpaca position, look up matching CSV row(s) by ticker + entry_date.
- If the same ticker appears in multiple strategies (e.g., MSFT in smart-money-mirror only today, but could end up in another future strategy), split P&L pro-rata by entry-notional contribution.
- Roll up by
strategyto get strategy-level P&L. Roll up by RDCO thesis bucket (memory / power / AI-infra / hyperscaler / etc.) via the strategy → bucket mapping.
The quarterly rollup script lives at ~/.claude/scripts/attribution-rollup.py (built when first needed).
Edge cases
- Same ticker bought twice by different strategies: separate ledger rows, separate
actual_notional_usd. Alpaca aggregates the shares; the ledger tracks the source. Pro-rata exits by entry-notional. - Fractional-share adjustments: when a top-up brings a previously integer-share position to its target notional, append a new row (same ticker, same strategy, new entry_date for the fractional addition) rather than mutating the original row.
- Strategy supersedes another (e.g. power-v1 -> power-v1.1): mark the v1 rows as
supersededinnotesbut DON'T delete; the historical attribution stays intact.
Active strategies
| Strategy | Bucket | Spec | Initial deploy |
|---|---|---|---|
smart-money-mirror-v1 |
hyperscaler + AI-infra + memory (multi-bucket; smart-money signal IS the entry trigger) | strategies/2026-05-18-smart-money-mirror-v1.md |
2026-05-18, 6 tickers, ~$13.2k OPG integer (pending fractional top-up) |
power-cycle-v1.1 |
power | theses/2026-05-18-power-cycle-v1.1.md |
2026-05-18, 5 tickers (GEV/TLN/VST/CEG/CCJ), $20k fractional notional DAY market |
Exited strategies
(none)
Related
- [[../strategies/]] — strategy spec files
- [[../theses/]] — thesis spec files
- [[_attribution-ledger.csv]] — the cross-cutting ledger
- [[../README.md]] — investing project README