A Quantitative Trading Research & Education Platform — Inspired by Nature
The whole system, end to end.
Churner finds it → Scoring ranks it → Sentinel times it → Bot stages it → You approve it → Learning remembers how it went. That loop runs whether you're watching or not, and it leaves a receipt at every step.
🔎 Symbol churner — the intelligence funnel
Raw market noise in one end. Scored, ranked, explained candidates out the other. Feeds: StockTwits, analyst consensus, sector universe, index momentum, X/Twitter, SEC EDGAR, congressional STOCK Act filings, RSS news, newsletters, and earnings and catalysts. Quota-heavy feeds are throttled to roughly once per 20 hours while the fast-moving free ones refresh intraday. You can see when each one last ran — a stale feed announces itself instead of quietly serving yesterday.
Momentum scanner
Persona-scored candidates pushed onto the plane.
Catalyst harvester
Earnings, insider clusters and chatter — auto-injects at impact ≥ 75.
Insider & congressional
Form 4 cluster buys and STOCK Act disclosures, harvested on the day.
Sentiment correlation
Does this source actually predict anything for this name? Source trust is scored, and a feed that's been wrong gets weighted down.
Spread finder & wheel engine
Verticals and 0DTE with net-EV filtering; CSP and covered-call candidates with collateral health.
Off-hours backtester
The nightly 10-year suite, run when the market's CPU is free. Plus 30-minute TradeMachine sweeps between 10:00 and 15:45 ET and vector RAG over your research corpus.
🎛️ Configurable scoring — five methodologies
The five factor boxes, each scored 0–100 from the live factor engine — the same engine the audit and the staging modal use. A missing factor renormalizes the blend rather than fabricating a 50.
Momentum
Trend and velocity. Is this thing already moving, and is the move still intact?
Value
Free cash flow and valuation. What are you paying for each dollar the business actually produces?
Quality
Moat and balance sheet. Can this business survive a bad year without diluting you to do it?
Stability
Beta and volatility compression. How violently does this move relative to everything else you own?
Sentiment
Form 4 filings and catalysts. Are the people closest to the business buying it themselves?
Five factor boxes — momentum, value, quality, stability and sentiment — all computed from the live factor engine, the same one the audit and staging modal use. A missing factor renormalizes the blend. It never fabricates a 50. Switching methodology never clobbers another mode's tuning; every mode keeps its own dials.
SMART_BETA_FACTOR
Weighted linear blend of the real 0–100 factor boxes. Transparent, auditable, tunable.
PERCENTILE_RANK
The same factors ranked cross-sectionally within the candidate universe — relative strength instead of absolute score.
TREE / REGIME
A hand-built decision structure over factor × macro-regime combinations. What works in contango isn't what works in a risk-off flight.
ENSEMBLE_CONSENSUS
All three run concurrently. Score S = Σ wᵢSᵢ, dispersion σ measured across models, conviction C = S · (1 − σ/50). Candidates above the σ cap are discarded as model dissent — default ceiling σ ≤ 15.0, tunable 1–50.
CUSTOM
The smart-beta blend with your own weights. Your thesis, the platform's arithmetic.
Conviction ranks. It does not forecast. An 85/100 is a relative ordering against other candidates — not an 85% chance of profit. The platform says so out loud, because treating it otherwise is how people oversize.
🧠 Adaptive learning — it tunes on your results
Factor-weight auto-tuning
An online gradient step (LMS / Widrow-Hoff family) projected onto the probability simplex, so weights always stay valid and sum to one. When a position closes, the factors that actually predicted the outcome gain weight; the ones that misled lose it. It steps on CLOSE, not on open — an unrealized gain isn't evidence, it's a hope with a timestamp. Learning rate 0.01, deliberately slow: a learner that lurches on one trade is noise-fitting.
Regime-aware fractional Kelly
Classic Kelly edge scaled by an exponential trust coefficient exp(−γ·σ²) — the more your recent estimates have been wrong, the smaller the bet — then multiplied by a macro risk factor derived from FRED net liquidity versus high-yield credit spreads. Sizing shrinks when the model is uncertain and when the macro soil turns hostile.
The regret ledger
Logs what the system got wrong in both directions: false negatives that scored below the gate and broke out anyway, and user bypasses where you overrode the system and how that turned out. A platform that only records its wins is marketing, not engineering.
All learning state is tenant-private, enforced at the database level. Your feedback tunes your weights. Nobody else's outcomes touch your model.
🛰️ Reactive sentinels — zero polling, zero alert hose
EMA_CROSS_UP / DOWN
EMA 9 crosses EMA 21 — on the crossing bar, not while the condition persists.
RSI_OVERSOLD / OVERBOUGHT
RSI-14 breaks 30 or 70.
VWAP_CROSS_UP / DOWN
A CME micro closes through session VWAP.
CATALYST_IMPACT
A scored catalyst lands above threshold.
IV_RANK_SURGE
IV rank crosses into premium-selling territory.
DEAD_LEAF_STOP
A holding reaches the −3% prune floor.
Most systems re-query on a timer and re-announce standing conditions until you stop reading them. myMTree fires on the crossing bar only. Detectors: EMA 9 crossing EMA 21 up or down · RSI-14 breaking 30 or 70 · a CME micro closing through session VWAP · a scored catalyst landing above threshold · IV rank crossing into premium-selling territory · a holding reaching the −3% prune floor. A cross is a state change. "Price is above VWAP" is a standing condition, and a bus that re-announces it every scan is an alert hose, not a signal. Detectors publish to Redis db5 the moment a crossing becomes true. Subscribers wake on push. Nothing polls. It degrades honestly too: with Redis down, events buffer in-process and the status surface reports 'no cross-process delivery' rather than claiming a live bus it isn't running. The delivery ledger writes every routed signal down with its outcome and reason code — delivered, staged as ticket #1042 at the human gate for these bots; or rejected, 'no bot subscribes to this symbol and it's not on your watchlist'; or rejected, 'SELL ignored — this bot holds none of it'. Both rejections used to read simply 'not delivered'. Now each one names its cause. Above every sleeve, one question is answered continuously — is capital flowing toward equity risk, or away from it? Gold or defensives spiking while the index declines suppresses bullish spreads, with the evidence shown. An index future crossing above session VWAP while the volatility curve is in contango arms same-day scalps. A suppressed desk must be able to show why it's suppressed.
⚙️ How it actually works — the numbers, in plain English
Every rule below is a real constant in the running code. The technical statement comes first, then what it actually means for you.
Harvest: unrealised ≥ +5% over cost basis
PLAIN ENGLISH: when a holding is up 5% or more, the system sells it and moves the profit to your cash basket. It does not wait for 10% in case it keeps running, and it does not ask you how you feel about it that morning. The threshold is a constant, not a judgement call.
Prune: unrealised ≤ −3% under cost basis
PLAIN ENGLISH: when a holding is down 3%, it is sold and the loss is recorded with the reason attached. This is the rule that stops a small mistake becoming the position you cannot talk about. There is no averaging down, because averaging down is just the same bet placed twice.
ATR brackets: stop 1.5×, target 3.0×
PLAIN ENGLISH: ATR measures how much a symbol normally moves in a day. The stop sits one and a half of those moves away, the target sits three away — so the trade risks one unit to make two. Sizing the bracket off the symbol's own volatility stops you using an equity-sized stop on a futures contract.
Roundtrip cost: $2.84, charged on close
PLAIN ENGLISH: every futures trade costs $2.84 to get in and out, and that is subtracted inside the maths before a setup is shown to you. A scalp that only makes $2 is a losing trade, and the platform refuses it rather than letting you discover that on your statement.
Backtest gate: >50% win rate over 1y AND 3y
PLAIN ENGLISH: a setup is not allowed to fire until its own history clears a coin-flip over both one year and three years. One good year does not qualify it. This check runs against the database, so a strategy cannot be talked into the product by a marketing page.
Flat sweep at 3:55 PM ET
PLAIN ENGLISH: five minutes before the close, every intraday position is sold. You carry nothing overnight, so a headline at 2am cannot gap through your stop while you are asleep. The clock does this, not your discipline.
Futures margin hard-capped at $1,000
PLAIN ENGLISH: no matter how confident anything is, the futures sleeve cannot tie up more than a thousand dollars of margin. It is a ceiling on how wrong the fastest-moving part of the system can go.
0DTE: max 1% NAV, VWAP-aligned, flat by the bell
PLAIN ENGLISH: same-day options expire worthless very fast, so they are capped at one percent of the account, only taken in the direction the day is already trending, and always closed before the close. Three seatbelts on the one instrument that punishes hesitation hardest.
Dissent ceiling σ ≤ 15.0, conviction C = S · (1 − σ/50)
PLAIN ENGLISH: three different models score the same candidate. σ is how far apart their answers are. If they disagree by more than 15 the trade is thrown away rather than taken, and even when they agree, the more they disagree the more the final score is marked down. Disagreement between models is treated as a warning, not noise to average away.
Learning rate 0.01, stepped on close
PLAIN ENGLISH: after each position is actually sold, the system nudges its factor weights by one percent toward whatever predicted that result. One percent is deliberately tiny — a system that rewrote its beliefs after every trade would just be chasing the last thing that happened. And it only learns from closed trades, because an open winner has not proven anything yet.
Kelly × exp(−γ·σ²) × macro risk factor
PLAIN ENGLISH: Kelly is the textbook formula for how much to bet given an edge. It is famously too aggressive, so two shrinkers are applied — one that cuts size when the model has recently been wrong, and one that cuts size when credit spreads and liquidity say the wider market is turning hostile. You do not have to remember to be careful; the size does it for you.
Schema-separated multi-tenancy
PLAIN ENGLISH: each customer's book lives in its own database schema, not in a shared table filtered by a customer ID column. A filter is one forgotten WHERE clause away from leaking; a schema boundary is enforced by the database itself. It is the difference between a locked door and a sign asking people not to enter.
Two more that matter and are easy to miss. Constant-basket indexing means your benchmark is computed from a fixed set of holdings across the window — otherwise a stock joining mid-period can make the index look like it jumped, and your relative performance becomes fiction. And feed throttling means the quota-limited data sources refresh roughly every 20 hours while free ones refresh intraday; the interface shows when each last ran, so a stale feed announces itself rather than quietly serving you yesterday's world as though it were today's.
The through-line
Churner finds it → Scoring ranks it → Sentinel times it → Bot stages it → You approve it → Learning remembers how it went.
myMTree is a research and education platform. Nothing here is investment advice, and no past or projected performance is shown or implied. Options and futures involve substantial risk of loss and are not suitable for every investor. New accounts are simulated.