Strategy Arena is your Monte Carlo trading strategy stress-test simulator!
Strategy Arena is a free, open- source trading strategy simulator designed to help you stress-test trading systems against brutal Monte Carlo simulations. It compares survivability, drawdown, expectancy, risk of ruin, and regime adaptability across multiple trading strategies using real simulated market conditions β no mock data, no cherry-picked results.
With complete privacy in mind, Strategy Arena runs entirely in your browser β no accounts, no backend, no tracking. Just you and the arena.
β
10 Strategy Archetypes β Momentum, Breakout, Scalping, VWAP, Mean Reversion, Price Action, SMC/ICT, Pullback, Order Flow, and Opening Range Breakout. Each with unique tradable DNA.
β
Editable Strategy DNA β Tune signal strictness, risk/reward, discipline, revenge tendency, slippage sensitivity, risk per trade, and commission per trade.
β
8 Market Regimes β Test against Trending Bull/Bear, Ranging, High/Low Volatility, News Shocks, Low Liquidity, and Random Mixed markets. Mix and match any combination.
β
Monte Carlo Engine β Simulates hundreds to thousands of independent trading paths per strategy/regime combination. Real statistics, not single-curve backtests.
β
Arena Champion Leaderboard β Strategies ranked by Survivability Score, which prioritizes longevity over raw returns.
β
Rich Visualizations β Survivability bar chart, risk vs reward scatter map, regime survivability heatmap, champion equity curve, champion drawdown curve, champion DNA radar chart.
β
Arena Verdicts & Post-Mortem β Auto-generated insights: Best Overall, Safest, Highest Return, Most Dangerous, Beginner Friendly, Regime Dependent, Most Psychologically Brutal, Worst Overall.
β
Simulation Modes β Quick (100 trades, 250 paths), Standard (300 trades, 1000 paths), Deep (500 trades, 2500 paths).
β
Share App β Native Web Share API support on mobile, clipboard fallback.
β
Local Storage Persistence β All strategy edits and regime selections save automatically to your browser.
β
Offline-First β Works without internet after initial load.
β
Open Source (MIT) β Free forever, no paywalls, no data collection.
Strategy Arena uses a number of open-source technologies to work properly:
- Alpine.js β Lightweight reactive frontend framework.
- Tailwind CSS β Utility-first styling for a clean, dark interface.
- Plotly.js β Interactive, publication-quality charts.
- LocalStorage API β Offline-first data persistence for strategy DNA.
- Web Share API β Native sharing on mobile devices.
Strategy Arena is fully web-based β no installation needed. Try it now:
β‘οΈ Strategy Arena Online Demo (Update with your actual URL)
Or, to run locally:
git clone https://github.com/michaelsboost/StrategyArena.git
cd StrategyArenaTo preview Strategy Arena locally, use a simple Python server:
python3 -m http.server 8000Then, open http://localhost:8000 in your browser.
All Strategy Arena data is stored exclusively in your browser's localStorage under keys arena_strats and arena_regimes. This means:
- β No accounts or sign-ups required
- β No data ever leaves your device
- β No tracking, analytics, or telemetry
- β Works completely offline
- β Your strategy DNA and regime selections persist between sessions
Your custom strategy parameters and enabled/disabled regimes save automatically. Reset to defaults anytime with the β³ Reset button.
Strategy Arena is built around one reactive Alpine.js component (arenaApp()) that contains all state and methods. Here's how the core metrics are calculated:
| Metric | Calculation |
|---|---|
| Win Rate | Simulated outcome based on strategy DNA + market regime + random variance across Monte Carlo paths |
| Survivability Score | (Survival Rate Γ 0.4) + ((100 - Max Drawdown) Γ 0.2) + (Win Rate Γ 0.2) + (Positive Return Bonus Γ 0.2) |
| Risk of Ruin | Percentage of Monte Carlo paths where equity fell below 20% of starting capital |
| Expectancy | Average profit/loss per trade (account %) across all paths |
| Max Drawdown | Average peak-to-trough decline across all paths |
| Regime Adaptability | How survivability score changes across different market conditions |
For each enabled strategy in each enabled regime:
- Simulates N trades (100/300/500 based on mode)
- For each trade, calculates win probability from:
- Base probability (35% + DNA bias + signal strictness)
- Regime modifiers (trend coefficient, chop factor, fakeout rate)
- Strategy discipline and revenge tendency
- Rolls random number β determines win/loss
- Calculates PnL using risk/reward on loss or win
- Subtracts commissions and slippage
- Updates equity curve and max drawdown
- Strategy "blows up" if equity < 20% of starting
- Repeats for M paths (250/1000/2500)
- Averages results across all paths
No mock data. Every win and loss is statistically generated based on your strategy's DNA and the market regime you choose.
| Parameter | What It Does | Default Range |
|---|---|---|
| Signal Strictness | Higher = fewer, higher-quality trade setups | 0.00 - 1.00 |
| Risk/Reward Target | Profit target relative to risk (e.g., 2.0 = risk $1 to make $2) | 0.80 - 3.50 |
| Discipline Level | Consistency of following trading plan | 0.20 - 1.00 |
| Revenge Tendency | Likelihood of tilt-trading after losses | 0.00 - 1.00 |
| Slippage Sensitivity | How much market friction affects fills | 0.00 - 1.00 |
| Risk Per Trade | Percentage of account risked per trade | 0.5% - 4.0% |
| Commission | Transaction cost per trade (USD) | $0 - $15 |
Each strategy archetype starts with unique baseline DNA tuned to its trading style. Expand any strategy card and tweak the sliders to create custom variants.
The Monte Carlo engine simulates different market conditions by manipulating volatility, trend strength, chop, and fakeout frequency. Enable/disable any combination:
| Regime | Characteristics | Best For |
|---|---|---|
| π Trending Bullish | Strong upward bias, low chop | Momentum, Pullback, Breakout |
| π Trending Bearish | Strong downward bias | SMC/ICT, Momentum (short) |
| βΈοΈ Ranging / Choppy | Sideways, frequent reversals | Mean Reversion |
| πͺοΈ High Volatility | Large price swings, high slippage | Breakout, Order Flow |
| π Low Volatility | Tight ranges, low friction | Scalping, VWAP |
| π° News Shock | Spike volatility, fake moves | Avoid or trade with breakout |
| π§ Low Liquidity | Poor fills, higher slippage | Avoid (VWAP, Scalping suffer) |
| π² Random Mixed | Unpredictable, no edge | Price Action |
- Survival β Survivability Score (100 = perfect)
- WinRate β Average win percentage across all paths
- Expectancy β Average profit/loss per trade
- MaxDD% β Average maximum drawdown
- RiskRuin% β Chance of blowing up the account
- Best Regime β Which market condition suits this strategy most
- Verdict β Arena Champion / High Risk / Failed Stress Test / Robust Survivor
- Who Survived Best? β Horizontal bar chart of survivability scores
- Risk vs Reward β Scatter plot showing MaxDD vs Return. Top-right = best risk-adjusted returns
- Regime Survivability Heatmap β See exactly which strategies thrive in which markets. The most powerful chart in the Arena.
- Champion Equity Curve β Median account growth path of the winning strategy
- Champion Drawdown Curve β Pain-over-time visualization
- Champion DNA Radar β How the winner scores across survivability, drawdown resistance, win rate, and ruin safety
Awesome! Strategy Arena is free and open-source, and contributions are always welcome.
πΉ Submit a Pull Request β Found a bug? Have a feature idea? Let's build together!
πΉ Add New Strategy Archetypes β Propose new trading styles with baseline DNA.
πΉ Improve Regime Models β Add mean reversion volatility, correlation shocks, or intraday patterns.
πΉ Enhance Monte Carlo Engine β Add position sizing models or correlated asset simulations.
πΉ Spread the Word β Share Strategy Arena with traders, quants, and backtesting enthusiasts.
πΉ Fork & Experiment β Build your own trading simulator!
- All strategy data stored in localStorage key:
arena_strats - All regime data stored in localStorage key:
arena_regimes - The Alpine component
arenaApp()contains all state and methods - Add new strategies by extending
DEFAULT_STRATSarray with name, shortDesc, bestRegime, worstRegime, dnaBias, and paramsDefault - Add new regimes by extending
REGIMES_LISTwith volatility, trendCoef, chopFactor, fakeout, and optional slippageMalus - Keep the design mobile-first, dark, and card-based
- No external tracking, no accounts, no backend β preserve privacy
If Strategy Arena has been helpful to you, here are some ways you can show support:
β Buy me a coffee: ko-fi.com/michaelsboost
π¨ Grab some of my art prints: DeviantArt Store
π Grab some merch: Merch Store
π Check out my Graphic Design Course: Learn Design
πΈ Send a thank you: Tip what it's worth to you
Your support helps keep Strategy Arena free, open-source, and constantly improving. π
Strategy Arena is open-source under the MIT License.
See the full license: LICENSE
For questions, feature requests, or collaborations, reach out to:
Michael Schwartz β michaelsboost.com

