
Wuguan Wiki
Systems, filters and methodology of the platform — from the signal traffic light to strategy insights and filter mechanics.
Strategy Library
11 strategies, all explained
All trading strategies now have their own detail pages in the Strategy Library — with live performance, mini-backtest, pseudo-code, FAQ and a full guide. The previous strategies section of the wiki has moved there.
🥋 Browse the Strategy Library →
Direct strategy links:
Take Profit / Re-Entry
Price-Based
A simple trend-following strategy that takes profits at defined levels and waits for meaningful pullbacks before re-entering. Buys on the first day of the trading period and holds until the take-profit level is reached.
After a sale, the highest price since the sale is tracked. When price drops by a defined percentage below this high, the strategy re-enters.
Parameters:
- Take Profit (%) — Sell when price is X% above buy price
- Re-Entry Drop (%) — Buy when price drops Y% below the highest point since last sale
Note: At the end of the period, an open position is shown as "unrealized" — no forced sale at the last candle.
Strategy Filters
Entry filters for backtests
Min. Profit Guard
Not an indicator, but a safeguard: prevents selling when the current trade is at a loss exceeding a defined threshold. Instead of selling at a loss, the virtual entry is updated and a better signal is awaited.
Parameter: Max loss on sell (%) — e.g. -10% = no sale when trade is more than 10% in the red.
200 WMA Filter
The 200-period Weighted Moving Average (WMA) is one of the most widely used long-term trend filters. When price is above the 200 WMA, the asset is considered to be in an uptrend.
The filter prevents entries when price is below the 200 WMA. If a buy signal fires while price is below the WMA, the signal is not simply ignored — it is "parked". When price crosses back above the 200 WMA and the strategy hasn't issued a sell signal yet, the entry is executed at that point.
The filter always runs on the backtest timeframe — synchronized with the backtest candles. No forced exit when price falls below the 200 WMA — the strategy decides the exit.
Altcoin Season Filter
The Altcoin Season Filter uses the signal from the Altcoin Season Indicator to filter entries into altcoin pairs. The filter always runs on a weekly basis — regardless of the backtest timeframe selected. Only available for crypto pairs other than BTCUSDT.
Modes:
- Off — no filtering
- Aggressive — entry when signal is Green, or has just switched from Red to Yellow
- Conservative — entry only when signal is Green
No forced exit on signal change — the strategy decides the exit.
ATR Volatility Filter
ATR (Average True Range) measures the average candle range over the last 14 periods — a standard volatility metric. The filter allows entries only during matching volatility regimes.
Modes:
- Off — no filtering
- Low Vol — ATR below the rolling median of the last 100 periods (quiet phases)
- High Vol — ATR above rolling median × factor (active phases, default 1.5× for crypto, 1.3× stocks/ETF, 1.2× forex)
- Expansion — ATR rising fast (default 1.3× vs 20 periods ago): volatility breakout
Available for all asset classes. Defaults pre-tuned per asset class; all parameters (lookback, factor) can be overridden in the UI. No forced exit when volatility shifts.
ATR Trailing Stop / Chandelier Exit (Exit Modifier)
The only filter that affects exits. Two modes selectable:
- ATR Trailing Stop — stop = max(prevStop, HighestHighSinceEntry − ATR × multiplier). The stop only ratchets up, never down. Classic monotonic trailing stop.
- Chandelier Exit — stop = HighestHighOfLastN − ATR × multiplier, where N (default 22) is the lookback. The stop can also fall again when the rolling N-bar high recedes — more flexible after consolidations make new highs.
Both use Wilder-smoothed ATR(14). Once close drops below the respective stop, the trade is closed regardless of strategy signal.
Multiplier defaults: Crypto 2.5 (volatile, more breathing room), Stocks/ETF/Commodities 2.0, Forex 1.5. Larger = wider stop (fewer exits, higher drawdown tolerance). Chandelier also has a Lookback parameter (default 22 bars).
Not applicable to DCA or Buy & Hold — there are no strategic SELL decisions there. Exit reason is marked in the trade list ([Trailing Stop]).
Volatility Insights (Pro+)
Under /dashboard/volatility-insights we aggregate saved backtests by volatility regime at entry (low/normal/high/expansion). At a glance you see which strategy performs in which regime. Light variant over the last 300 runs — heuristic, not an optimization tool.
ATR-based strategy: Keltner Channel Breakout
Alongside the ATR filters we recently added a standalone ATR strategy: Keltner Channel Breakout. Mid-line is an EMA, upper/lower bands are ATR multiples around it. BUY on an upward crossover of the upper band, SELL on mid-line or lower-band crossing depending on mode. Details in the Strategy Library.
Grid Trading
KuCoin Spot Grid · Backtest
Grid trading places buy and sell orders at pre-defined price levels within a range. The bot profits from sideways volatility: every time the price crosses down through a level, it buys; when the price crosses back up through the next level above, it sells. Profit per round trip = (sell price − buy price) ÷ buy price − 2 × fee.
Example: BTC at $70,000. You set a range of $40k–$90k with 50 grids.
- Grid interval = ($90k − $40k) ÷ 50 = $1,000
- At setup the bot pre-buys BTC to fund the 20 sell-levels above $70k
- Cash is held for the 30 buy-levels below $70k
- BTC drops to $69k → a $1,000 buy fires
- BTC rises back to $70k → the bot sells the coins it bought at $69k for $70k → profit ≈ 1.4 % per round trip (minus fees)
When grid trading works
Grid bots profit when price oscillates within the range. In strong trends they underperform buy & hold (selling too early on the way up, buying all the way down).
Allocation logic
The bot does not split investment 50/50 between coins and cash. Instead the split is determined by the number of buy vs sell orders relative to the entry price. For the 40k–90k / 50 grids / 70k example above (50,000 USDT investment) the allocation works out to roughly 35 % coins / 65 % cash — because 30 of 50 levels are buy orders, and only 20 sell orders need a pre-allocation in coins.
Each sell order holds orderSize ÷ levelPrice coins, so a fill returns exactly orderSize USDT — KuCoin-conform.
Adjacent-level pairing
In the backtester (and on KuCoin live): after a buy at level K, a sell is placed at level K+1. After a sell at level K, a buy is placed at level K−1. That is where the "Profit per grid" spread comes from — every round trip, not just the initial allocation.
When does a grid bot work?
| Market regime | Grid bot outcome |
|---|---|
| Sideways / choppy | ⭐⭐⭐⭐⭐ Ideal — maximum grid hits |
| Moderate uptrend with volatility | ⭐⭐⭐ Works, but B&H often wins |
| Strong uptrend | ⭐⭐ Bot sells into strength, misses the run |
| Strong downtrend | ⭐ Bot buys the whole way down, exits at low |
Arithmetic vs. geometric
| Type | Spacing | When to use |
|---|---|---|
| Arithmetic | Equal USDT spacing per level (e.g. $1,000) | Tight range, similar prices — % profit higher at bottom than top |
| Geometric | Equal % spacing per level | Wide range (e.g. $20k–$100k BTC) — consistent % profit per grid |
Key risks: (1) Out-of-range = bot pauses — if price drops below the lower bound, no new trades fire and you sit on the remaining coins at depressed prices until price re-enters the range (or until your optional stop-loss triggers). (2) Choosing the range is the actual decision — easy in hindsight, a real call going forward. (3) Fees compound — at 0.1 % and 500 trades, fees alone eat ~10 % of gross.
Backtest tool
The question every grid user should answer before committing capital: "Would this configuration have worked over the last X months?" That is exactly what the Grid bot backtest page does on 15-minute Binance data — free access for BTCUSDT/ETHUSDT, all pairs for Pro+.
Ladder Stacking
Z-Score-aware sat accumulation · simulator + live tracking
Ladder stacking is a BTC accumulation strategy that couples the multiplier of your weekly buy amount to the current cycle Z-Score — buy more when low, trim when high. A construct from the Bitcoin-lifestyle community (CSH defaults), available on our platform as both simulator and live tracker.
CSH default bands (by Z-Score bucket):
- 0–30 → Buy 4× (deep value, accumulate aggressively)
- 30–50 → Buy 2× (below fair)
- 50–70 → Buy 1× (normal weekly DCA)
- 70–85 → Trim 5 % of BTC holdings (monthly)
- 85+ → Trim 10 % (overheated)
Buy actions weekly (Mon), trim actions monthly (1st Mon of month, or rolling 4 weeks depending on setup). Un-deployed cash earns 4 % APY (realistic stablecoin yield).
Calculator (Free + Pro+)
Two modes at /dashboard/bitcoin/lifestyle/btc-ladder-stacking:
- Backward — simulation on historical cycle presets (2018 cycle, 2022 cycle, current 2025 cycle). Free.
- Forward — Z-Score analog matching: the system finds all historical weeks with similar Z (±tolerance), simulates per anchor, aggregates to median/best/worst. Custom date + tolerance: Pro+.
Live tracking (Pro+ exclusive)
A weekly cron (Mon 08:00 UTC) reads the current Z-Score, determines the action for each of your portfolios, writes a pending action to the DB and sends an email + optional Telegram alert with concrete recommendation. In the dashboard you click confirm / skip / edit (own fill price for slippage). Plus: manual-action button for ad-hoc buys outside the weekly cadence, and custom-bands editor for your own Z thresholds instead of CSH defaults.
Comparison vs alternatives
Ladder isn't for everyone. Lump-sum or static-DCA folks don't need this. It pays off only if you a) have cycle awareness, b) accumulate regularly and c) track Z-Score data actively — the tracker takes the last part over.
HODL vs Static DCA vs Ladder Stacking
| Strategy | Capital | Activity | Z-Score? |
|---|---|---|---|
| HODL Lump-Sum | One-shot buy on day 0 | Zero after the buy | — |
| Static DCA | Constant amount per week | Mechanically weekly | Ignored |
| Ladder Stacking | Weekly base × Z multiplier | Weekly + monthly trim | Drives every buy/trim |
Calculator vs live tracking
Calculator is educational — you try cycle presets, understand the bands, compare against HODL + static DCA baselines. Free for 3 presets, Pro+ for custom date + forward projection.
Live tracking is operational — you create a portfolio, the cron sends weekly action recommendations by email + optional Telegram, you click confirm/skip/edit. Performance vs HODL + static DCA baselines is computed with your real values. Pro+ exclusive: Pro = 3 active portfolios, Elite = unlimited.
Key trade-off: ladder only works if you accumulate cycle-aware AND actually execute the weekly recommendations. If you should buy 4× but are cash-constrained, you get a diluted effect. If your spreadsheet misses every other Monday, run static DCA — less optimal but consistent. The tracker fixes the bookkeeping problem, not the discipline problem.
Tools
Calculator + live tracker both live at /dashboard/bitcoin/lifestyle/btc-ladder-stacking (tab "Live Tracking" for the operational variant). Spec: docs/specs/spec-btc-ladder-stacking-calculator-v1.md + docs/specs/spec-btc-ladder-tracking-v1.md.
Portfolio Simulator
5-asset allocation · historical what-if analysis
The portfolio simulator answers a simple question: "How would my mix of Bitcoin, S&P 500, Ethereum, Gold and Cash have performed historically?" — and shows the result against 100% Bitcoin as a reference, using real daily closes since asset inception (BTC from 2010, ETH from 2015, S&P from 1993, Gold from 1990).
The tool is intentionally simple: 5 sliders, time range, rebalancing mode — done. The didactic message is the more important one: <strong>more end capital is not always the better portfolio.</strong> 100% BTC beats almost every mix on end value over the last 10 years — but the Sharpe of a diversified mix can be twice as high, the max drawdown a third as large.
The 5 assets in detail
- <strong>Bitcoin (BTC)</strong> — from 2010-07-17. USD daily closes from Binance + backfill.
- <strong>S&P 500</strong> — from 1993-01-29. We use <em>SPY-ETF Adjusted Close</em> (dividends auto-reinvested) as a total-return proxy. Otherwise the comparison against BTC would be unfair (S&P investors collect ~2%/year in dividends).
- <strong>Ethereum (ETH)</strong> — from 2015-08-07 (mainnet launch). EODHD source.
- <strong>Gold</strong> — from 1990-01-01. XAUUSD spot instead of LBMA fix (difference <1%).
- <strong>Cash</strong> — earns the daily 3-month US T-Bill rate (FRED DTB3). At 4% annual, cash grows ~0.016% per day. Max DD = 0, Sharpe ≈ 0 — cash carries no market risk, but also no premium.
Slider logic (proportional re-normalization)
When you change one slider, the others keep their <strong>ratio between each other</strong> but get proportionally scaled so the total always stays 100%.
<strong>Example</strong> — start: BTC 25 · SPX 45 · ETH 10 · GOLD 15 · CASH 5. You drag Gold from 15 → 30:
- Room left for the other four = 100 − 30 = 70
- Current sum of the others = 25 + 45 + 10 + 5 = 85
- Each other slider is scaled by × 70/85 → BTC 20.6 · SPX 37.1 · ETH 8.2 · CASH 4.1
- Plus Gold 30 = 100% ✓
<strong>Three additional rules:</strong>
- Sliders at 0 stay at 0 (lets you deliberately exclude assets).
- If only one asset is > 0, we distribute evenly across all others.
- Float drift is pushed onto the largest other slider so it always reads exactly 100%.
Rebalancing
- <strong>Never:</strong> initial mix stays, portfolio drifts. In a long BTC rally a 20% BTC slice can grow to 50%.
- <strong>Yearly:</strong> mix resets on the first trading day of each new year. Bogleheads standard.
- <strong>Quarterly:</strong> rebalance on the first trading day of each new quarter. Tighter control, higher trading costs in real life.
Metrics
Under the chart four values per column (mix vs 100% BTC):
- <strong>End value</strong> — what €100 grew to
- <strong>Sharpe</strong> — risk-adjusted return, higher = better. Dynamic risk-free rate from FRED per period.
- <strong>Max drawdown</strong> — largest peak-to-trough decline
- <strong>Volatility</strong> — annualized standard deviation of daily returns
The better value per row wins (orange highlight). For end value + Sharpe higher wins; for drawdown + vol smaller wins.
What the simulator is NOT
Not a future prediction. Not a trade simulator with timing. No DCA mode (lump-sum on start date). No fees or taxes modeled.
Tool
Live at /dashboard/portfolio/simulator (Pro+). Pure-function engine in src/lib/portfolio/simulate.ts, reproducible with identical inputs (SHA-256 hash cache). Spec: docs/specs/spec-portfolio-simulator.md.
Signal Status (Traffic Light)
The traffic light shows you at a glance whether a strategy currently has a buy signal (open position) or no signal (no position) — without running a backtest every time.
Colors
🟢 Green — Strategy says BUY (open position)
🔴 Red — Strategy says SELL (no position)
⚪ Grey — Not yet calculated
How does it work?
The cron job calculates the status automatically — daily at 00:05 UTC for daily candles, Mondays for weekly candles. You create a signal (asset type, pair, interval, strategy) and the status updates automatically.
All strategies at once
Instead of adding individual strategies, you can choose the "All strategies" mode. This calculates every available strategy for each asset+interval and displays them as separate rows.
Import from Alerts
If you already have alerts set up, you can import them as signals with one click — this way you instantly see the current status of your alert configurations.
Plan limits:
Free— 1 signalPro— 15 signalsElite— 25 signals
Strategy Insights — Methodology
The Strategy Insights page aggregates all backtest results on the platform into an overview. The calculation follows a three-stage process:
Stage 1: Deduplication
Identical runs (same asset + period + parameters) count once. 100 users with the same BTCUSDT RSI/SMA 1W backtest = 1 data point, not 100.
Stage 2: Per asset — time-weighted CAGR
For each asset, a time-weighted average is calculated. A 6-year backtest with 18% CAGR weighs three times more than a 2-year backtest with 14% CAGR. Overlapping periods are merged into their union.
Stage 3: Overall — time-weighted across all assets
Asset results are again averaged using time-weighting. Assets with longer effective periods have more influence on the overall value.
Calculation example
BTC: Avg 16.67% · 6 years (union)
AAPL: Avg 9.00% · 4 years
ETH: Avg 22.00% · 3 years
Overall = (16.67×6 + 9×4 + 22×3) / (6+4+3) = 15.54%
This methodology ensures that neither popular combinations nor short time periods skew the overall result.
Arena Score
Quality Rating 0–100
The Arena Score (0–100) evaluates the quality of a backtest result in a single metric. It combines four dimensions:
- Return (30 pts): How much does the strategy beat Avg B&H?
- Efficiency (25 pts): CAGR relative to Max Drawdown (MAR Ratio)
- Consistency (25 pts): Win Rate + Profit Factor combined
- Sample Size (20 pts): Number of trades — statistical validity
Grades: S (85–100) · A (70–84) · B (55–69) · C (40–54) · D (25–39) · F (0–24)
Important: Few trades automatically lead to a low score — regardless of how good CAGR and Win Rate look.
Altcoin Season Indicator
Analysis Tool
The Altcoin Season Indicator shows you at a glance whether altcoins or Bitcoin currently dominate the market.
Layer 1 — Trend Analysis: 4 market dominance relations (BTC Dominance, Altcoin Dominance, Stablecoin Dominance, Total Market Cap) are evaluated using proprietary trend analysis. A weighted score determines the color: Green (Altcoin Season), Yellow (Transition), Red (Stay Away). Layer 1 determines the overall signal.
Layer 2 — CoinGecko Top-50: Additional information: How many of the top 50 altcoins outperformed BTC over the last 90 days? Does not currently influence the overall signal.
Layer 3 — Strategy Activity: Coming Soon — measures whether algorithmic strategies on altcoins are currently more profitable than on BTC. Available once sufficient community data exists.
Chart: Shows BTC price, BTC Dominance, Altcoin Dominance and Stablecoin Dominance over time. Background color reflects the current Altcoin Season signal.
Sentiment Dashboard
Community Activity
The Sentiment Dashboard shows what the community is currently testing — aggregated from all backtest runs on the platform.
- Asset Popularity: Which assets are tested most?
- Strategy Popularity: Which strategies are trending?
- Trending Assets: Which assets are gaining or losing interest?
- Community Profit Trend: Is the share of profitable runs per asset rising or falling?
- Activity Heatmap: When is the community most active?
All data is anonymized and aggregated. No conclusions about individual users possible.
Supported Markets
Crypto · Stocks · ETFs · Commodities · Forex — 70+ exchanges worldwide
Crypto runs on Binance (all spot pairs). Stocks, ETFs, commodities and forex via EODHD All-World. If the search box returns a ticker, the backtest will work too — we whitelist against the All-World plan to avoid 404s on price data.
Crypto
All Binance spot pairs. BTC/USDT and ETH/USDT on Free, everything else from Pro.
🌎 Americas
USA (NYSE/NASDAQ/AMEX), Canada (Toronto, TSX Venture, NEO), Brazil, Mexico, Argentina, Chile, Peru.
Suffixes: .US · .TO · .V · .NEO · .SA · .MX · .BA · .SN · .LIM
🌍 Europe
UK (LSE), Germany (XETRA + 7 regional exchanges), France, Netherlands, Belgium, Portugal, Spain, Switzerland, Austria, Ireland, Luxembourg. Nordics: Sweden, Denmark, Norway, Finland, Iceland. Eastern Europe: Poland, Hungary, Czech Republic, Romania, Croatia. Greece.
Suffixes: .LSE · .XETRA (F/MU/BE/HM/HA/DU/STU) · .PA · .AS · .BR · .LS · .MC · .SW · .VI · .IR · .LU · .ST · .CO · .OL · .HE · .IC · .WAR · .BUD · .PR · .RO · .ZSE · .AT
🌏 Asia-Pacific
Australia (ASX), South Korea (KOSPI, KOSDAQ), Taiwan (TWSE, OTC), China (Shanghai, Shenzhen), Indonesia, Malaysia, Philippines, Vietnam, Thailand, Pakistan, Sri Lanka.
Suffixes: .AU · .KO / .KQ · .TW / .TWO · .SHG / .SHE · .JK · .KLSE · .PSE · .VN · .BK · .KAR · .CM
🌍 Africa & Middle East
South Africa (JSE), Egypt, Morocco, Nigeria, Kenya, Ghana, Tanzania, Uganda, Zambia, Malawi, Mauritius, Rwanda, Botswana, Zimbabwe (ZSE + VFEX). Israel (TASE).
Suffixes: .JSE · .EGX · .BC · .XNSA · .XNAI · .GSE · .DSE · .USE · .LUSE · .MSE · .SEM · .RSE · .XBOT · .XZIM · .VFEX · .TA
💱 Forex
All majors and crosses (EUR/USD, GBP/USD, USD/JPY, USD/CHF, AUD/USD, USD/CAD, NZD/USD, plus Euro and Yen crosses). Backtest access from Elite.
Suffix: .FOREX
As of 2026-04-20 · 73 exchanges in the EODHD All-World plan. The current state may change — if dashboard search does not return a ticker, it is outside our plan and not available for backtests.
Benchmarks
Avg B&H
Avg B&H answers the question: "What return would a typical investor have achieved if they had bought on a random day and held until the end?" Instead of assuming a perfect entry on day one, it calculates the average CAGR across all possible entry points that had enough time remaining to be meaningful. This makes it a more realistic benchmark than a fixed-date Buy & Hold.
B&H Fixed
The classic Buy & Hold: invest everything on day one, hold until the end. Useful as an aspirational benchmark — but remember that the result depends entirely on your chosen start date. A bear-market start makes any strategy look great by comparison.
DCA (Dollar-Cost Averaging)
Invests fixed amounts at regular intervals regardless of price. Removes the question of timing and reflects how most real investors actually enter the market. A strategy that beats DCA is beating a realistic, executable alternative.