Backtesting Arena

Backtesting Arena

PricingBlogBuild SaaS
🧭How it works🥋Strategies📖Wiki📓Glossary🎓How-To📚Reports
🧭Market State Today
🧱Market Structure₿BTC × Macro📈Market Pulse
🌀Arena Pulse
🌡Arena Heat Chart
🎯Dip Decision Tool
💶DCA vs. Lump Sum
🔗Portfolio Correlation
💧Liquidity Fair Value
🌍Macro Regime
🌐Market Pulse (Multi-Asset)soon
📊Bitcoin Charts
📍Max Pain History
🧘Bitcoin Lifestyle Calculator
📖Bitcoin Wiki
🔥Altcoin SeasonPro
💎Altcoin Screener
📥Market Charts
📊Strategy InsightsPro
🌍Market InsightsPro🔬Filter InsightsElite
🧪Edge Library
🥇Edge Leaderboard
📡Live Tracking
⏳Volatility InsightsPro
🏅Arena Score
💼Portfolio
₿Crypto
📈Tokenized RWAPro
📋My Backtests
⚖️Active vs Passive
🔔Alerts
🚦Signal Status
🤖Grid Bot Testing
🧪Strategy Mixersoon
🏆Winner's List
🎰Backtest Roulette
🌡️Sentiment
💡Improvements
🎁Referral
💬Telegram
🦋Bluesky
👥Reddit
𝕏X (Twitter)
🧭How it works
🥋Strategies
📖Wiki
📓Glossary
🎓How-To
📚Reports
🏠Overview
📖API Docs (interactive)
🔑Keys & Plans
📜OpenAPI 3.1
📦Postman Collection
🤖llms.txt
🧩skill.md
📝 BlogBuild SaaS💳 Pricing
LoginSign up

⚠ Not financial advice. All backtests are historical simulations — no guarantee of future results.

Study the Past — Improve your Future.

🟠Backtesting Arena· © 2026
How it worksPricingLeaderboardAPIImpressumDatenschutzAGBCookie-HinweisKontakt
📘 Built with Claude — how this platform was built in 70h (guide + boilerplate)→
Backtesting Arena

Backtesting Arena

PricingBlogBuild SaaS
🧭How it works🥋Strategies📖Wiki📓Glossary🎓How-To📚Reports
🧭Market State Today
🧱Market Structure₿BTC × Macro📈Market Pulse
🌀Arena Pulse
🌡Arena Heat Chart
🎯Dip Decision Tool
💶DCA vs. Lump Sum
🔗Portfolio Correlation
💧Liquidity Fair Value
🌍Macro Regime
🌐Market Pulse (Multi-Asset)soon
📊Bitcoin Charts
📍Max Pain History
🧘Bitcoin Lifestyle Calculator
📖Bitcoin Wiki
🔥Altcoin SeasonPro
💎Altcoin Screener
📥Market Charts
📊Strategy InsightsPro
🌍Market InsightsPro🔬Filter InsightsElite
🧪Edge Library
🥇Edge Leaderboard
📡Live Tracking
⏳Volatility InsightsPro
🏅Arena Score
💼Portfolio
₿Crypto
📈Tokenized RWAPro
📋My Backtests
⚖️Active vs Passive
🔔Alerts
🚦Signal Status
🤖Grid Bot Testing
🧪Strategy Mixersoon
🏆Winner's List
🎰Backtest Roulette
🌡️Sentiment
💡Improvements
🎁Referral
💬Telegram
🦋Bluesky
👥Reddit
𝕏X (Twitter)
🧭How it works
🥋Strategies
📖Wiki
📓Glossary
🎓How-To
📚Reports
🏠Overview
📖API Docs (interactive)
🔑Keys & Plans
📜OpenAPI 3.1
📦Postman Collection
🤖llms.txt
🧩skill.md
📝 BlogBuild SaaS💳 Pricing
LoginSign up
Strategies›Fibonacci Retracement

⚠ This strategy is no longer active

Retired 2026-06. Across the bulk sample (Alle Assets, Produktionsläufe ≥5 Trades, Pair-Median-Aggregat (61 Paare, Stand 2026-06-23). Das nominelle +1,9% ist von toten Alt-Pairs (Ø B&H −9,7%) geschönt — auf liquiden Majors verliert die Strategie (lauf-gewichtet −9,2% Median). Trailing-Exit-Prototyp half (+20pp) reichte aber nicht über B&H. Kurations-Abschaltung: zu schwach vs Roster + nach Kosten negativ, nicht „verliert B&H".) only 29 of 61 assets beat Avg B&H — avg strategy -7.8% vs B&H -9.7% (avg ΔCAGR +1.9%). The data stays visible; it is no longer offered in the backtester.

Fibonacci Retracement master

Fibonacci Retracement Strategy

Trend-confirmed pullback to a Fibonacci level (default 61.8 % of the recent swing). Custom — configure level, trend method, TP/Stop.

View Live Insights →

Quick Facts

Type:
Mean Reversion · Trend Following
Plan:
Pro
Asset Classes:
Crypto · Tokenized RWA
Indicators:
Swing High/Low · Fibonacci levels · SMA (trend filter)

Community Performance

ⓘ
CAGR
-6.8%
Win Rate
39%
Max DD
-47%

Basis: 279 user backtests · BTCUSDT · 1d · 4 years

How It Works

The Fibonacci Retracement assumes that after a strong move, price often pulls back to a specific ratio of the prior swing before continuing in the original direction. The classic levels are 23.6 %, 38.2 %, 50 %, 61.8 % (golden ratio) and 78.6 %. Empirically the 61.8 % level is the most-watched and most-tested entry zone in trend trading.

Setup: every bar we compute the Swing-High and Swing-Low of the previous swingLookback bars (default 50). The Buy-Level is SwingHigh − (SwingHigh − SwingLow) × buyLevel/100. We only enter long if the trend filter confirms an uptrend.

Trend filter — two methods:

  • sma (default): fastSMA > slowSMA (e.g. 50 > 200). Classic, robust on daily/weekly.
  • structure: higher highs and higher lows over trendLookback bars vs. the preceding window. Pure price-action, no MA dependency.

Entry: in an uptrend, when the previous bar's close was above its buy-level and the current bar's close drops below the current buy-level — the pullback has reached the Fib retracement.

Exit (against the entry swing — openSwing is frozen on entry):

  • TP-Level reached (default 0 % = back to Swing-High).
  • Stop-Level broken (default 100 % = Swing-Low broken — invalidation of the swing).

Look-ahead protection: swing detection uses window [i-lookback, i-1], never bar i itself. All Buy/TP/Stop levels at bar i are built from data ≤ bar i-1.

The strategy is universal — works on any liquid asset class. The pullback-to-61.8 idea is one of the oldest patterns in TA.

Entry & Exit Rules

▲Entry

  • ●Trend filter says uptrend (SMA fast > slow, OR HH+HL structure)
  • ●Position is currently flat
  • ●Previous close ≥ previous buy-level (price was above the Fib zone)
  • ●Current close < current buy-level (price has pulled back into the Fib zone)

▼Exit

  • ●Close ≥ TP-Level (default Swing-High, 0 % retracement), OR
  • ●Close < Stop-Level (default Swing-Low, 100 % retracement = invalidation)
  • ●Position is currently long

Parameters

NameDefaultRangeDescription
Swing Lookback5010–500Bars used to define the Swing-High and Swing-Low.
Buy Level (% retracement)61.80–100Where to BUY in the Fibonacci ladder. 61.8 = golden ratio (default).
Trend Methodsma–`sma`: classic moving-average filter. `structure`: higher-highs + higher-lows.
Trend SMA Fast502–500Fast SMA for the trend filter (sma mode).
Trend SMA Slow2002–500Slow SMA for the trend filter (sma mode).
TP Level (% retracement)-27.2-200–100Take-profit level on the Fibonacci ladder. 0 = back at Swing-High, -27.2 = 1.272 Fib-Extension above Swing-High (default, Drost-Style). Negative values = extensions above Swing-High.
Stop Level (% retracement)78.60–200Stop level. Default 78.6 = next-deeper Fib (tight stop, ~17% range distance from 61.8 buy). 100 = Swing-Low broken. >100 for deeper invalidation.

Live Backtest

The pre-baked mini-backtest is refreshed daily — check back soon or start a live run in the Arena.

Run in Arena →

Performance per Asset

Top-10 assets by average CAGR (1d interval), aggregated from community + platform backtests. Actual results depend on parameters and period.

AssetCAGRvs B&H★Win%YearsRuns
LINKUSDT+19.1%-26.8pp—47%6.58
PEPEUSDT+16.5%+25.3pp—36%1.84
DOGEUSDT+12.5%-44.1pp—45%5.85
LTCUSDT+10.6%+6.3pp—49%6.55
MKRUSDT+7.5%-19.4pp—39%4.54
IMXUSDT+7.4%+60.2pp—50%2.78
ETCUSDT+5.8%+1.7pp—44%6.46
APTUSDT+5.7%+53.9pp—55%1.86
THETAUSDT+5.2%+2.0pp—31%5.65
FTMUSDT+3.4%-69.9pp—37%4.33
pp = delta vs avg-B&H · ★ = robustness score 0-100 (CAGR / win-rate / drawdown / consistency).Full Insights →

Pseudo-Code

expand
// Trend filter
uptrend = trendMethod == 'sma'
  ? fastSMA[i] > slowSMA[i]
  : higherHigh(highs, i, trendLookback) and higherLow(lows, i, trendLookback)

for each bar i:
  prevSwing = swing(i - 1, swingLookback)   // window [i-1-lookback, i-2]
  currSwing = swing(i,     swingLookback)   // window [i-lookback,   i-1]
  if no prevSwing or no currSwing: continue

  pBuy = prevSwing.hi - (prevSwing.hi - prevSwing.lo) * buyLevel/100
  cBuy = currSwing.hi - (currSwing.hi - currSwing.lo) * buyLevel/100

  // ENTRY: trend-confirmed pullback into Fib-Level
  if position.is_flat and uptrend:
    if close[i-1] >= pBuy and close[i] < cBuy:
      BUY  (freeze openSwing = currSwing)

  // EXIT: TP or stop, against frozen openSwing
  if position.is_long:
    tp   = openSwing.hi - (openSwing.hi - openSwing.lo) * tpLevel/100
    stop = openSwing.hi - (openSwing.hi - openSwing.lo) * stopLevel/100
    if close[i] >= tp or close[i] < stop: SELL

Strengths & Weaknesses

+Strengths

  • ●Classic, well-known pullback pattern — every chart-trader can read it
  • ●Trend filter avoids the worst counter-trend losses
  • ●Universal — works on any liquid asset class
  • ●Look-ahead-free swing detection (window [i-lookback, i-1])

−Weaknesses

  • ●Pullbacks of exactly 61.8 % are rare — actual hit rate depends on tolerance
  • ●Trend filter on SMA(50/200) means slow on shorter timeframes
  • ●Strong trends can shoot up without pulling back at all (missed entries)
  • ●Win-rate is sensitive to swing lookback — too short = noise, too long = stale levels

Frequently Asked Questions

Why these specific Fibonacci levels (61.8 %, 38.2 %)?+

The 61.8 % ratio is the inverse of the golden ratio (1.618) — a number from the Fibonacci sequence that appears throughout nature, art and (some claim) market psychology. 38.2 % is 1 − 61.8. 50 % is not strictly Fibonacci but is included by convention. The empirical edge comes from these levels being **watched by many traders**, which creates a self-fulfilling support zone.

Why no shorts?+

Phase 1 is long+cash only — same scope as all our long-only strategies. The strategy can be inverted (pullback to 61.8 % in a downtrend = SHORT entry) but that's a future addition.

Related Strategies

Golden Cross

The classic trend-following signal — when the 50-day SMA crosses above the 200-day SMA, the trend has flipped bullish.

SMA

RSI Overbought / Oversold

The textbook RSI strategy — buy when oversold (RSI < 30), sell when overbought (RSI > 70). Best in sideways markets.

RSI

EMA Trend Bias

Two EMAs plus an ATR-based neutral zone — like the commercial Larsson Line, but tunable, transparent, and backtested. Choose your bias.

EMA · ATR

Don't want to backtest yourself?

Check out our Strategy Insights Reports — pre-baked deep-dives with historical results, comparisons, and market context.

📊 View Reports →

Ready to backtest?

Open the Arena →