Most trading systems are static. You define a set of rules — RSI below 30 means oversold, buy here — and the system applies those rules identically on day one and day one hundred. The problem is that markets are not static. A signal that worked reliably in trending conditions becomes noise in range-bound markets. A momentum setup that worked all year falls apart when macro volatility spikes. Static rules go stale.
AutoQuant was built on a different premise: what if the system learned from every trade and updated its own signal weights accordingly? That is Bayesian signal grading in one sentence. Here is what six months of running it has taught me.
What Bayesian Signal Grading Is
Bayesian inference is a method for updating your beliefs based on new evidence. In trading, you start with a prior belief about a signal — say, "RSI divergence on the daily chart leads to a reversal 58% of the time." Every time the system takes a trade based on that signal, it records the outcome and updates the prior. Over time, the signal's weight in the scoring model reflects its actual track record rather than its theoretical merit.
The critical insight is that signal performance is conditional. RSI divergence might have a 58% hit rate in low-volatility conditions and a 31% hit rate in high-VIX environments. A naive system treats these as the same signal. AutoQuant conditions each signal's weight on the market regime it is operating in. This means the same set of rules produces very different behavior depending on whether we are in a trending, volatile, or ranging environment.
How the Scanner Works
The scanner runs twice daily — at 9:15am ET (after pre-market settles) and at 2:30pm ET (before the close volatility window). Each run scans a watchlist of 80 names across six signal categories:
- Momentum signals — relative strength vs. SPY, VWAP relationship, volume confirmation
- Mean-reversion signals — Bollinger Band extremes, RSI divergence, gap fill setups
- Structure signals — key level tests, prior day high/low, weekly pivots
- Options flow signals — unusual call/put sweeps above $50K notional
- Macro regime signals — VIX level, sector rotation patterns, dollar strength
- Earnings catalyst signals — upcoming earnings, analyst revision clusters
Each signal fires or does not fire for each name on the watchlist. When enough signals align in the same direction — based on their current Bayesian weights — the scanner elevates the name to the trade queue with a composite conviction score.
The Signal Grading Flow
P(win | signal, regime)
What 6 Months of Data Taught Me
The most important thing the data showed me is not which signals work — it is which signals are real versus which feel real. There is a large category of signals that look compelling in a sample of 10-20 trades and statistically wash out across 100+. The Bayesian grader is ruthless about this. Signals that are noise will trend toward 50% win rates over time, and the system will de-weight them automatically.
The three signals with the highest posterior weights after six months are options flow (63% win rate, 800+ samples), key level tests with volume confirmation (61%, 400+ samples), and earnings momentum carried into the following week (58%, 180 samples). The three signals with the lowest weights are RSI alone without volume (49%, effectively noise), Bollinger Band touches without RSI confirmation (51%), and gap fills without options confirmation (50%).
The biggest insight: most of the signals I came in with strong intuitions about were noise. Most of the signals the data validated were ones I was less excited about because they were less "narratively satisfying." The grader does not care about your narrative.
Auto-Journaling Every Autopsy
Every trade that exits — win or lose — triggers an automatic autopsy. The autopsy script pulls the trade details from Alpaca, constructs a structured log entry with entry price, exit price, hold time, signals that fired, market regime at entry, and outcome, and then prepends it to a running journal file.
The journal is not meant to be read manually. It is the training data for the Bayesian updater. But I do read it — weekly, as part of my Sunday review — and it is the most valuable learning document I have. Three months of autopsy data contains patterns that I could not have consciously observed across that many trades. The system surfaces what repetitive human attention would miss.
What Breaks
The system has two known failure modes. First, regime changes that happen faster than the posterior can update. If the market goes from low-volatility trend to high-volatility chop in two sessions, the system is still trading the previous regime's weights for the first few days. This is unavoidable in any adaptive system — you need sample data to update, and sample data takes time to accumulate. The fix is a hard regime-change override that reduces position sizes by 50% whenever VIX moves more than 20% in two consecutive days.
The second failure mode is correlation clustering — when multiple signals fire simultaneously but are actually measuring the same underlying condition. Three momentum signals confirming a setup feels like 3x conviction. But if they are all downstream of the same VWAP relationship, it is actually 1x conviction with three labels. The system now de-correlates the signal vector before scoring, which reduced false high-conviction reads significantly.
The current win rate across all trades is 57%, up from 46% in the first month when I was running static rules. That improvement is the Bayesian grader at work. It is not dramatic. But compounded across hundreds of trades, a 57% win rate with a favorable risk-reward ratio is a profitable system. That is the goal.