Tuning: Sizing
Sizing decides how big each admitted trade gets. It is an Entry property — not a separate strategy — and it is a buyer dial: you may tune it for your own account and risk appetite even on a strategy you bought. Because it does not change what the strategy is, adjusting sizing does not go through the evidence gate.
Account-level caps that apply no matter which strategy is deployed — the Daily-Loss Breaker — live in the cockpit, not here.
Fractional Kelly
The default sizing method (also known as Kelly-criterion money management — a "sizer" in Backtrader's terms) sizes each position as a fraction of the theoretically-optimal Kelly bet, under the caps below. A smaller Kelly fraction is more conservative.
| Dial | Turning it up… | Range |
|---|---|---|
| Kelly Multiplier — kelly_multiplier | Sizes closer to full Kelly — more aggressive. Lowering it is more conservative | 0–1 |
| Kelly Gate Enabled — kelly_gate_enabled | Applies the Kelly gate to sizing | boolean |
| Allow Duplicate Positions — allow_duplicate_positions | Permits more than one position in the same market | boolean |
Full Kelly is famously aggressive and assumes your edge estimate is exactly right; most practitioners run a fraction of it precisely because the edge is uncertain. Start well below 1.
The caps
Sizing always sits under two hard caps. Both are expressed in cents, and both are runner dials — yours to set per account.
| Dial | Turning it up… | Range |
|---|---|---|
| Max Position Size — max_position_size | Allows a larger single position. Must stay ≤ Max Portfolio Exposure | ≥ 1 cent |
| Max Portfolio Exposure — max_portfolio_exposure | Allows more total exposure across all open positions at once | ≥ 1 cent |
The ordering rule (Max Position Size ≤ Max Portfolio Exposure) is enforced on save — a config that inverts them is rejected.
Two related throughput knobs shape how many candidates become trades: Max Signals Per Run (max_signals_per_run, ≥ 1) caps how many candidates the bot evaluates per loop, and Min Contracts Per Trade (min_contracts_per_trade, ≥ 1) sets the smallest position worth opening.
A different shape: fixed-cash ticket budget
Fractional Kelly is not the only way to size. The penny-longshot strategy sizes by a fixed cash budget per trade instead — a simple, pluggable alternative that proves sizing is a swappable idea, not a fixed one. Its knobs:
| Dial | What it sets | Range |
|---|---|---|
| Ticket Budget — ticket_budget_cents | The fixed cash spent per trade | ≥ 1 cent |
| Max Open Exposure — max_open_exposure_cents | The cap on total open exposure across positions | ≥ 1 cent |
| Min / Max Price — min_price_cents, max_price_cents | The price band a candidate must fall inside to qualify | 1–99 cents |
The Min / Max Price band is penny-longshot's own version of the Max Entry Price filter — it bounds which contracts the strategy will touch — while Ticket Budget and Max Open Exposure are its sizing controls.