Astreus Analytics Paper Portfolio MR1: Day 3 – +1.26% Lift
Astreus Analytics’ size‑imbalance scalper pushes the paper account from \$100k to \$101,256.97 in its first three sessions.
Introduction
On Monday we switched on the minimalist size‑imbalance scalper built on Alpaca’s IEX quote stream. After three full sessions the bot has booked a +1.259% move, lifting equity from $100,000 to $101,256.97.
The goal for week 1 is plumbing validation: data → signal → order → fill → P/L. Profit is nice; robustness is better.
Equity curve

Figure 1 – Yellow trace shows minute‑bar equity; closing ramp confirms the day’s high.
Quick maths
Small sample → huge confidence band. Treat the number as a spark, not a guarantee.
Blotter snapshot
| Metric | Value | | ------------ | ---------------: | | Equity | $101 256.97 | | 3‑Day P/L | +1.259 % | | Daily Change | +$488.79 | | Buying Power | $112 551.94 | | Cash | $91 217.48 |
Top positions
| Symbol | Side | Qty | Market Value | P/L ($) | | :----: | :---: | ---: | -----------: | ----------: | | MSFT | Long | 57 | $28 847.13 | +$105.64 | | AMD | Long | 132 | $21 158.94 | +$1 059.48 | | AAPL | Short | −190 | −$39 960.80 | −$88.88 |
Strategy slice
SYMBOLS = ["AAPL", "MSFT", "AMD"] # trading universe
MAX_DOLLARS = 10_000 # per‑symbol cap
IMB_TH = 0.60 # imbalance threshold
SMA_LEN = 20 # rolling mid‑price buffer
async def handle_quote(q):
s = states[q.symbol]
tot = q.bid_size + q.ask_size
if tot == 0: # ignore empty prints
return
imb = (q.bid_size - q.ask_size) / tot
mid = (q.bid_price + q.ask_price) / 2
s.sma_buf.append(mid)
# --- entry logic ---
if imb < -IMB_TH and s.pos == 0: # fade heavy offers
await submit(q.symbol, "buy", q.bid_price)
s.pos = +1
elif imb > IMB_TH and s.pos == 0: # fade heavy bids
await submit(q.symbol, "sell", q.ask_price)
s.pos = -1
Key features:
- Quote‑level mean reversion – exploits micro‑structure blips without touching the lit book.
- Hard dollar cap –
MAX_DOLLARSlimits mark‑to‑market shocks. - Flat by the bell –
time_in_force="day"eliminates overnight gap risk.
Roadmap
- Model slippage – live fills show ~2 bp drift; needs to live inside back‑tests.
- Historical walk‑forward – march through 2022‑Q4 / 2023‑Q1 to stress‑test in higher vol regimes.
- InfluxDB metrics – push all fills + P/L for Grafana heat‑maps.
- Auto‑beta hedging – real‑time β calc per symbol so net‑β ≈ 0.
Closing thoughts
A +1.26% bump won’t buy the yacht, but it does prove the pipeline is sound. Next milestone: 100 fills → compute Sharpe, t‑stat, and drawdown with conviction.
Stay tuned—full metrics drop every Friday here on the Astreus Analytics lab‑log.