alpaca-trader
All live
£39,148 +8.62%
Period
Account
reads data/ fresh on every request — nothing to rebuild
← StrategiesT212 INV account settings

qsr · T212 INV

t212-investing · ⚠ LIVE · Trading mode: live · performance →

Quality-Swing-Recycle: consumes the yahoo-screener QSR signal rather than recomputing it, then scales in as an anchor leg (fixed take-profit) plus a runner that converts to a trailing stop once well ahead. No calendar time-stop — it holds the swing.

Conviction sizing on — proven 1.5x, favourites 1.5x (incl. mega-caps) (the account defaults) Favourites, mega-caps & proven stocks →

Risk sizing overrides

Values here override the matching global constant in src/risk/rules.ts for THIS account only.

Field Applies to What it means On a $10,000 account
Risk per trade % ONE stock, one trade How much $ you're OK losing if THAT trade's stop-loss gets hit. The system works backward from this to pick how many shares to buy. 0.5% → sized so a stop-out on any one stock loses about $50.
Max notional % ONE stock, one trade (same one — not the whole account) A separate hard ceiling on that SAME stock's total position value (shares × price), computed once before any tranche-splitting (e.g. qsr's anchor+runner legs just divide this one total, they don't each get their own cap). Exists because a very tight stop can otherwise math its way into buying far more shares than makes sense. 8% → that one stock's position can never be worth more than $800 total, no matter what Risk per trade % alone would size it to.
Daily kill switch % The WHOLE account, not one stock Once today's total P&L across everything drops to this % of account value, NEW trades stop for the rest of the day. Positions already open are untouched. -2% → new entries pause for the day once you're down about $200 today.

All three are % of account equity (cash + market value of whatever's currently open) — deliberately not free cash, since cash alone shrinks whenever money's tied up in open trades and would understate real risk mid-session. Every % field below shows a live £ estimate against this account's current equity (£23,688.90) — edit the number to see it update.

▾ qsr

✓ Can buy — nothing currently blocking new entries in this pool.

When checked, this pool's trading script builds the order plan as usual but stops short of submitting it, queuing it on /approvals instead. Nothing gets bought for this strategy without you clicking Approve.

Confirmation entry — two independent parts, each on or off per account
1 · Waiting pen on

Rather than buying the signal immediately, record it and buy only once price rallies the trigger % above it — don't catch the falling knife, wait for it to stop falling. This account so far: of 10 signals that expired without rallying, buying straight away would have hit 1 stop-outs (dodged) vs 0 take-profits (missed), 9 not scored yet — thin sample. A missed target costs 0%, a stop costs 6–8%. Entry mechanics are unchanged — same bracket, same runner, same trailing conversion. Waiting signals are listed on Confirmations.

The original 1 Sep research (historical, in-sample — the live figures are in the hints)

Trigger % — 2% is the only level with a real sample behind it (142 signal clusters). Other levels were never swept.

Expiry — 5 days was a fixed constant in the backtest, not a tested optimum. It is the window every figure here was measured over, so changing it means those figures no longer describe what you are running.

The two filters — tested, but only in-sample, on one account's pool, with thresholds chosen after seeing the data:

variantenteredresolvedwinavgdodgedmissed
trigger only663664%−0.14%187
+ MA50 slope > −1.5%462070%+0.70%2119
+ relVol ≥ 0.1221580%+1.60%2130
+ both161090%+2.80%2333

Each filter buys a higher win rate by entering far less: both together took 66 entries down to 16, and missed 33 winners to dodge 23 stops. At n=10 resolved that 90% is a hypothesis, not a setting — which is why both ship blank. The metrics are recorded on every trigger whether or not they gate, so these can be re-scored on forward data instead of another in-sample sweep. The per-signal charts behind every one of these numbers are on Watchlist — one chart per simulated signal, trigger/target/stop drawn in, grouped by how each comparison came out.

2 · Buy checks on

Blank = off. Checked on every QSR buy, whether or not the waiting pen is on — when a waiting signal triggers, or straight away when the pen is off.

▾ Per-strategy config


▾ Per-buy config

Governs ONE stock’s buy at a time — how big it is, and (for QSR) how often the same ticker can be re-bought. Every stock gets its own independent counters. Nothing here limits how many DIFFERENT stocks are bought; that’s the per-strategy config above (pot, open positions, buys per day).

Example: ETN at its live price of £426.93 — this config buys:
with a 5% stop → 0.4684 shares (£199.97 buy value, risking £10.00) — limited by max £200.00/buy.
Updates as you edit the pot %, risk %, value cap % and max shares fields — the number shown is what a save would produce.

▾ Exit — target & stop

Where a QSR buy sells. Applies to NEW buys only — each open position keeps the target and stop it was bought with. Default: +8% target, stop 3×ATR capped at 10%. Evidence for alternatives: pnpm qsr-bplus-exits --buy-tier.

▾ B+ buying

B+ names are the screener's near-misses. By default they're only watched (to collect data, pnpm qsr-bplus-report). Backtest: B+ ≈ +1.3%/buy vs ≈ +4.3% for full buy signals (same exit) — keep these small.
On top of the usual QSR buy checks, a B+ name also needs:
  • MA50 rising
  • smaller size: up to £50 per buy

▾ Per-ticker & leverage caps

▾ Trailing stop

Split each buy into a fixed-exit anchor and a trailing runner. The runner has no fixed target: once it's up 8%, a stop trails 5% behind the peak; the anchor still takes the fixed +8% exit. t212 splits fractionally; a buy too small to split stays a single fixed leg.