H1 Total exposure
All positions together stay at most 200% of the portfolio.
Show the numbers 1 value
- Gross exposure, at most
- 200%
Rules
Code enforces every rule; the prompts only explain them. The council cannot change any number here except one: the swing budget, which it votes on each run inside a range code clamps. Any other change is a policy change, recorded in every sealed run by the policy file's hash.
Constants in the code. The policy files may be stricter, never looser, and a test enforces it.
All positions together stay at most 200% of the portfolio.
Whatever the policy file says, code stops adding risk and proposes selling everything at a fall of 25% from the best value ever reached, at the latest.
Every order that opens a position carries a stop-loss at the broker.
No code path places an order without the operator's approval.
Only the dedicated agent portfolio is ever touched; never the main account.
The swing policy may be stricter than these, never looser.
The council sets the swing budget itself, but code never lets it exceed 50% of the portfolio.
Constants in the code decide what may trade at all; changing one is a code change, not a setting.
Every rule the risk engine checks on every run of the core council. Shares are of the portfolio's value; a line's "full size" is the weight the rules alone would give it.
All positions added together (long and short) stay under 190% of the portfolio; code refuses anything above 200%.
Long minus short stays between −50% and 190% of the portfolio; shorts together at most 60%.
Measured from the best value ever reached: −20%: no new risk · −25%: stop, and a proposal to sell everything goes to the human.
Every new position carries a stop-loss order set well away from the price (at most 35% away), so one bad day cannot sink the book.
After a stop-loss is hit, the line waits 3 days (7 for crypto) before it can be bought again.
Each line has its own cap (the largest is 80% of the portfolio); crypto together at most 50%, currencies 50%, the three equity lines 160%.
Borrowing is capped by asset class: at most 1x on crypto, 2x on indices, 5x on currencies.
At most 95% of the account may be tied up as margin, which keeps a cash reserve.
The book's expected yearly swings stay below 30%.
If short-term volatility jumps to 3.0 times its usual level on a line (2.0 times for the whole book), no risk is added.
The council may change at most 3 lines per run, each inside a range that code sets from the line's trend.
Changes smaller than 25% of a line's full size, or under 2% of the portfolio, are not traded.
A position is kept at least 3 days (7 for crypto) before it is reversed; moving back to the reference is always allowed.
Trading is limited to 100% of the portfolio in 7 days and 300% in 30 days.
One run may spend at most 0.4% of the portfolio on trading costs, and 1% over 30 days on discretionary trades.
A trade must be expected to earn clearly more than it costs, after spread, fees and overnight financing.
No adds from 24 h before to 2 h after a scheduled macro event (Fed decisions, inflation, jobs); selling is always allowed.
No buying right after a one-day jump larger than 2.5 times the usual daily move.
Prices must be recent: daily bars at most 30 h old, quotes at most 60 s old.
A line whose market is closed is held where it is; nothing is bought or sold on it until the market reopens.
While an operator blocker is open (an unresolved incident or check), the lines it covers are held and no new risk is added; swing ideas are dropped too.
A council change is traded only if some fact actually changed since the last decision.
While the book is first built, a line that has never been filled is exempt from R13, R14 and R15 (churn, cost budget and the net-of-cost gate), until every target line has been filled once or five runs have passed; R14's overnight-financing limit still applies.
A proposal holds at most 8 orders.
A person approves every order, only between 08:00 and 23:00 Lisbon time; prices and costs are checked again at that moment.
After trading, the real book is compared with the plan; a gap above 3% is flagged.
A sell-everything proposal always outranks a compliance fix, which outranks a routine rebalance.
Source: policy/risk.yaml. Its hash is recorded in every sealed run.
The swing book's rules, run twice: on each idea before the Skeptic sees it, and on the manager's entries before a paper leg is built. Exits are never refused. The S11 badge marks the rule that also sets the Skeptic's starting lean.
A stock the core council already holds as a line cannot also be a swing trade.
Reason codes it can giveS0:vehicle_owned_by_core the core council already holds this stock
Each swing trade is about 8% of the portfolio, cut so that hitting the stop loses at most 0.8% (0.5% for a short).
Reason codes it can giveS1:stop_too_wide_for_size the stop is too wide for the position size
At most 6 swing trades open at once, 2 of them short, and one per stock.
Reason codes it can giveS2:max_open the book already holds the most swing trades allowedS2:max_short the book holds the most shorts allowedS2:already_open a swing trade on this stock is already open
At most 6 new swing trades in any seven days: a ceiling, not a quota.
Reason codes it can giveS3:weekly_cap the weekly cap on new swing trades is reached
All open and proposed swing trades together may lose at most 4% of the portfolio at their stops, allowing for gaps.
Reason codes it can giveS4:open_risk the open risk across swing trades is at its limit
Every trade has a stop between 2% and 12% away (8% for a short), outside one day's normal range; stops only ever move toward safety.
Reason codes it can giveS5:stop_missing no stop levelS5:stop_out_of_range the stop is outside the allowed rangeS5:stop_inside_atr the stop sits inside one day's normal rangeS5:atr_unknown the stock's normal daily range is unknown, so the stop cannot be checked
The target must pay at least 1.2 times what the stop risks, after costs, and be a move the stock can plausibly make in the time allowed. The code gate checks the Scout's levels before the Skeptic sees them.
Reason codes it can giveS6:target_missing no target levelS6:vol_unknown the stock's volatility is unknownS6:vol_too_high the stock is too volatileS6:target_too_small the target is too smallS6:target_beyond_vol the target is further than the stock usually moves in the time allowedS6:cost_unavailable the trading cost could not be pricedS6:net_rr_below_min the reward is too small for the risk once trading costs are counted
A trade closes after 3 to 15 sessions; the manager may extend it once, with a new cited fact, to at most 20.
Reason codes it can giveS7:time_stop_out_of_range the time stop is out of range
Only stocks that trade enough every day and are not penny stocks; shorts need much more trading volume.
Reason codes it can giveS8:illiquid too little trading volumeS8:price_too_low the share price is too low
No entry within 3 sessions of earnings, an exit proposal 1 session before them, and a 30-hour wait after a report.
Reason codes it can giveS9:earnings_window earnings fall inside the trade's windowS9:earnings_window_estimated estimated earnings fall inside the trade's windowS9:post_earnings_wait too soon after earnings
At most 2 trades on the same kind of bet, and the swing book's net market exposure stays small.
Reason codes it can giveS10:bucket_full the book is already full of similar tradesS10:swing_net_beta the swing book's market exposure is at its limit
An idea is dropped if the stock already moved more than 4σ since the news; from 2σ the Skeptic leans towards wait.
Reason codes it can giveS11:chased the move since the news was already too large
Fees are measured and published, never a brake: a budget of 1% of the portfolio over 30 days.
Reason codes it can giveS12:fee_budget over the fee budget
Shorts are 1x with a hard stop, and never on a recent listing, a crowded or squeeze-prone name, a takeover target or a stock that just flushed.
Reason codes it can giveS13:short_new_listing a recent listing cannot be shortedS13:short_crowded too crowded a shortS13:short_takeover_target a takeover target cannot be shortedS13:short_into_flush a short into a flush is not allowedS13:short_squeeze_risk squeeze risk on a short
After a stop is hit the stock waits 5 sessions; after any other exit 2.
Reason codes it can giveS14:cooloff a cool-off after a recent loss on this stock
A net loss of 5% of the portfolio over 30 days, after all costs, stops new swing trades; only the operator lifts it.
Reason codes it can giveS15:brake_on the swing brake is on (30-day net loss limit): no new entries until the operator lifts itS15:brake_engaged new entries are paused after the Skeptic canary check failed, until the operator lifts itS15:brake_unknown the swing brake could not be checked, so no new entry
An approved entry is a market order within 60 minutes of the run; it is dropped if the price already ran too far or hit the stop.
Reason codes it can giveS16:swing_entry_ran the price ran past the entryS16:swing_entry_stopped the price hit the stop before entryS16:expired the approval expired
From a fall of 10% below the peak, trades shrink to 4% with at most 3 open; the core kill switch's warn or halt blocks new entries.
Reason codes it can giveS17:kill_state the risk engine's kill switch blocks new entriesS17:drawdown_unknown the drawdown could not be checked
An entry is refused if it would push the swing trades above the swing budget the council set (below).
Reason codes it can giveS18:swing_budget_full the swing budget the council set this slot is full: no room for another entry
The swing manager's attempts each vote a swing budget from 0 to 50% of the portfolio in steps of 5; code takes the median and clamps it. Unused swing money is invested in the core.
Only some setups may trade; the rest are tracked on paper only, to measure them.
Reason codes it can giveSB16:setup_paper_only a paper-only setup: tracked on paper, never traded
Source: policy/swing.yaml. Nothing here trades with money while the swing book's go-live switch is off.