Playbook · August 24, 2026

Capital Allocation & Tax Playbook — Raj (account 476549654)

Capital Allocation & Tax Playbook — Raj (account 476549654)

Status: Capstone playbook — consolidates the vibe-dashboard project into one
actionable, philosophy-aligned operating document.
Source of truth: real data in /workspace/vibe-dashboard/data/ and the docs
under docs/, analysis/, recommendations/, refresh/, alert/, schedule/.
Nature: Read-only planning aid. No orders are placed by this project. Not tax
or investment advice — confirm with a qualified tax professional before executing.


1. The Philosophy

**Label: *inferred* from positions, realized behavior, and the structures the
account actually holds — not a stated mandate.** Read it as the operating thesis
the data implies, and revisit it whenever it stops matching reality.

The book behaves as if it is run on four convictions:

  1. Concentrated, high-conviction mega-cap / AI-adjacent tech. The equity and

option sleeves are dominated by a small number of strongly-held names:
HOOD (largest single winner, +$82.7k LT), TSLA (largest option delta), NVDA,
AMZN, NBIS, GOOGL. This is a conviction portfolio, not a diversified one —
the user accepts single-name concentration in exchange for outsized upside.

  1. Defined-risk options as the risk layer. Almost all option risk is carried as

paired long+short structures (LEAPs collared by short calls / same-expiry
verticals) on long 2027-01-15 and 2028-01-21 expiries — a deliberate choice to
express a view while capping catastrophic downside. UUUU (net long) and TSLL
(net short) are the one-sided wings.

  1. Aggressive tax-loss harvesting. The account actively *manufactures* value

from the tax code — it holds high unrealized gains but is disciplined about
banking short-term and long-term losses (CRWV, TSLL) to offset those gains 1:1,
and about the wash-sale rules that could silently void a harvest.

  1. Bias to hold winners long-term. HOOD is +326% and *still 100% unrealized*;

NBIS +170%, NVDA +98%. The user defers gain recognition and only trims at
laddered targets (15% first rung, +40% next rung) rather than cashing out.

Why the numbers matter: this is a tax extreme-sports account. The single
biggest lever on after-tax returns is *not* picking winners — it is deciding
what gain to realize, when, and covered by what loss.


2. Portfolio at a glance

Data-driven (lot-based) snapshot, 2026-08-21 close equity prices, options per
options_exposure.json:

SleeveValueNotes
Equity (lot-based)~$286.7kconcentration.json equity total $286,680.65. (Live-mark estimate in the brief is higher at ~$402k; lot-based book is the conservative, internally-consistent figure.)
Options~$105k22 contracts, ~$16.6M gross notional, 8 underlyings. Mostly long LEAP pairs.
Crypto~$17k~$16.9k per the portfolio brief.
Cash / buying power~$1.5k / ~$862kDry powder is largely un-deployed.

Concentration (combined equity + option delta, % of real exposure):

NameCombined %Reading
HOOD~32.2% (equity-only; no options)Largest single name. All gain, all long-term.
TSLA~21.8% (largely via net-long options, +200 delta shares)~$72.6k delta notional. True upside expressway.
TSLL~16.9% equity (2x TSLA ETF) minus a net-short option wing~$58.7k of equity exposure to a 2x ETF.

Together HOOD + TSLA + TSLL ≈ ~71% of real exposure to three correlated ideas
(brokerage/crypto, and TSLA twice). This is the concentration to be honest about:
it is the source of the gains *and* the source of the risk.

Realized PnL window (data/realized_pnl_history.json, 3-month window to
2026-08-24): total −$1,723.66 across 92 trades, by month:

  • 2026-05: −$1,514.94 (2 trades)
  • 2026-06: −$9,927.53 (9 trades) — deepest loss month
  • 2026-07: +$2,698.27 (8 trades)
  • 2026-08: +$7,020.54 (10 trades) — best month

Historic long-run realized +$70,260 (2024 +$67.8k, 2025 +$570, 2026 +$1.9k):
2024 already banked large gains, so this year's realized losses are the offset fuel.


3. The Tax Engine

The account's edge is converting unrealized losses into a dollar-for-dollar
shield on gains, executed on a clean path with strict wash-sale discipline.

3.1 The harvestable-loss stack (data, 2026-08-21 close)

TickerHarvestable lossTermWash-sale re-entry window
CRWV~$5,753 ST100% short-term (all 6 lots)cleanest — no CRWV buy in prior 30d; stay out until 2026-09-23
TSLL~$9,108−$960 ST + −$8,148 LT (sell *only* the losing lots)binding — leveraged 2x TSLA ETF; do not rebuy TSLL (or a "substantially identical" proxy) in the 30-day window
UI / VG / TSLA / SPCX / TTWO~$70 combinedimmaterialdo not harvest — not worth friction or wash risk

Total harvestable ≈ ~$14.9k (CRWV −5,753 + TSLL −9,108).

3.2 How it offsets the gains (Schedule D, 1:1)

  • Every $1 of harvested loss cancels $1 of realized gain — the offset portion

owes $0 tax.

  • Bucket matching: ST losses first offset ST gains (CRWV's ST loss zeroes out

NBIS's ~$11.5k ST gain); LT losses offset LT gains (TSLL's LT loss offsets HOOD's
LT gain). Prioritize the ST loss — ST gains would otherwise be taxed at ordinary
rates.

  • Paired with a same-year trim of ~$10–20k of HOOD/NBIS gains, the ~$14.9k of

losses makes the covered gains tax-free. Up to $3k/yr of unused loss
reduces ordinary income (≈ $720–$960 at a ~24–32% rate).

3.3 Wash-sale rules to respect

  • The 30-day window applies on both sides of the sale (bought within 30 days

*before* or *after*).

  • CRWV: stay out of CRWV until 2026-09-23 (driven by wash_sale_risk.json).
  • TSLL: binding — sharp risk of an auto-rebuy / DRIP / greedy re-entry

voiding the biggest lot. A leveraged ETF with TSLA exposure is NOT substantially
identical to plain TSLA equity; if you must keep the view, use a *clearly
different* security (e.g. TSLA directly) and confirm the nuance with an advisor.

  • **Do NOT realize large LT gains (HOOD trim) without also realizing the losses in

the same tax year.**

3.4 Realized-PnL tracking

data/realized_pnl_history.json is the dashboard's audit trail of realized
gains/losses month over month (above), and realized_pnl_view.html renders it.
Use it to confirm a harvest actually landed before re-entering.


4. The Option Layer

4.1 Net exposures (from options_exposure.json / concentration.json)

UnderlyingNet contracts~Delta sharesSideRead
TSLA+2+200net longunpaired deep-ITM LEAPs carry genuine upside (~$72.6k delta notional)
UUUU+3+300net longpure long call/LEAP book; 2026-10-16 leg expires soonest on the sheet
AMZN−1−100net short12×12 paired LEAPs are flat; the extra naked short at 2027-01-15 rides as a cap (~$25.9k short delta)
TSLL−2−200net shorttwo naked short calls, pure premium collection with uncapped upside risk
NVDA / GOOGL / INTU / NBIS00flatfully paired same-expiry verticals/synthetics

4.2 The machine — defined-risk, paired

The dominant pattern is a long LEAP collar / same-expiry vertical: pay premium
on a deep-ITM long call, collect premium on a short call, cap the upside, cushion
the downside, all inside one expiration. This is how the account goes *long big
names at defined risk*. Manage each pair as one unit — closing only the short
leg of a pair and leaving the long to run risks early assignment into naked short
stock.

4.3 Tax treatment

  • These are equity options — Section 1256 does NOT apply. No 60/40 split, no

mark-to-market.

  • Each position realises gain/loss at sale, exercise, assignment, or expiry,

characterized short-term or long-term purely by holding period (open
≤ 1 yr = ST, > 1 yr = LT).

  • Long LEAPs held > 1 yr qualify for LTCG rates — the 2028-01-21 LEAPs (INTU,

AMZN 12×12) clearly qualify if held through expiry; NVDA long crosses LTCG on
2026-12-09 and NBIS long already is LTCG-eligible.

  • Short legs and most 2027-01-15 expiries opened in 2026 default to

short-term treatment (nets at ordinary rates with no LTCG benefit).

  • Do not harvest an option loss if it washes or nets against a paired long you

want LTCG on — time any loss-harvest so it does not straddle the paired long's
LTCG eligibility.


5. The Operating Rhythm

A repeatable weekly cadence (plus a daily check). Run from inside
/workspace/vibe-dashboard/. All read-only.

Weekly (e.g. Sunday, or after Friday close)

  1. Refresh data

```bash
# refresh uses the workspace venv + LD_LIBRARY_PATH (set by run_tax_snapshot.sh)
/workspace/.vibetrading-venv/bin/python /workspace/vibe-dashboard/refresh/refresh_data.py
/workspace/.vibetrading-venv/bin/python /workspace/vibe-dashboard/refresh/update_prices.py
```
Re-pulls per-lot tax lots, option positions, and live equity/option quotes
into data/. (update_prices.py already calls get_option_quotes and writes
both live_prices.json and prices.json.)

  1. Validate

```bash
/workspace/.vibetrading-venv/bin/python /workspace/vibe-dashboard/refresh/validate.py
```
Prints VALID + totals; exit 0 = OK.

  1. Take a snapshot

```bash
/workspace/vibe-dashboard/run_tax_snapshot.sh
```
Writes data/snapshots/<TS>.md, rebuilds INDEX, prunes > 90 days. Idempotent.

  1. Check alerts

```bash
/workspace/.vibetrading-venv/bin/python /workspace/vibe-dashboard/alert/check_alerts.py
```
Flags > ±8% moves, profit-target overshoots (+40%), and **wash-sale
'safe to re-enter'** dates. No log spam (only appends when something triggers).

  1. Review the harvest list + profit ladder

- recommendations/harvest_trade_list.csv — the exact lots to sell.
- recommendations/equity_harvest_plan.md — CRWV + TSLL losing lots.
- recommendations/profit_taking_ladder.md — HOOD/NBIS/AMZN/VG/NVDA trim rungs.
- data/wash_sale_risk.json — current re-entry windows.

  1. Decision gate: are there unrealized losses to bank? Are any gains *covered*

by harvested losses this year? Only then consider a same-year trim.

Daily / on-schedule

The schedule/ daemon captures a snapshot automatically (default once daily):
```bash
/workspace/vibe-dashboard/schedule/status_schedule.sh # check running
/workspace/vibe-dashboard/schedule/stop_schedule.sh # pause
/workspace/vibe-dashboard/schedule/start_schedule.sh # (re)start
```

Golden rule that unifies the rhythm: *Never realize a gain you cannot
shield.* Every trim is only worth doing in a year where the equivalent loss has
already been banked — and neither CRWV nor TSLL may be re-bought inside its
30-day wash window.

6. Recommended next improvements

Concrete, ordered by impact-to-effort, all building on what already exists:

  1. Hook alert/check_alerts.py into the daily daemon (or a Hermes cron).

check_alerts.py already emits wash-sale re-entry, >8% move, and profit-target
alerts to data/alerts.log and exits 0 (safe for schedulers). Wire it into
schedule/daemon.py after each snapshot, or register it as a Hermes cron, so
re-entry windows are caught without manual runs. Add an email/push notify when
an alert line lands.

  1. Render the new JSON widgets in dashboard.html. The data for

concentration.json, realized_pnl_history.json, options_exposure.json,
wash_sale_risk.json, and profit_targets.json all exists but is only shown
in index.html/realized_pnl_view.html. Add panels for combined concentration,
wash-sale re-entry dates, and realized-PnL by month to the main dashboard.

  1. Add a wash-sale "safe to re-enter" banner. check_alerts.py and

wash_sale_risk.json already compute re-entry dates; surface a green/red banner
per harvested ticker ("SAFE to re-enter 2026-09-23" vs "WASH — do not rebuy") in
the dashboard so the #1 way to break the plan (a greedy re-entry) is optically
obvious.

  1. Value the options sleeve at market. update_prices.py already fetches

get_option_quotes into live_prices.json['options']; wire that into the
dashboard to show current mark-to-market on the ~$105k options book instead of
entry-premium cost only.

  1. Add a price-alert channel (beyond the local log). Route alerts.log

entries to a push destination (Telegram/email/webhook) so a break of a
position or a wash-window crossing notifies the user without opening the box.

  1. Document point-in-time pricing. Prices default to 2026-08-21 close; add

an explicit "as-of" note across dashboard/HTML/docs so stale figures are never
mistaken for live marks, and a quick "run refresh → validate → snapshot" smoke
check for a new operator.


Appendix — project map (how to find the source files)

  • Data: data/equity_tax_lots.json, options_data.json, live_prices.json,

concentration.json, options_exposure.json, wash_sale_risk.json,
profit_targets.json, realized_pnl_history.json, PORTFOLIO_BRIEF.md.

  • Analysis: analysis/position_theses.md, analysis/wash_sale_tracker.md,

analysis/options_exposure.md, analysis/concentration_risk.md.

  • Recommendations: recommendations/equity_harvest_plan.md,

recommendations/options_strategy.md, recommendations/profit_taking_ladder.md,
recommendations/harvest_trade_list.{md,csv}.

  • Automation: refresh/refresh_data.py, refresh/update_prices.py,

refresh/validate.py, alert/check_alerts.py, run_tax_snapshot.sh,
tax_snapshot.py, schedule/{daemon.py,start,stop,status}.sh.

  • View: dashboard.html, index.html, realized_pnl_view.html — served at

https://tax.raj-trades.bhaiya.keiretsu.top and http://127.0.0.1:8899.

  • Docs: docs/README.md, docs/TAX_METHODOLOGY.md, docs/ROBINHOOD_MCP_DATA.md.

*This playbook is a consolidation of a read-only tax-optimization project for a
single brokerage account. It is informational only — not tax, investment, or
financial advice, and no orders are ever placed by this project. Tax rules
(wash-sale, holding periods, the $3k offset cap, state taxes, NIIT) are complex and
changing; verify every lot, price, and holding period against your broker's
year-end statement and a licensed tax professional before executing.*

Read-only research corpus mirror · insight layer only — nothing here executes a trade.
library-page.py