# Position sizing

> How many spreads a trade gets: a whole-number division of the per-trade risk budget by the spread's known max loss, then scaled down by the VIX regime and capped across the whole book.

![image](https://zmscvxdouuytwoutqtfa.supabase.co/storage/v1/object/public/docs-media/d37a8be8-576a-493a-a96d-4962535b5180.jpg)
Every spread has a known maximum loss before it is sent — `(strike width −
credit) × 100` per contract. Sizing is just: how many of those fit inside the
risk budget?

## The base calculation

The per-trade budget is `risk.max_risk_per_trade_pct_of_equity` percent of
account equity — **2%**, the upper bound of a conventional 1–2% band, used as a
hard cap. The quantity is a floor division:

```
cap      = equity × 2%
quantity = floor(cap ÷ max_loss_per_spread)
```

Whole spreads only. If even one spread would break the cap — or equity or max
loss is unusable — the quantity is **0** and the cycle logs a no-trade instead
of sending a fractional or oversized order.

## The VIX regime taper (R9)

Before that division, the budget is scaled by a multiplier read off the VIX's
own 1-year percentile. Full size at or above the 25th percentile; a straight
line down to a **0.5×** floor at the 3rd percentile; **strictly below the 3rd
percentile, no new entry at all** (a logged R9 rejection). This is complacency
insurance: a very low VIX is a weak timing signal, so the response is a smaller
trade, not a market call — except in the extreme tail, where it is a hard stop.
The tapered budget is what the division above uses, so a deep-enough taper can
by itself take the quantity to 0.

## The aggregate cap (R11)

A second, account-level gate: the summed max loss of all open spreads, plus this
candidate's max loss, must stay within `risk.max_aggregate_risk_pct_of_equity`
— **6%** of equity, twice the 3% daily-drawdown stop. SPY and QQQ move together
(~0.95 correlated), so the book is treated as one directional short-volatility
bet, not a diversified set. Past the cap, the entry is rejected until open risk
comes down.

## A worked example

Equity **$100,000**. A 5-wide SPY put spread measured at **$1.20** credit:

- **Max loss per spread** = (5 − 1.20) × 100 = **$380**.
- **Base budget** = 2% × $100,000 = **$2,000** → floor(2000 ÷ 380) = **5
  spreads**, combined max loss **$1,900** (1.9% of equity).
- **VIX taper.** With the VIX 1-year percentile near 4 — roughly where it sat
  when the taper went live — the multiplier is about **0.52**. Budget becomes
  $1,040 → floor(1040 ÷ 380) = **2 spreads**, combined max loss **$760**.
- **Aggregate cap.** If $900 is already at risk across an open QQQ spread,
  projected book risk is $1,660, well inside the $6,000 cap — the trade clears.
  If instead $5,400 were already at risk, the projection is $6,160, past the
  cap: an R11 rejection, no new entry.

Every one of these numbers is written to the decision log, whether the trade
went out or not.
