council-book
PAPER · NO BROKER

Rules

The rules the council works inside

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.

Hard limits

Constants in the code. The policy files may be stricter, never looser, and a test enforces it.

H1 Total exposure

All positions together stay at most 200% of the portfolio.

Show the numbers 1 value
Gross exposure, at most
200%

H2 Kill switch

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.

Show the numbers 2 values
Halt at a fall of
25%
Measured from
the lifetime peak

H3 A stop-loss on every opening order

Every order that opens a position carries a stop-loss at the broker.

Show the numbers 1 value
Required
yes

H4 A person approves every order

No code path places an order without the operator's approval.

Show the numbers 1 value
Required
yes

H5 Only the agent portfolio

Only the dedicated agent portfolio is ever touched; never the main account.

Show the numbers 1 value
Enforced
yes

H6 Swing ceilings

The swing policy may be stricter than these, never looser.

Show the numbers 18 values
Open swing trades, at most
6
Shorts, at most
2
One trade's size, at most
8%
New trades in 7 days, at most
6
Loss at the stop, long, at most
0.8%
Loss at the stop, short, at most
0.5%
Stop distance, long, at most
12%
Stop distance, short, at most
8%
Open risk at the stops, at most
4%
Gap allowance, at least
1.5×
Time stop including the extension, at most
20 sessions
Net reward against risk, at least
1.2
An approved entry is stale after
60 min
Model calls per slot, at most
12
Declared cost per leg, at least
1.25%
Loss brake fires no deeper than
−5%
Drawdown scaling starts no later than
−10%
Size under drawdown scaling, at most
4%

H7 Swing budget ceiling

The council sets the swing budget itself, but code never lets it exceed 50% of the portfolio.

Show the numbers 1 value
Swing budget, at most
50%

H8 Go-live switches

Constants in the code decide what may trade at all; changing one is a code change, not a setting.

Show the numbers 3 values
Swing book trades live
no
Stock sleeve live
no
Broker news feed allowed
yes

Core rules

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.

R1 Gross exposure caps

All positions added together (long and short) stay under 190% of the portfolio; code refuses anything above 200%.

Show the numbers 3 values
Proposals stay under
190%
Code refuses above
200%
On a watch, cut back to
180%

R2 Net exposure range and short gross cap

Long minus short stays between −50% and 190% of the portfolio; shorts together at most 60%.

Show the numbers 3 values
Net exposure at least
−50%
Net exposure at most
190%
All shorts together at most
60%

R3 Soft kill: warn, then halt, as a fraction of the lifetime peak

Measured from the best value ever reached: −20%: no new risk · −25%: stop, and a proposal to sell everything goes to the human.

Show the numbers 5 values
Warn (no new risk) at a fall of
20%
Halt at a fall of
25%
Confirming reads
2
Seconds between reads
60
Measured from
the lifetime peak

R4 Every open carries a catastrophe stop-loss

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.

Show the numbers 8 values
Stop distance
the larger of the class floor and 3 × daily volatility × √5
Furthest stop
35%
Floor: index
8%
Floor: etf
10%
Floor: commodity
10%
Floor: commodity gold
8%
Floor: crypto
20%
Floor: fx
4%

R4d Cool-off before re-entering after a stop hit

After a stop-loss is hit, the line waits 3 days (7 for crypto) before it can be bought again.

Show the numbers 2 values
Wait after a stop hit
3 days
Crypto
7 days

R5 Per-line and cluster caps

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%.

Show the numbers 12 values
Line cap: NDX
80%
Line cap: SEMIS
40%
Line cap: SPX
80%
Line cap: GOLD
50%
Line cap: BTC
40%
Line cap: ETH
20%
Line cap: OIL
20%
Line cap: EURUSD
30%
Line cap: GBPUSD
30%
Crypto together
50%
Currencies together
50%
Equity lines together (NDX, SEMIS, SPX)
160%

R6 Leverage caps by asset class

Borrowing is capped by asset class: at most 1x on crypto, 2x on indices, 5x on currencies.

Show the numbers 5 values
Leverage: index
2x
Leverage: etf
2x
Leverage: commodity
2x
Leverage: fx
5x
Leverage: crypto
1x

R7 Margin use cap (keeps a cash reserve)

At most 95% of the account may be tied up as margin, which keeps a cash reserve.

Show the numbers 2 values
Margin in use at most
95%
Cash reserve at least
5%

R8 Ex-ante book volatility hard cap

The book's expected yearly swings stay below 30%.

Show the numbers 1 value
Expected yearly volatility below
30%

R9 Volatility breaker

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.

Show the numbers 3 values
One line: short-term vs usual volatility
3×
Whole book
2×
Volatility card from
2×

R10 Council authority bands around the reference

The council may change at most 3 lines per run, each inside a range that code sets from the line's trend.

Show the numbers 6 values
Lines changed per run, at most
3
Uptrend: cut with a qualifying card, up to
50% of the line's full size
Uptrend: extra leverage, up to
50% (only if it passes the cost gate)
Mixed trend: range
0% to 100%
Downtrend: range
−50% to 25% (shorts need a cited risk card)
Expired cards return the line to the reference
yes

R11 Deadband: changes too small to be worth trading are skipped

Changes smaller than 25% of a line's full size, or under 2% of the portfolio, are not traded.

Show the numbers 3 values
Skip changes under
25% of the line's full size
Crypto
50%
Or under
2% of the portfolio

R12 Minimum holding periods

A position is kept at least 3 days (7 for crypto) before it is reversed; moving back to the reference is always allowed.

Show the numbers 4 values
Hold at least
3 days
Crypto
7 days
No flip from long to short within
24 h
Moving back to the reference is always allowed
yes

R13 Turnover limits

Trading is limited to 100% of the portfolio in 7 days and 300% in 30 days.

Show the numbers 3 values
Added in one run, at most
60%
Traded in 7 days, at most
100%
Traded in 30 days, at most
300%

R14 Cost and carry budgets

One run may spend at most 0.4% of the portfolio on trading costs, and 1% over 30 days on discretionary trades.

Show the numbers 4 values
Trading costs in one run, at most
0.4%
Discretionary costs in 30 days, at most
1%
Overnight financing a proposal may add, a day
0.02%
Financing that puts the book on watch, a day
0.03%

R15 Net-of-cost gate

A trade must be expected to earn clearly more than it costs, after spread, fees and overnight financing.

Show the numbers 3 values
Break-even Sharpe ratio, reference trades, at most
0.3
Break-even Sharpe ratio, council trades, at most
0.2
Assumed holding period
20 days (60 crypto)

R16 No adds around scheduled macro events

No adds from 24 h before to 2 h after a scheduled macro event (Fed decisions, inflation, jobs); selling is always allowed.

Show the numbers 5 values
No adds before a macro release
24 h
… and after it
2 h
Before a company's earnings
24 h
… and after
30 h
An estimated earnings date counts as
± 5 trading days

R17 Anti-chase: no adds right after a large one-day move

No buying right after a one-day jump larger than 2.5 times the usual daily move.

Show the numbers 1 value
No adds after a one-day move larger than
2.5σ (its usual daily move)

R18 Data freshness limits

Prices must be recent: daily bars at most 30 h old, quotes at most 60 s old.

Show the numbers 4 values
Daily bars at most
30 h old
4-hour bars at most
5 h old
Quotes at most
60 s old
Frozen reference share at most
30%

R19 Closed markets

A line whose market is closed is held where it is; nothing is bought or sold on it until the market reopens.

R20 Open blockers

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.

MC Executable changes need new material facts

A council change is traded only if some fact actually changed since the last decision.

Show the numbers 1 value
Required
yes

IB Initial build

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.

Show the numbers 3 values
Rules paused per never-filled line
R13, R14, R15
At most
5 runs
R14 overnight financing
still applies

R21 Legs per proposal

A proposal holds at most 8 orders.

Show the numbers 2 values
Risk-adding and discretionary orders, at most
8
All orders, at most
16

AP Re-checks at approval time and the notification window

A person approves every order, only between 08:00 and 23:00 Lisbon time; prices and costs are checked again at that moment.

Show the numbers 6 values
Approval window
08:00–23:00 Lisbon time
Price moved since the run, at most
1.5σ of 4 hours
Book drift since the run, at most
10%
Order size may differ by
30%
Cost may rise to
1.5× plus 0.05%
Exposure after the fills, within
5%

RC Post-trade reconciliation tolerances

After trading, the real book is compared with the plan; a gap above 3% is flagged.

Show the numbers 2 values
Gap between the real book and the plan, flagged above
3%
Stop-loss level tolerance
0.2%

PR Proposal priority (a lower one never supersedes a higher one)

A sell-everything proposal always outranks a compliance fix, which outranks a routine rebalance.

Show the numbers 1 value
Order
flatten > compliance > rebalance

Source: policy/risk.yaml. Its hash is recorded in every sealed run.

Swing rules

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.

S0 Not a core holding

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

S1 Position size

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).

Show the numbers 5 values
Target size
8%
Smallest size after the stop cut
4%
Loss at the stop, long, at most
0.8%
Loss at the stop, short, at most
0.5%
Short with unknown short interest
50% of the size

Reason codes it can giveS1:stop_too_wide_for_size the stop is too wide for the position size

S2 Open trades

At most 6 swing trades open at once, 2 of them short, and one per stock.

Show the numbers 3 values
Open trades, at most
6
Shorts, at most
2
Per stock
1

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

S3 Weekly cap on new trades

At most 6 new swing trades in any seven days: a ceiling, not a quota.

Show the numbers 1 value
New trades in a rolling 7 days, at most
6

Reason codes it can giveS3:weekly_cap the weekly cap on new swing trades is reached

S4 Open risk

All open and proposed swing trades together may lose at most 4% of the portfolio at their stops, allowing for gaps.

Show the numbers 2 values
Open risk at the stops, at most
4%
Gap allowance
1.5× the stop distance

Reason codes it can giveS4:open_risk the open risk across swing trades is at its limit

S5 Stops

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.

Show the numbers 4 values
Closest stop
2%
Furthest stop, long
12%
Furthest stop, short
8%
At least
1 × the average daily range

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

S6 Targets and reward against risk

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.

Show the numbers 5 values
Net reward against risk, at least
1.2
Target, at least
3 × the round-trip cost
Target, at most
30%
Target, at most
1.5 × daily volatility × √sessions
Daily volatility, at most
4%

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

S7 Time stop

A trade closes after 3 to 15 sessions; the manager may extend it once, with a new cited fact, to at most 20.

Show the numbers 3 values
Time stop
3–15 sessions
One extension, at most
5 sessions
In total, at most
20 sessions

Reason codes it can giveS7:time_stop_out_of_range the time stop is out of range

S8 Liquidity

Only stocks that trade enough every day and are not penny stocks; shorts need much more trading volume.

Show the numbers 1 value
Thresholds
a minimum average daily traded value and share price, higher for shorts; the amounts are in policy/swing.yaml (this site shows no money amounts)

Reason codes it can giveS8:illiquid too little trading volumeS8:price_too_low the share price is too low

S9 Earnings

No entry within 3 sessions of earnings, an exit proposal 1 session before them, and a 30-hour wait after a report.

Show the numbers 4 values
No entry within
3 sessions
Exit proposal before
1 session
Wait after a report
30 h
An estimated date counts as
± 5 days

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

S10 Similar trades and market exposure

At most 2 trades on the same kind of bet, and the swing book's net market exposure stays small.

Show the numbers 3 values
Trades per bucket, at most
2
Counts as the same bet above a correlation of
0.6
Swing book's net beta, at most
0.3

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

S11 No chasing

An idea is dropped if the stock already moved more than 4σ since the news; from 2σ the Skeptic leans towards wait.

Show the numbers 2 values
Dropped above
4σ since the news
The Skeptic's wait prior from
2σ

Reason codes it can giveS11:chased the move since the news was already too large

S12 Fees

Fees are measured and published, never a brake: a budget of 1% of the portfolio over 30 days.

Show the numbers 4 values
Mode
reported only
Fee budget over 30 days
1%
Fees against gross gains, at most
33.3%
Measured after
10 closed trades

Reason codes it can giveS12:fee_budget over the fee budget

S13 Shorts

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.

Show the numbers 7 values
Listed at least
180 days
Short interest, at most
20% of the float
No short after a fall of
3σ
No short after a 20-day rise above
20%
Squeeze risk: price within this far of its high
3%
… with volume above
3× normal
Takeover news looked back
90 days

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

S14 Cool-off

After a stop is hit the stock waits 5 sessions; after any other exit 2.

Show the numbers 2 values
After a stop
5 sessions
After another exit
2 sessions

Reason codes it can giveS14:cooloff a cool-off after a recent loss on this stock

S15 Loss brake

A net loss of 5% of the portfolio over 30 days, after all costs, stops new swing trades; only the operator lifts it.

Show the numbers 3 values
Loss that stops new trades
−5%
Window
30 days
After all costs
yes

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

S16 Entry guard at approval

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.

Show the numbers 3 values
Approve within
60 min
Price run, at most
50% of the stop distance or 1.5%
Re-proposals, at most
2

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

S17 Drawdown scaling

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.

Show the numbers 3 values
Starts at a fall of
10%
Size then
4%
Open trades then, at most
3

Reason codes it can giveS17:kill_state the risk engine's kill switch blocks new entriesS17:drawdown_unknown the drawdown could not be checked

S18 The swing budget is full

An entry is refused if it would push the swing trades above the swing budget the council set (below).

Show the numbers 1 value
Budget
see the swing budget card

Reason codes it can giveS18:swing_budget_full the swing budget the council set this slot is full: no room for another entry

Budget The swing budget (set by the council)

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.

Show the numbers 6 values
Range
0–50%
Steps
5%
Decided by
the median of the swing manager's valid votes
Before the first valid vote
40%; later the last budget is kept
Code ceiling
50%
Core re-sized when swing exposure moved by
4%

SB16 Which setups may trade

Only some setups may trade; the rest are tracked on paper only, to measure them.

Show the numbers 2 values
May trade
news continuation, post-earnings drift, second-order effect, day-2 confirmation: a Skeptic 'wait' re-checked a day later
Paper only
gap fade, breakout, mean reversion, event run up

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.