Versions list — click 1 hàng để diff với current. Cap 20, oldest auto-pruned.
📚 History — backtest / sweep / matrix runs đã lưu
Auto-save mỗi lần chạy. Click ☆ để pin. Tick ☐ 2 backtest để Compare.
Hướng dẫn: Mỗi lần chạy ▶ Run / 🔬 Sweep / 🌐 Matrix / 🚶 True WFA → tự động lưu vào đây.
Click ▶ Load để restore (KHÔNG cần chạy lại). Pinned (★) không bị auto-delete khi storage đầy.
Dung lượng: localStorage ~5MB, auto-prune oldest non-pinned khi gần đầy. Equity downsample 1000/300 điểm để save space.
Robustness Matrix — Multi-Symbol × TF × Period
Strategies (chọn 1+)
— builtin + saved
Symbols (chọn 1+)
Timeframes (chọn 1+)
Periods (yyyy-mm-dd → yyyy-mm-dd, mỗi dòng 1 period)
Hướng dẫn: Matrix robustness chạy strategy trên tất cả tổ hợp (symbol × TF × period). Nếu strategy dương ở 1 cell nhưng âm phần lớn cell khác → có khả năng overfit cho cell đó. Threshold tham khảo: ≥ 50% cells dương trên ≥ 3 symbol.
Thời gian: ~2-5s per cell (tùy data). Lần đầu khuyến nghị ≤30 combo.
Parameter Sweep — quét params tìm vùng ổn định
Data configOverride toolbar nếu cần — auto-sync khi mở modal
📊 Portfolio (multi-symbol)Tick ≥2 symbol để mỗi tổ hợp param chấm điểm trên đường equity danh mục (kèm dispersion qua từng symbol). 1 symbol = sweep thường.
Tham số phát hiện được từ on_init
Fold preview — train (vàng) + test (teal) cho mỗi fold. Anchored = train neo t₀ expand. Rolling = train cố định kích thước, dịch dần. Đổi slider / N folds / Mode → preview update.
Results
Bấm row/cell để chọn · ✓ pin để so sánh ≤4 combo · Bấm Apply khi sẵn sàng
3D Surface (rotatable — drag to rotate, scroll to zoom)Vùng đỉnh phẳng = stable plateau, đỉnh nhọn = sharp peak (risk overfit)
Combo đã chọn sẽ thay params trong editor + đóng modal — bấm ▶ Run để backtest.
Walk-Forward Folds
Đọc kết quả: Nếu best params giống nhau qua các fold + test metric stable → params thực sự generalize. Nếu best params nhảy lung tung mỗi fold → overfit cho từng giai đoạn. Efficiency Test/Train < 0.5 = risk overfit.
Train vs Test metric per fold
Efficiency per fold (test/train ratio) — thresholds 0.4 / 0.7
Best params drift— normalized to range
Session Stats
📊 Strategy Results
Output thuần của backtest — P&L, risk-adjusted, drawdown, phân phối.
Charts
Equity Curve
Drawdown (%)
Run-up / Drawdown Timeline
Underwater Duration Distribution (X = peak → recovery, only max DD ≥0.5%)
P&L Distribution (X = USD, Y = count)
R-multiple Distribution (chỉ lệnh có SL)
MAE Distribution (R-units, winners=green / losers=red)
MFE Distribution (R-units, winners=green / losers=red)
Edge Half-Life — Rolling 90-bar Sharpe (annualized)
window:
Performance
Total P&L
—
Final Equity
—
Ann. Return
—
Trades
—
Win Rate
—
Profit Factor
—
Avg Win
—
Avg Loss
—
Expectancy
—
Avg R
—
Payoff Ratio
—
Largest Win
—
Largest Loss
—
Win % Gross
—
Loss % Gross
—
Outliers
—
Outliers P&L
—
Acct Size Req
—
Avg Hold
—
Avg Hold (W)
—
Avg Hold (L)
—
Total Fees
—
Fee Drag
—
Avg Fee/Trade
—
Total Funding
—
Funding Drag
—
Risk-Adjusted
Sharpe
—
Sortino
—
Calmar
—
Omega Ratio
—
PSR
—
DSR
—
Sharpe SE
—
Sharpe CI95 lo
—
Sharpe CI95 hi
—
Drawdown & Pain
Max DD
—
Ulcer Index
—
M-I Theoretical DD
—
M-I Ratio
—
Max UW Time
—
% Time UW
—
Avg DD Dur
—
Avg DD Depth
—
Avg Run-up Dur
—
Avg Run-up
—
RoR Closed (50%)
—
RoR MC (50%)
—
Tail & Distribution
CVaR 95%
—
CVaR 99%
—
VaR 95%
—
VaR 99%
—
Tail Ratio
—
Common Sense
—
Return Skew
—
Return Kurt
—
GARCH Excess Kurt
—
Trade Behavior
Max Loss Streak
—
Max Win Streak
—
Trade ρ(1)
—
Avg MAE (R)
—
Avg MFE (R)
—
Winner MFE (R)
—
Loser MAE (R)
—
Ambiguous Bars
—
vs Buy-Hold Benchmark
Bench Return
—
Alpha
—
Info Ratio
—
Trade Clusters (K=4)
Keep
Cluster
N
WR
Avg PnL
Avg R
Avg Hold
Avg Hour
Avg MAE-R
Avg MFE-R
Triple-Barrier Outcomes
% TP-hit
—
% SL-hit
—
% Timeout
—
WR (TP-hit)
—
WR (SL-hit)
—
WR (Timeout)
—
ML Helpers
Avg Uniqueness
—
🔗 Strategy × Market Regime
Bridge: strategy hoạt động ra sao trong từng trạng thái thị trường. K-means auto. HMM lazy (Run button).
Regime Analysis (K-means, 30% warmup-fit)
% Trend-Up
—
% Chop
—
% Trend-Down
—
Sharpe (Up)
—
Sharpe (Chop)
—
Sharpe (Down)
—
Per-Trade Entry Regime — trades gắn nhãn regime lúc mở lệnh. Dự đoán hiệu quả của filter ctx.regime() khi chạy live.
Entry Regime
N
WR
PF
Total PnL
Avg PnL
Avg R
Avg Hold
Meta-Labeling Filter (threshold on regime WR)
⚠️ Filter trades theo entry-regime WR — chỉ giữ regime có WR ≥ threshold. Áp lên data table phía trên (regime source: K-means).
Regime
N trades
WR
Avg PnL
Total PnL
Keep?
Filtered PnL
—
Trades kept
—
Filtered WR
—
Lift
—
Hướng dẫn: Lọc trade theo win-rate của từng entry regime (K-means). Workflow: bảng phía trên cho thấy WR mỗi regime → set threshold → bảng dưới preview tác động lọc. Áp live qua if (ctx.regime() === regime_to_skip) return; trong strategy. ⚠️ Cảnh báo: thống kê in-sample — validate qua CPCV hoặc IS/OOS trước khi tin live. Regime source: K-means.
HMM Regime (3-state Gaussian, EM-trained)
Click để chạy:
Emission Distributions (μ = log return TB, σ = độ lệch chuẩn). Bull > Chop > Bear theo μ.
State
μ (log ret)
σ
% Time
Transition Matrix P(state kế | state hiện tại). Đường chéo cao = regime sticky. Off-diagonal = tốc độ chuyển.
Per-Trade Entry HMM State — trades gắn nhãn theo HMM Viterbi state lúc mở lệnh. Validate sức dự đoán: nếu WR/PF khác nhau rõ giữa các state → HMM dùng filter được.
Entry HMM State
N
WR
PF
Total PnL
Avg PnL
Avg R
Avg Hold
P(trend_up) Bucket Analysis — trades chia bucket theo HMM P(up) lúc mở. Test ngưỡng confidence: nếu bucket HIGH (P>0.66) WR+PF cao hơn bucket LOW (P<0.33) rõ → HMM predictive. Flat = noise.
P(up) Bucket
N
WR
PF
Total PnL
Avg PnL
Avg R
Avg Hold
Per-Side Stats (Long vs Short)
N (Long)
—
WR (Long)
—
PF (Long)
—
Calmar (Long)
—
N (Short)
—
WR (Short)
—
PF (Short)
—
Calmar (Short)
—
Time Patterns
Time-of-Day (Day-of-Week × UTC Hour) — Metric:
Monthly Returns (Năm × Tháng, % thay đổi equity) — xem seasonality + regime drift
Monte Carlo Percentiles (1000 shuffles)
DD p05
—
DD p50
—
DD p95
—
DD p99
—
Loss Prob
—
🌐 Robustness & Depth Tests
Bộ công cụ kiểm định độ bền — Monte Carlo, Null Test, IS/OOS, Stability, Permutation, Noise Injection.
Robustness Tests
Spaghetti (mỗi path equity tương lai mô phỏng)
Thống kê tổng hợp qua N mô phỏng
Max DD distribution (qua {N} sims, observed = đỏ đứt nét)
Null Hypothesis Test
Profit Factor: random distribution vs observed (tím)
Sharpe (normalized): random distribution vs observed
Hướng dẫn: Mỗi "strategy ngẫu nhiên" cùng số lệnh, cùng thời gian giữ, nhưng entry random trên cùng bars. p-value = % strategy random vượt observed. p < 0.05 ⇒ strategy thật có edge thật. p > 0.20 ⇒ kết quả backtest có thể chỉ do may mắn.
Lưu ý multi-testing: nếu đã sweep 100 combo, áp Bonferroni — threshold thực = 0.05/100 = 0.0005.
In-Sample / Out-of-Sample Validation
Regime Stability Analysis (rolling windows, N slices)
⚠️ Đo regime stability: cùng 1 bộ tham số, hiệu suất có ổn định qua các giai đoạn không.
Window preview — history (vàng) + forward (teal, slice kế không overlap). Anchored: history neo t₀, expand mỗi slice. Rolling: history cố định kích thước, dịch dần.
Hướng dẫn: 2 mode — Anchored: history neo bar 0, expand mỗi slice; Rolling: history cố định kích thước, dịch dần (bỏ data cũ nhất). Forward window = slice kế, không overlap nhau. Tính metrics riêng từng window — CÙNG params cả 2 bên (phân tích post-hoc). Sharpe forward sụp so với history → strategy không stable qua regime. Stability Ratio ≥ 0.70 = stable; 0.40–0.70 = degrade dần; < 0.40 = regime drift / edge cũ đang fade.
CPCV + PBO (Overfit probability)
⚠️ CPCV: nhiều train-test combo hơn WFA → estimate OOS Sharpe tight hơn. PBO: bootstrap trades → đo xác suất backtest này là overfit.
Splits
—
Mean OOS Sharpe
—
SD Sharpe
—
Median Sharpe
—
% Splits Positive
—
PBO
—
Hướng dẫn: CPCV mở rộng IS/OOS Validation thành nhiều train-test arrangements → distribution Sharpe OOS robust hơn (avoid pick-the-best-split overfit). PBO sử dụng bootstrap trade-resample làm proxy cho "strategy variation": nếu thay đổi nhỏ trades làm hiệu suất sụp ở OOS → strategy không robust. Note: PBO chuẩn yêu cầu N strategy variant từ sweep — version này là approximation đứng độc lập, không cần sweep trước.
Permutation Test (random price paths)
Total PnL: permuted distribution vs observed (tím)
Profit Factor: permuted distribution vs observed
Sharpe (normalized): permuted distribution vs observed
Equity paths: permuted Monte Carlo fan vs observed (tím) — "có thể đã xảy ra" nếu price path khác
Hướng dẫn: Shuffle log-returns của bars → reconstruct random price series cùng phân phối return. Re-evaluate entry/exit P&L của observed trades. Verdict dùng p_PF (PF scale-invariant + ít bias với trend-strategy hơn PnL). p_PF < 0.05 ⇒ logic strategy bắt được signal thật.
⚠️ Bias với trend-follower: shuffle phá autocorrelation → trend strategy thua hệ thống trên permuted data → observed > random expected (không phải proof edge). Cho trend strategy, Null Test (random entry trên real data) fair hơn vì random cũng nuốt drift.
Khác Null Test: Null randomize entries (test baseline random-entry); Permutation giữ entries, randomize bars (test khai thác cấu trúc dữ liệu).
Noise Injection (slippage / signal sensitivity)
PnL distribution under noise ▮ loss zone · ▮ ±1σ band · ┊ mean · ┃ observed
PF distribution under noise ▮ PF<1 (loss) · ▮ ±1σ band · ┃ observed
Hướng dẫn: 🎯 Trade re-price — entry+exit của observed trades bị perturb ±nhiễu×ATR, tính lại PnL (chỉ test execution slippage, nhanh ~ms).
🔁 Re-run signals — perturb OHLC mỗi bar + chạy lại full strategy mỗi iter, đo signal có còn trigger không khi giá nhiễu (true robustness, cost ≈ Sweep với N combo).
Sensitivity = std/|PnL observed|. Thấp (< 0.3) = robust, cao (> 0.7) = fragile. % Lãi = % iter vẫn lãi.
Khi nào dùng Re-run signals: strategy có rule so giá (breakout, level, crossover) — bắt knife-edge signal mà Trade re-price không thấy. Default N = 20 (cap 100) — mỗi iter = 1 full backtest.
Parameter Sensitivity (overfit / plateau)
Calmar distribution dưới nhiễu tham số · ▮ loss zone · ▮ ±1σ band · ┃ chosen params
Hướng dẫn: Nhiễu mỗi ctx.params["X"] ngẫu nhiên ±range% quanh giá trị đang chọn (param integer tự round), chạy lại full backtest mỗi mẫu (cost ≈ Sweep N combo).
Plateau ratio = median(noised) / chosen. ≈1 = chosen nằm trên vùng phẳng (robust); <0.5 = chosen là đỉnh nhọn may mắn (overfit — đổi param nhẹ là sụp).
% Pass = % mẫu vẫn lãi (metric >0, PF >1). Sensitivity = std/|chosen| (CV). Verdict: 🟢 robust nếu %pass >80 & plateau >0.7; 🔴 fragile nếu %pass <50 hoặc plateau <0.4.
Lưu ý: nếu strategy hardcode số trong ctx.declare() thay vì đọc ctx.params["X"] → mọi mẫu giống hệt nhau (panel sẽ cảnh báo). Sửa: dùng ctx.params["X"] trong declare.
Export
Download data backtest để phân tích bên ngoài (Excel, Python, etc.)
Trade List
Sortable — click header. Showing first 500 trades.
#
Open Time
Close Time
Side
Size
Entry
Exit
PnL
Fee
Net
R
Hold (bars)
Barrier
Reason
Strategy Logs
Output từ ctx.log(msg) trong strategy. Showing first 1000.
Chạy backtest để xem log.
🛑 Breakpoints
Hits từ ctx.break(cond?, label?) — luôn ghi snapshot kể cả khi ▶ Run thường. Showing first 500.
👀 Watches
Eval mỗi bar từ ctx.watch(name, fn). Sparkline = full series.
📊 Strategy Diff — side-by-side compare
Metrics comparison
Config comparison
Strategy code diff (vàng = dòng thay đổi, xanh = chỉ có ở B, đỏ = chỉ có ở A)
🌐 Market Lab — Phân tích thị trường
📅 Date rangeĐổi khoảng ngày cho toàn bộ phân tích Market Lab (đồng bộ 2 chiều với toolbar)
Phân tích đặc tính thị trường — MÔ TẢ, không DỰ ĐOÁN. Các tool dưới đây ước lượng tham số thống kê của price/returns trong một khoảng thời gian (autocorrelation, phân phối returns, tính dừng, regime vol, mối quan hệ chéo-symbol). Kết quả phụ thuộc khoảng thời gian được chọn — đổi range có thể ra kết quả khác. Tip: bấm 📌 lưu snapshot, đổi range, chạy lại, bấm ⇄ Diff để so 2 range.
📈 Market Structure
Kiểm định cấu trúc thống kê của bars — bước ngẫu nhiên, tính dừng, Hurst exponent, vol clustering, chu kỳ ẩn, regime.
Variance Ratio Test (VR)
VR(2)
—
VR(4)
—
VR(8)
—
VR(16)
—
Z(8)
—
p-val (q=8)
—
⚠ VR/Hurst đo autocorrelation, KHÔNG đo drift. Returns có thể có VR ≈ 1 (liền kề không tương quan, giống bước ngẫu nhiên) nhưng vẫn có drift dương (mean return > 0 → giá tăng tích lũy). Đây là 2 thuộc tính độc lập. Để kiểm drift/trend ở level: dùng KPSS trên log price. Để xem mean return: xem ô Mean trong Fat-Tail.
GARCH(1,1) Vol Dynamics
α (alpha)
—
β (beta)
—
Persistence
—
Lag-1 ACF²
—
📊 Return Distribution Analysis
Phân tích phân phối thực nghiệm của log returns — moments, tỷ lệ đuôi quan sát/kỳ vọng theo Chuẩn, khớp EVT trên đuôi.
Fat-Tail Distribution (asset returns)
📊 So phân phối thực nghiệm của log returns với phân phối Chuẩn (Gaussian). Ước lượng skew, excess kurtosis, tỷ lệ đuôi (quan sát / kỳ vọng theo Chuẩn), tham số hình dáng GPD trên đuôi.
N bars
—
Mean
—
σ (std)
—
Skew
—
Excess Kurt
—
Sự kiện |z|>3
—
Tỷ lệ đuôi (qs/kv)
—
GPD ξ (shape)
—
PDF thực nghiệm vs Phân phối Chuẩn (log-y để phơi rõ đuôi)
Q-Q plot so với Chuẩn (lệch khỏi đường y=x ở đuôi = đuôi dày)
Đọc chart: PDF chart trục y log — phân phối Chuẩn sẽ khớp đường Chuẩn (xám). Đường thực nghiệm cao hơn ở đuôi = đuôi dày hơn Chuẩn. Q-Q plot: các điểm khớp đường y=x = phân phối khớp Chuẩn; lệch khỏi đường ở đuôi = phân phối lệch khỏi Chuẩn ở vùng đó. Tỷ lệ đuôi (qs/kv) > 1 = phân phối thực có đuôi dày hơn Chuẩn. GPD ξ > 0 = đuôi suy giảm theo lũy thừa (không phải theo cấp số mũ như Chuẩn).
🔗 Pair / Cross-Asset Analysis
Phân tích mối quan hệ giữa 2+ asset — đồng pha cho pair trading.
Pair Cointegration (Engle-Granger)
⚠️ Kiểm xem 2 asset có hồi về mean với nhau không. Đầu vào = cùng date range của backtest.
β (hedge ratio)
—
α (intercept)
—
EG t-stat
—
p-value
—
Half-life (bars)
—
N đã align
—
Đọc verdict: ✅ Đồng pha = spread (A − β·B) là chuỗi dừng → có cân bằng dài hạn, residual hồi về mean. ❌ Không đồng pha = không có cân bằng dài hạn, spread có thể phân kỳ vô hạn. Half-life cho biết tốc độ hồi về mean (bars): càng nhỏ càng nhanh.