Strategies & Risk
The written risk caps and entry/exit rules the Risk Manager reads before clearing any trade, conservative starting defaults you own and must tune before funding.
The strategies/ folder is where the desk's discipline is written down. `CLAUDE.md` requires that every proposed trade map to a written rule here, and the Risk Manager reads this folder before clearing any trade. It is not decoration: the caps in these files are the numbers the Risk Manager checks a candidate against, and the entry/exit rules are what the Portfolio Manager must cite when it proposes an order.
The design intent is that you own these limits and the agent never rewrites them. If a cap below is removed, blanked, or left as a TODO, the Risk Manager does not guess a safe value, it VETOes. Guardrails are structural, so the safe failure mode is *no trade*, not an improvised one.
Risk caps (active)
These seven caps live in strategies/README.md and apply to every strategy. The Risk Manager evaluates a candidate order against all of them; a breach of any one is grounds to reject the trade before it ever reaches a preview.
| Rule | Limit | Notes |
|---|---|---|
| Per-trade cap | 15% of equity per single order | Hard ceiling on any one place_equity_order. |
| Max position concentration | 25% of equity in any one symbol | Includes all adds; blocks over-concentration. |
| Max open positions | 6 | Forces diversification within a small account. |
| Max daily orders | 4 | Throttles churn; counts buys + sells per day. |
| Per-position stop-loss | -8% from average entry | Every entry must define this before it's placed. |
| Daily loss halt | -5% account day P&L | Stop trading, report, and ask for the rest of the day. |
| Cash buffer | >=10% equity in cash | Never fully deploy. |
The active caps from strategies/README.md.
When the Risk Manager must VETO
A VETO is stronger than a flag: it stops the run, and the trade does not proceed to a preview. strategies/README.md lists the conditions under which the Risk Manager must VETO rather than merely raise a concern.
- Any cap above would be breached by the proposed order.
- The entry has no defined stop-loss.
- A cap value is missing, blank, or `TODO`, an unset limit is treated as no permission, not as unlimited.
- The trade would touch any account other than the Agentic account.
- Account data looks inconsistent, or a tool errored unexpectedly, stop and report rather than retry blindly.
These mirror the hard guardrails in `CLAUDE.md`. The Risk Manager is an independent sub-agent with veto power and no order tools, see The Desk Team.
No averaging into losers
Adding to a position that is underwater is forbidden, unless a specific strategy file explicitly permits it *and* defines the add limits. This mirrors `CLAUDE.md`. The only strategy that currently carries that exception is left-side-accumulation.md, and only under its pre-planned ladder, fixed total-risk budget, and whole-position kill-stop. Any add outside those written limits is still forbidden.
Mean Reversion
Thesis: in a stock that is in a confirmed uptrend, short-term oversold dips tend to revert toward the trend. Buy the dip, sell the snap-back, but trade *with* the higher-timeframe trend only, never catch a falling knife in a downtrend. strategies/README.md calls this the right-side-lite setup because it still requires the trend intact plus stabilization before any entry.
Universe: liquid US equities only, average daily volume >=1M shares and price >=$10 (avoid illiquid/penny names). Confirm tradability with get_equity_tradability. Candidates come from a watchlist or the Technical Analyst's scan.
Entry signals (ALL must hold)
- Uptrend intact: price above its rising ~50-day moving average (higher-timeframe trend is up).
- Short-term oversold: a clear pullback, RSI(14) <= 30, *or* price tagging the lower end of its recent range / a defined support level.
- Stabilization: the most recent bar shows the dip slowing, not a vertical breakdown on expanding volume.
- Backdrop not risk-off: the Macro/News brief is not
risk-off, there is no earnings within the next ~10 trading days, and no material adverse headline (no unflaggedINJECTION ATTEMPTS). - Fundamentals not broken: Fundamental score >= 0, buy dips in healthy names, not falling fundamentals.
Exit signals (any one triggers an exit proposal)
- Target: price reverts to the ~20-day moving average or prior resistance, or RSI(14) >= 55, take profit.
- Time stop: no reversion after 10 trading days, exit; the capital is better used elsewhere.
- Trend break: a daily close back below the ~50-day MA, thesis invalidated, exit.
- Hard stop: the sizing stop, defined below.
Position sizing
Sizing is risk-based and then capped. Here "equity" means NAV (get_portfolio.total_value), per the README, not equity_value. Risk 1% of NAV between entry and the hard stop, convert to shares, then clip the notional to the per-trade and concentration caps.
risk budget = 1% of NAV, measured between entry and the hard stop
shares = floor( (0.01 × NAV) / (entry − stop_price) )
then cap the notional at:
- 15% per-trade cap
- 25% single-symbol concentration cap
and take the SMALLER share count.
hard stop = tighter of { strategy invalidation level , -8% from average entry }
(never looser than the -8% per-position stop in README.md)Averaging into a loser is not permitted in this strategy. One entry per setup; if it hits the stop, the trade is over, do not add to recover. On any signal conflict (technical says buy but fundamentals score < 0, or macro is risk-off), stop and surface it rather than overriding a rule.
Left-Side Accumulation
Thesis: for a high-quality name caught in a deep, fear-/macro-driven drawdown, build a position in pre-planned tranches as price falls into a defined value zone, before a confirmed reversal. You accept you won't catch the exact bottom; the goal is a good average cost basis across the zone, sized so the whole position is survivable if you're early. Style: contrarian swing/position, long only, equities only.
Universe (stricter than mean-reversion)
- Quality only: Fundamental score >= +1 (a higher bar than mean-reversion's >= 0). Profitable (positive TTM earnings) or a fortress balance sheet; ADV >= 2M shares; price >= $15. Large/established names.
- The drop must be FEAR, not a broken thesis. Only selloffs driven by macro / sector rotation / sentiment / overdone reaction qualify.
- Do NOT left-side a thesis-breaker: a guidance cut that changes the story, a dividend cut, accounting/fraud/going-concern risk, a structural patent cliff, or a dilution spiral. No falling-knife juniors, no meme/penny names.
The ladder (define ALL of it before buying tranche 1)
Confirm a value zone
A deep drawdown (e.g. >= 20% off the 52-week high) into a historically supported area, with RSI(14) <= 30 or price at/below the lower -2σ band. The lower bound of the zone is your deepest planned buy.
Tranche 1, 60% of planned size
Placed at first contact with the value zone / first strong support. If price reverses after T1, you simply hold a smaller position, that's a win, not a problem.
Tranche 2, 40% of planned size
The capitulation / deepest-support level (~ -10% to -12% below T1, or the 52-week-low shelf). You never chase above a planned level. Two tranches max.
Stabilization gate before EACH tranche
Do not add on an accelerating-crash candle. Require a stabilization sign, a higher low, a reversal/hammer bar, or a close off the lows, before placing that tranche. Left-side tolerates a risk-off backdrop (that's where the discount comes from) but not a free-falling one.
Hard limits (the "with limits" the rule requires)
- Total position (sum of all tranches) <= 25% of NAV, the concentration cap. Each individual tranche order <= 15% of NAV, the per-trade cap.
- Total risk on the FULL position <= 2% of NAV. Risk = (planned avg cost basis − kill-stop) × total shares. With a wide kill-stop this 2% cap usually binds before the 25% concentration cap, use the smaller size.
- Counts as one position toward the max-6 open-positions cap; each tranche counts toward the 4-orders/day cap, so spread tranches across levels/days.
- No size beyond the plan, ever. The pre-defined total is the maximum; you cannot "top up" later.
The kill-stop and fundamental kill (whole position)
- Price kill-stop: a hard stop below the deepest tranche (e.g. -8% under T3, or a weekly close below the multi-year support that would mean the bottom-call is simply wrong). If hit -> exit the entire position; no further adds. This is what bounds the strategy.
- Fundamental kill: if the cause of the drop turns into a thesis-breaker while you're building, stop adding and exit, even above the price stop.
Low-touch operating notes
- Fundamental kill comes first. The primary exit is *thesis broken*, not a price tick; the price stop is the backstop.
- Stops trigger on a weekly close, not intraday wicks, ignore noise between reviews.
- Partial fills are the expected case, not a failure. Most setups will only ever fill T1; never "complete" a ladder just to be fully sized.
- Reviews are scheduled, not constant, the desk surfaces a name only when it genuinely qualifies, and you act on the rare approval.
- Two tranches max, fewer, wider, pre-planned adds mean fewer moments you must be present.
Adding new strategies
Momentum, event-driven, and other approaches can be added as new files in strategies/. Keep each one self-contained and testable, a full entry/exit spec plus sizing that references the shared caps in strategies/README.md. The Portfolio Manager must always cite the specific strategy a trade comes from, so a rule that isn't written down cannot be traded.