Strategy
A live dashboard and research library for systematic market strategies. Each strategy gets its own tab, with signal, back-test, and Monte Carlo validation shown separately.
Guarded A5/B25 SMA20 Lead Signal
Computes the strategy state from S&P 500 daily closes: base exposure is 1x only when close is above SMA20; drawdown of 5% arms 2x and drawdown of 25% arms 3x. Recovery leverage is allowed when price is within 0.75% below SMA20 or better.
Strategy Rules
- Base trend rule: hold 1x S&P exposure only when the SPX close is above the 20-day SMA. Otherwise hold cash/T-bills.
- 2x recovery tier: if the S&P is down 5% or more from its closing high-water mark, the 2x tier is armed.
- 3x recovery tier: if the S&P is down 25% or more from its closing high-water mark, the 3x tier is armed.
- Lead guard: recovery leverage can run when close is at least 99.25% of SMA20, i.e. within 0.75% below SMA20 or above it.
- Exit recovery: 2x resets after the S&P rises 40% from the tier entry close. 3x resets after the S&P rises 15% from the tier entry close.
The official signal uses the latest completed daily close and matches the backtest logic. The intraday signal is provisional and can use a delayed SPX quote through an API/proxy or a manually entered price.
Data Source
Official Signal: Last Completed Close
Load data to calculate the close-based signal.
| Signal date | - |
|---|---|
| Close | - |
| SMA20 | - |
| Close vs SMA20 | - |
| Drawdown from high | - |
| Regime | - |
| Last entry level | - |
| P&L from last entry | - |
| Recovery target | - |
| Distance to recovery target | - |
Live Intraday Signal: Provisional
Enter a live price or quote endpoint to calculate a provisional signal.
| Signal timestamp | - |
|---|---|
| Live / provisional price | - |
| Provisional SMA20 | - |
| Price vs SMA20 | - |
| Drawdown from high | - |
| Regime | - |
| Last entry level | - |
| P&L from last entry | - |
| Recovery target | - |
| Distance to recovery target | - |
SPX Close vs 20-Day SMA
Selected Window Equity P&L
Shared Strategy State From Daily History
| Daily data through | - |
|---|---|
| High-water close | - |
| 2x entry level (-5%) | - |
| 3x entry level (-25%) | - |
| EOD close above SMA20? | - |
| Recovery lead level | - |
| 2x trigger (A) | -5% drawdown from S&P high-water close |
| 3x trigger (B) | -25% drawdown from S&P high-water close |
Guarded Strategy Calculator
Input A, B, X, and Y, then calculate the historical drawdown, CAGR, Sharpe ratio, and ending value. A is the drawdown that starts 2x, B is the drawdown that starts 3x, X is the upside from the 2x entry where 2x is released, and Y is the upside from the 3x entry where 3x is released.
Default Guarded values: A = 5%, B = 25%, X = 40%, Y = 15%, and recovery lead guard = 0.75% below SMA20.
Advanced assumptions
| Trades | - | Trading costs | - |
|---|---|---|---|
| Cash / 1x / 2x / 3x | - | ||
| Tier entries | - | ||
Goal Seek / Optimizer
Tick any value you want to keep fixed. Unticked values are optimized across the ranges below. If A, B, X, and Y are all unticked, the optimizer searches freely and returns the best combinations for the selected objective: high CAGR, low drawdown, or high Sharpe.
Search ranges for unfixed values
Results show the best combinations, with extra variety across any unfixed inputs so you can see how A, B, X, and Y behave across the search range.
| Rank | A | B | X | Y | CAGR | Max DD | Sharpe | End value | Trades |
|---|---|---|---|---|---|---|---|---|---|
| No optimizer results yet. | |||||||||
Back-test Overview
These results use the project backtest engine over 1996-05-17 to 2026-05-15 with $100 starting capital, $10 fixed annual inflows, 1.0% rebalance cost, and the engine funding-cost model. The default strategy is Guarded A5/B25 SMA20 Lead: base 1x exposure is allowed only above SMA20, while recovery 2x/3x exposure can start when price is within 0.75% below SMA20.
Calmar = CAGR / absolute max drawdown; multiple = end value divided by discounted contributions.
The new default improved the historical result versus the original strict A10/B20 version: CAGR rose from 29.39% to 39.09%, while max drawdown improved from -34.37% to -27.51% in the project backtest.
Top 20 Strategy Drawdowns
Largest peak-to-trough declines on default Guarded strategy equity over the full back-test sample.
| # | Depth | Peak | Trough | Recovery | Period | Trading days |
|---|---|---|---|---|---|---|
| Load historical data to compute drawdowns. | ||||||
SPX vs Default Strategy Equity
Browser-side chart preloaded from committed historical SPX daily closes, then updated by Refresh signal when newer daily data is available. Both lines start at $100 and include $10 annual inflows. The chart uses a log scale so the SPX buy-and-hold line remains visible beside the much larger strategy result.
Full-Sample Strategy Comparison
Full sample: 1996-05-16 to 2026-05-15. Cash time is percent of sessions with zero risky exposure.
| Strategy | CAGR | Ann vol | Sharpe | Max DD | End value | Trades | Cash |
|---|---|---|---|---|---|---|---|
| Buy & hold 1x | 11.38% | 19.12% | 0.517 | -53.67% | $2,533 | 0 | 0.00% |
| Buy & hold 2x | 13.47% | 38.24% | 0.442 | -85.66% | $4,382 | 1 | 0.00% |
| Buy & hold 3x | 13.16% | 57.35% | 0.417 | -97.32% | $3,994 | 1 | 0.00% |
| SMA20 1x/cash | 16.05% | 10.99% | 3.913 | -16.92% | $8,601 | 868 | 37.08% |
| SMA20 2x/cash | 26.23% | 21.97% | 3.794 | -33.92% | $107,235 | 868 | 37.08% |
| SMA20 3x/cash | 35.76% | 32.95% | 3.754 | -49.16% | $951,245 | 868 | 37.08% |
| Guarded A5/B25 SMA20 Lead | 39.09% | 27.88% | 3.164 | -27.51% | $1,965,783 | 774 | 28.87% |
| Original Guarded A10/B20 SMA20 | 29.39% | 26.65% | 3.232 | -34.37% | $224,918 | 878 | 37.08% |
Legacy Guard SMA Sensitivity
Earlier A10/B20 tiering study kept for reference. The site default is now the A5/B25/X40/Y15 lead-guard version above.
| Strategy | CAGR | Sharpe | Max DD | End value | Cash | 1x | 2x | 3x | Tier entries |
|---|---|---|---|---|---|---|---|---|---|
| Guarded A10/B20 SMA20 | 29.39% | 3.232 | -34.37% | $224,918 | 37.08% | 26.15% | 10.31% | 26.46% | 8 / 5 |
| Guarded A10/B20 SMA50 | 20.41% | 2.163 | -46.31% | $26,007 | 33.97% | 31.97% | 6.47% | 27.60% | 5 / 2 |
| Guarded A10/B20 SMA200 | 17.88% | 1.408 | -35.47% | $13,765 | 28.22% | 33.92% | 19.91% | 17.95% | 6 / 2 |
Forward and Out-of-Sample Checks
Earlier A10/B20 strategy tested on later periods without changing parameters. Kept as historical reference.
| Period | Strategy | CAGR | Ann vol | Sharpe | Max DD | End value | Trades |
|---|---|---|---|---|---|---|---|
| 2006-2026 | Guarded A10/B20 SMA20 | 32.69% | 26.14% | 3.078 | -20.94% | $31,409 | 576 |
| 2006-2026 | SMA20 3x/cash | 37.50% | 32.10% | 3.751 | -48.23% | $64,800 | 568 |
| 2006-2026 | SMA20 2x/cash | 27.40% | 21.40% | 3.783 | -32.76% | $13,714 | 568 |
| 2006-2015 | Guarded A10/B20 SMA20 | 32.84% | 29.82% | 2.953 | -20.94% | $1,689 | 313 |
| 2016-2026 | Guarded A10/B20 SMA20 | 36.45% | 21.57% | 3.184 | -17.23% | $2,477 | 263 |
The OOS results are strong for the guarded strategy: the 2006-2026 forward period improved drawdown sharply versus SMA20 3x/cash while retaining a high compound return. This does not eliminate future regime risk, but it is a better check than only looking at the full in-sample history.
Monte Carlo Validation
The Monte Carlo run stress-tests the default Guarded A5/B25/X40/Y15 SMA20 Lead strategy over 200 synthetic 10-year market paths. Paths are built with 21-trading-day blocks sampled from historical S&P and T-bill data, preserving short-term clustering better than single-day random sampling.
Monte Carlo Comparison
Summary across 200 simulated 10-year paths for the final candidate and two reference versions.
| Strategy | Median CAGR | P10 / P90 CAGR | Median max DD | P10 / P90 max DD | Median Sharpe | Median end value | P(DD < -40%) |
|---|---|---|---|---|---|---|---|
| Lead 0.75 A5/B25 X40/Y15 | 36.96% | 26.46% / 50.02% | -28.18% | -39.72% / -18.86% | 3.269 | $2,060 | 10.0% |
| Lead 0.75 A10/B20 X40/Y15 | 34.39% | 24.46% / 45.09% | -28.64% | -39.71% / -19.04% | 3.220 | $1,716 | 10.0% |
| Original strict A10/B20 X25/Y33 | 30.17% | 20.63% / 41.38% | -28.96% | -42.77% / -18.74% | 3.503 | $1,261 | 16.5% |
Risk Probabilities
| Question | Monte Carlo result |
|---|---|
| Probability max drawdown is worse than -35% | 22.0% |
| Probability max drawdown is worse than -40% | 10.0% |
| Probability max drawdown is worse than -50% | 1.5% |
| Probability ending below starting capital | 0.0% |
Default Strategy Diagnostics
Full-sample diagnostics for the A5/B25/X40/Y15 lead-guard default.
| Metric | Value | Metric | Value |
|---|---|---|---|
| Cash days | 28.87% | 1x days | 9.00% |
| 2x days | 48.51% | 3x days | 13.62% |
| 2x entries | 10 | 3x entries | 4 |
| Lead-only days | 751 | Rebalances | 774 |
| Total trading costs | $2,021,175 | Total funding costs | $129,679 |
The Monte Carlo profile is attractive but not drawdown-free. A -35% drawdown remains plausible, while a -50% drawdown was uncommon in this simulation. Position sizing should assume the strategy can still spend long periods underwater.
Momentum Strategy Research
This strategy tab collects the momentum leverage tests run over the same 30-year S&P 500 history: $100 starting capital, $10 fixed annual inflow, 1.0% rebalance cost, and the project funding-cost model. It includes both faster daily momentum triggers and slower long-hold momentum rules designed to stay in 2x/3x for longer.
Momentum Signal Design
These are research signals rather than one live production signal. Each rule maps market state to a target exposure of cash, 1x, 2x, or 3x. The key design difference is whether the rule reacts quickly to trend changes or intentionally holds leverage through normal pullbacks.
The research takeaway is not that every momentum indicator works. RSI, MACD, monthly regime, and absolute-momentum trailing stop were materially weaker in this setup. Keltner, Donchian, SMA slope, and SMA stack are the strongest candidates for further refinement.
Daily Momentum Trigger Rules
| Signal | Cash / 1x | 2x trigger | 3x trigger | Exit / de-risk rule |
|---|---|---|---|---|
| SMA stack momentum | Cash below SMA200; 1x above SMA200 | Close > SMA50 > SMA200 | Close > SMA20 > SMA50 > SMA200 | Falls back as the SMA stack weakens |
| SMA slope momentum | Cash below SMA200; 1x above SMA200 | Close > SMA50 with positive SMA50 slope | Strong positive SMA20 and SMA50 slopes | Falls back as slope or price filters fail |
| MACD momentum | Cash below SMA200; 1x above SMA200 | MACD > signal line | MACD histogram positive and rising | Fast MACD deterioration reduces exposure |
| RSI momentum | 1x when RSI > 50 | RSI > 55 and close > SMA50 | RSI > 60 and close > SMA20 | Momentum threshold failures reduce exposure |
| Donchian breakout momentum | Cash below SMA200; 1x above SMA200 | 60-day high breakout | 120-day high breakout | 20-day low reduces to 1x; SMA200 break exits |
| Vol-adjusted SMA stack | Starts from SMA stack momentum | Same as SMA stack, reduced in high volatility | Same as SMA stack, capped when vol is very high | Reduces one tier above 25% realized vol; caps at 1x above 35% |
Long-Hold Momentum Rules
| Signal | Entry logic | Why it holds longer | Main risk observed |
|---|---|---|---|
| Long-hold 3/6/12m momentum | 1x/2x/3x from 12m, 6m, and 3m absolute momentum | Uses slower 6m/12m exits after high leverage is active | Stayed 3x often, but drawdowns were still deep |
| SMA stack hysteresis | Enter 3x on SMA20 > SMA50 > SMA200 | Uses SMA100/SMA50 exits instead of immediate fast-stack exit | Lower CAGR and still near -51% historical max DD |
| Absolute momentum trailing stop | Enter leverage on 6m/12m absolute momentum | Holds until 3-month low or SMA100 trailing stop breaks | Poor risk control in major reversals |
| ADX trend strength | Add leverage when +DI leads -DI and ADX confirms trend strength | Does not require repeated breakouts once trend is strong | Trend-strength confirmation lagged in some reversals |
| Keltner trend channel | EMA50/EMA100 trend with ATR channel breakout | Stays leveraged until EMA50/EMA100 trend breaks | Best candidate, but drawdown still reached -47.94% |
| Monthly momentum regime | Month-end 3/6/12m momentum and 10-month SMA | Monthly rebalance reduces churn | Too slow in this configuration; weak CAGR with high drawdown |
Back-test Overview
Full-sample results cover 1996-05-16 to 2026-05-15. The goal was to see whether momentum indicators could keep 2x/3x exposure for longer without taking unacceptable drawdowns after costs and annual contributions.
Daily Momentum Trigger Backtests
Sorted by historical CAGR. Exposure columns show percent of trading sessions at each target leverage.
| Strategy | CAGR | Ann vol | Sharpe | Max DD | End value | Trades | Cash | 1x | 2x | 3x |
|---|---|---|---|---|---|---|---|---|---|---|
| Donchian breakout momentum | 18.48% | 23.59% | 1.512 | -34.28% | $16,041 | 379 | 26.68% | 29.98% | 4.69% | 38.65% |
| SMA stack momentum | 15.66% | 23.44% | 2.298 | -46.12% | $7,773 | 1,047 | 28.22% | 19.94% | 14.93% | 36.91% |
| Vol-adjusted SMA stack | 14.29% | 23.02% | 2.234 | -45.87% | $5,435 | 1,022 | 29.45% | 19.08% | 14.75% | 36.72% |
| SMA slope momentum | 13.27% | 23.94% | 2.067 | -42.00% | $4,153 | 1,009 | 24.18% | 20.88% | 24.09% | 30.86% |
| MACD momentum | 1.77% | 19.46% | 2.576 | -64.66% | $167 | 1,204 | 28.22% | 34.33% | 21.71% | 15.74% |
| RSI momentum | 1.63% | 25.68% | 3.217 | -90.04% | $161 | 1,987 | 37.64% | 13.71% | 9.90% | 38.75% |
Long-Hold Momentum Backtests
These rules were built specifically to remain in 2x/3x longer than fast momentum triggers.
| Strategy | CAGR | Ann vol | Sharpe | Max DD | End value | Trades | Cash | 1x | 2x | 3x |
|---|---|---|---|---|---|---|---|---|---|---|
| Keltner trend channel | 21.46% | 29.10% | 2.152 | -47.94% | $33,757 | 768 | 30.62% | 4.94% | 8.88% | 55.56% |
| Long-hold 3/6/12m momentum | 17.80% | 32.59% | 0.957 | -38.41% | $13,479 | 259 | 24.92% | 9.08% | 5.98% | 60.03% |
| SMA stack hysteresis | 10.99% | 29.11% | 1.109 | -51.06% | $2,259 | 557 | 28.22% | 7.09% | 14.48% | 50.21% |
| ADX trend strength | 8.90% | 25.57% | 1.396 | -63.87% | $1,278 | 539 | 28.22% | 25.83% | 5.02% | 40.92% |
| Monthly momentum regime | 8.52% | 32.41% | 0.471 | -64.00% | $1,150 | 87 | 32.42% | 3.88% | 8.90% | 54.80% |
| Absolute momentum trailing stop | 3.67% | 30.17% | 1.648 | -87.31% | $292 | 765 | 33.04% | 6.57% | 0.00% | 60.39% |
Reference Benchmarks
References are shown to make the momentum results easier to compare with the existing website strategy.
| Strategy | CAGR | Ann vol | Sharpe | Max DD | End value | Trades | Cash | 3x |
|---|---|---|---|---|---|---|---|---|
| SMA20 3x/cash | 35.76% | 32.95% | 3.754 | -49.16% | $951,245 | 868 | 37.08% | 62.92% |
| Guarded A10/B20 SMA20 | 29.39% | 26.65% | 3.232 | -34.37% | $224,918 | 878 | 37.08% | 26.46% |
| SMA20 2x/cash | 26.23% | 21.97% | 3.794 | -33.92% | $107,235 | 868 | 37.08% | 0.00% |
| SMA20 1x/cash | 16.05% | 10.99% | 3.913 | -16.92% | $8,601 | 868 | 37.08% | 0.00% |
| Buy & hold 1x | 11.38% | 19.12% | 0.517 | -53.67% | $2,533 | 0 | 0.00% | 0.00% |
Historically, none of the new momentum candidates beat the existing Guarded A10/B20 SMA20 or the simple SMA20 3x/cash reference on CAGR. The best reason to keep studying them is behavior: Keltner and Donchian provide different entry/exit mechanics, while long-hold 3/6/12m momentum produced the lowest rebalance count among the high-leverage candidates.
Monte Carlo Stress Test
I ran a separate momentum Monte Carlo scan across all 12 momentum candidates and four references. It uses 75 synthetic 10-year market paths, 21-trading-day blocks sampled from historical S&P returns and T-bill yields, and sampled historical high/low relationships for rules such as ADX and Keltner.
Treat this as a screening Monte Carlo, not the final production validation. It is broad across many strategy rules; once a short list is chosen, those finalists should get a full 500+ path run like the Guarded A10/B20 SMA20 tab.
Momentum Candidate Monte Carlo Summary
Median and probability values across the 75 synthetic 10-year paths.
| Strategy | Group | Median CAGR | P10 / P90 CAGR | Median max DD | P(DD < -40%) | P(CAGR > 20%) | Median 3x |
|---|---|---|---|---|---|---|---|
| Keltner trend channel | Long-hold | 31.10% | 15.53% / 49.19% | -34.44% | 20.0% | 80.0% | 47.10% |
| SMA slope momentum | Daily trigger | 23.27% | 11.42% / 35.36% | -32.44% | 18.7% | 58.7% | 25.36% |
| SMA stack momentum | Daily trigger | 22.88% | 11.58% / 37.21% | -29.82% | 9.3% | 64.0% | 29.09% |
| Donchian breakout momentum | Daily trigger | 20.29% | 10.23% / 33.66% | -31.98% | 16.0% | 50.7% | 31.23% |
| Vol-adjusted SMA stack | Daily trigger | 18.27% | 9.48% / 32.52% | -31.39% | 6.7% | 44.0% | 27.18% |
| Long-hold 3/6/12m momentum | Long-hold | 14.05% | 2.89% / 29.40% | -50.54% | 90.7% | 36.0% | 47.10% |
| SMA stack hysteresis | Long-hold | 13.03% | 4.21% / 25.49% | -47.86% | 85.3% | 29.3% | 40.56% |
| ADX trend strength | Long-hold | 11.24% | 4.54% / 21.28% | -40.79% | 52.0% | 16.0% | 35.79% |
| MACD momentum | Daily trigger | 8.09% | 2.09% / 15.23% | -36.14% | 32.0% | 0.0% | 14.40% |
| Monthly momentum regime | Long-hold | 6.13% | -2.48% / 19.62% | -65.47% | 100.0% | 8.0% | 42.06% |
| RSI momentum | Daily trigger | 1.90% | -5.26% / 11.74% | -58.55% | 97.3% | 0.0% | 36.94% |
| Absolute momentum trailing stop | Long-hold | 0.94% | -9.52% / 13.72% | -75.29% | 100.0% | 4.0% | 47.14% |
Reference Monte Carlo Context
| Reference | Median CAGR | P10 / P90 CAGR | Median max DD | P(DD < -40%) | P(CAGR > 20%) | Median 3x |
|---|---|---|---|---|---|---|
| SMA20 3x/cash | 39.69% | 25.78% / 62.42% | -36.87% | 33.3% | 97.3% | 61.15% |
| Guarded A10/B20 SMA20 | 29.85% | 20.86% / 41.14% | -29.59% | 12.0% | 96.0% | 21.39% |
| SMA20 2x/cash | 29.79% | 21.38% / 43.44% | -24.85% | 2.7% | 92.0% | 0.00% |
| Buy & hold 1x | 14.28% | 7.34% / 20.33% | -32.00% | 16.0% | 13.3% | 0.00% |
The Monte Carlo scan is more favorable to Keltner than the historical backtest, but it still shows a meaningful drawdown profile. SMA stack momentum looks more balanced in simulation: lower median CAGR than Keltner, but the lowest probability of a -40% drawdown among the momentum candidates.