How to Analyze TradingView Backtest Results
TradingView already provides trade statistics and risk ratios. Analyze the simulation settings and the underlying observations before interpreting any score. This guide follows one process: reconcile the export, define the calculations, inspect uncertainty, then test changed rules on separate data.
Why win rate alone misleads
Win rate omits payoff size. In an explicitly hypothetical 100-trade sample, 65 wins of $100 and 35 losses of $300 produce $6,500 of gains and $10,500 of losses: net -$4,000 and profit factor about 0.62 before any additional costs. A high win percentage can coexist with a negative result.
For that sample, expectancy is 0.65 × $100 − 0.35 × $300 = -$40 per trade. The break-even win rate at those fixed payoffs is 300 / (100 + 300) = 75%, before costs. These are arithmetic examples, not recorded trades or predictions.
Before comparing strategies, reconcile completed trade count, total net P&L, currency, capital, commissions, partial exits and open positions. Save symbol, timeframe, date range, script version and broker-emulator settings. Missing rows or a different contract multiplier can invalidate every later calculation.
Next inspect risk ratios, tail observations, conditional scenarios, changes through time and excursion data. Position sizing is a separate decision requiring a loss model and portfolio constraints. None of these checks can recover prices or execution information absent from the export.
Risk-adjusted metrics: Sharpe, Sortino, and Calmar ratios
Sharpe divides excess return by return standard deviation. State whether observations are daily account returns, monthly returns or individual trade percentages; align the risk-free input to that unit and period. Pineify currently subtracts the configured risk-free value from the mean trade percentage and multiplies by the square root of trades per year. It does not automatically reconcile all rate conventions.
Sortino replaces total variability with a downside measure, but definitions differ. Pineify takes the root mean square of negative trade percentages, dividing by the number of negative observations. A target-deviation formula divided by all observations gives a different answer. The gap between Sharpe and Sortino alone cannot diagnose a safe return distribution.
Calmar compares annualized growth with percentage drawdown over the chosen interval. Match equity construction and period before using the Calmar ratio calculator. A short profitable period can annualize to a very large number; zero drawdown also needs an explicit undefined-case convention.
Pineify accumulates imported net cash results in entry-sorted trade order. Overlapping positions may close in a different order, and floating losses are absent. A ratio derived from that curve cannot establish the worst loss experienced by a marked-to-market account. Inspect the original platform equity series when that distinction matters.
TradingView already reports Sharpe and Sortino in its strategy report. External analysis is optional. Compare like-for-like samples and definitions rather than assuming that one platform has discovered risk the other does not measure.
Distribution and tails: inspect the actual observations
Inspect the observed distribution before choosing a model. Negative asymmetry, isolated large losses or clustered outcomes can matter, but do not assume every strategy has the same tail shape. A histogram describes the sample; an unobserved crash is not made impossible by an empty bin.
Historical VaR selects a lower-tail return threshold; CVaR summarizes the observations at or below a chosen threshold. Sign, percentile interpolation and ties differ across implementations. They describe a sample-based model, not a guarantee that losses will stay within a bound in 95 of the next 100 trades.
Pineify uses zero-based index floor(N × 0.05) of sorted trade percentages for its 95% VaR, then averages all values at or below it for CVaR. For 20 hypothetical returns of -10%, -4% and eighteen +1% observations, its threshold is -4% and its tail mean is -7%. That includes two observations, not exactly 5% of the sample. Compare the conventions in the VaR guide and CVaR guide.
Skewness describes asymmetry around the mean; it is not simply the ratio of average loss to average win. Pineify reports excess kurtosis, whose normal-distribution reference is zero. A large estimate can be dominated by a few records, and neither estimate establishes that a strategy must eventually fail.
Inspect the underlying extreme trades: timestamps, size, net versus gross P&L, gaps and known data issues. Compare full-sample results with clearly documented sensitivity cases. Removing a genuine loss because it looks unusual creates a biased result.
A normal-curve overlay is a reference shape, not a fitted probability forecast. Keep the bins and return unit consistent when comparing samples, and preserve the actual minimum and maximum observations alongside the chart.
Monte Carlo: conditional scenarios, not proof of an edge
A historical backtest applies rules to a particular price history. Pineify instead creates conditional scenarios from the resulting trade list. It samples each cash P&L independently with replacement; a trade may appear several times or not at all. This is different from merely shuffling every trade once.
With hypothetical starting capital of $1,000 and two net results of +$100 and -$60, drawing two results with replacement yields terminal equity of $1,200, $1,040 or $880. Shuffling those same two original cash results once always ends at $1,040, although the intermediate drawdown changes. Trade order alone cannot change their fixed-cash sum.
The default 1,000 bootstrap runs estimate the distribution under that empirical sampling model. The implementation uses fixed cash increments, keeps 50 paths for plotting and counts ruin only when final equity is at or below zero. It can miss an earlier zero-equity crossing followed by recovery. It does not reproduce dependence, dynamic sizing or losses outside the observed sample.
There is no universal 100-trade reliability threshold. More simulations reduce simulation noise conditional on the supplied sample; they do not create new market observations. Review dependence, sample coverage and sensitivity to costs, then evaluate the strategy on untouched later data. A simulated profitable-path percentage is not the probability that an edge is real.
Recovery Factor and SQN: check the calculation units
Recovery Factor is net profit divided by maximum cash drawdown when both use the same curve and currency. Hypothetical net profit of $300 and drawdown of $100 give 3.0. That number does not directly encode recovery duration, margin requirements or the next possible drawdown.
Two curves can share net profit and maximum drawdown while spending different amounts of time below their peaks. Examine time underwater separately. The Recovery Factor guide explains the ratio; do not turn an arbitrary threshold into a trading permission rule.
Pineify labels sqrt(N) × mean trade percentage / population standard deviation of trade percentages as SQN. This is not the same input series as initial-risk-normalized R-multiples. The formula grows with sample count under fixed mean and variability, and dependent trades weaken a simple interpretation of that scaling.
Use the SQN guide to check units and observations. Report the sample size and calculation convention with the value. A high number does not establish professional-level execution, future profitability or a permissible position size.
Rolling windows: investigate changes without assuming a cause
Pineify recalculates Sharpe, Sortino and win rate over 20 imported trades. Twenty is this implementation choice, not a universal statistical standard. Unlike the full-report ratios, its rolling ratios are not annualized. Equal trade counts can span very different calendar durations.
Adjacent 20-trade windows share 19 observations. One large loss can affect many consecutive windows, so those points are not separate confirmations of deterioration. Inspect which record enters and leaves each window before assigning a cause to the chart.
A changing local average can reflect chance, costs, position size, market conditions or a data problem. The chart identifies intervals to investigate; it does not establish a regime change or guarantee early warning before the equity curve declines.
Define monitoring and review criteria before observing the evaluation period. Compare results using fixed rules and document any later changes. Continually choosing a new window or threshold to fit recent outcomes creates another parameter search.
MFE/MAE: form an exit hypothesis and rerun the strategy
MFE and MAE describe favorable and adverse price or P&L extremes during the original holding period. Pineify reads the exported excursion fields; it does not reconstruct intratrade prices. Verify currency, percentage units and missing fields before using the scatter plot.
A hypothetical trade closed at +1.8R after reaching +3.2R did not necessarily offer a realizable extra 1.4R. The maximum is known in hindsight, and a revised stop might have closed the position before that maximum. Check whether R actually uses initial risk; do not relabel an exported percentage as R.
Use MFE/MAE analysis to form a testable exit hypothesis. Specify the new rule, rerun it on price data with costs and compare untouched observations. The Strategy Optimizer compares declared parameter ranges; a winning setting is not independent validation.
A stop or target change can alter both holding time and later entries. Two excursion extremes do not show which level was reached first. Preserve the original results and compare complete reruns rather than replacing every exit with its favorable extreme.
Kelly arithmetic and position-sizing assumptions
The binary-payoff Kelly expression f = p − (1 − p) / b assumes a fixed probability p, a gain of b times the stake on a win and loss of the full stake on a loss. It maximizes expected log growth within that simplified model. A trade list with variable payouts, gaps and overlapping exposure does not automatically meet those assumptions.
For hypothetical p = 0.55 and b = 1.5, the expression gives 0.55 − 0.45 / 1.5 = 0.25, or 25%. This corrects the arithmetic; it is not a recommendation to risk 25% of an account. Estimated averages do not establish fixed future probabilities or a maximum loss.
The current Backtest Deep Report does not calculate a Kelly allocation. Do not infer an optimal stake from its win rate, average payoff or AI score. Assess correlated positions, liquidity, gaps, leverage and the possibility that the estimated edge is absent.
Reducing a model-derived fraction reduces exposure under that model but does not make incorrect inputs reliable. Keep position-sizing research separate from the descriptive report and test the consequences of adverse assumptions before interpreting any proposed allocation.
Use a report workflow with defined boundaries
Start with the native TradingView report. Use an external workflow when you need to inspect exported records, reproduce a calculation or compare defined scenarios. Reconcile a small known sample first; a larger set of charts does not itself improve the evidence.
Pineify provides trade statistics, distribution and excursion views, a 20-trade rolling view and independent bootstrap scenarios. Its ratios use the conventions described above. Optional AI interpretation can summarize the results, but an AI rating is not a calibrated probability or validation of the original strategy.
The App requires sign-in and Advanced-or-higher access for personal CSV imports. Numerical processing runs in the browser; requesting AI interpretation sends derived summaries to a service. Excel export contains seven base sheets plus a Monte Carlo sheet after simulation. Check each sheet because all-trade and filtered aggregates can be mixed in the current export.
Backtest Deep Report analyzes exported observations; it does not rerun rules against market data or reconcile live broker fills. Pineify has a separate Trading Journal for ongoing notes. Keep the source file, platform settings and a record of excluded or transformed rows with the analysis.
Open the Backtest Deep Report overview for workflow details, or inspect one calculation before comparing a full report:
FAQ
Sources and calculation checks
- TradingView strategy report and broker-emulator documentation covers native metrics, report XLSX, costs and simulation assumptions.
- TradingView CSV export instructions distinguish the selected trade and metric data.
- Peter Martin: Ulcer Index describes the root mean square of percentage drawdowns. Regularly sampled investment equity and a trade-result curve are different inputs.
- Checked October 21, 2026 against Pineify access, parser, metric, bootstrap, AI-request and workbook implementation. Numerical examples are hypothetical arithmetic checks, not personal trading results. No live execution or profitability benchmark was performed.
Review Your Exported Trades
Sign in with Advanced-or-higher access, import a compatible trade-list CSV and reconcile the sample. Numerical calculations run locally; optional AI interpretation sends derived summaries. Preserve a separate evaluation period for any resulting strategy changes.
Analyze My Backtest Now