Running example throughout: a 54% hit rate with ~1,000 trades to get t = 2.53. Companion article: From hit rate to Sharpe establishes \(SR_{\text{trade}} = (2p-1)/2\sqrt{p(1-p)} \approx 2e\) and \(SR_{\text{ann}} = SR_{\text{trade}}\sqrt N\); see symbols below at §04, table 1.
The measurement is the hit rate. The standard error is how much that estimate would move if you re-ran the same history. The null hypothesis is that you have no edge at all: \(p = 0.5\), a coin flip.
The distance from the null is the edge \(e = p - 0.5\). A single trade is one win-or-loss, with variance \(p(1-p)\); the hit rate is the average of \(N\) such draws, and averaging \(N\) independent draws divides the variance by \(N\). So
\[ \text{distance from null} = p - 0.5, \qquad \operatorname{SE}(p-0.5) = \operatorname{SE}(p) = \sqrt{\frac{p(1-p)}{N}} \tag{1} \]Divide one by the other, writing \(p - 0.5 = (2p - 1)/2\) in the numerator:
\[ t \;=\; \frac{p - 0.5}{\sqrt{p(1-p)/N}} \;=\; \underbrace{\frac{2p-1}{2\sqrt{p(1-p)}}}_{SR_{\text{trade}}}\;\sqrt N \;=\; SR_{\text{trade}}\sqrt N \tag{2} \]The t-statistic for all trades over the year is the Sharpe ratio.
Within reasonable hit rates \(\sqrt{p(1-p)}\approx 0.5\), so the t statistic simplifies:
The equity curve gives the same answer by a different route. In units of the bet size, cumulative profit after \(N\) trades has mean \(2eN\) and standard deviation \(\sqrt N\), so their ratio is \(2eN/\sqrt N = 2e\sqrt N\), which is \(t\). Profit accumulates in proportion to \(N\) while its noise accumulates only as \(\sqrt N\), which is why evidence grows as \(\sqrt N\).
All caveats from the Sharpe discounts hold with one additional: normality. Comparing \(t\) against \(z^\ast = 1.96\) leans on the normal approximation to the binomial. Reasonable for \(N > 30\), which every trade count in this article clears.
Invert the working form of §01. Declaring an edge significant at the 5% level means clearing \(t \ge z^\ast = 1.96\), so the trade count required is
The \(\sqrt N\) is punishing in one specific way: because \(N\) enters as a square, halving the edge you want to detect quadruples the data you need. At 54% you need 600 trades; at 52%, 2,401; at 51%, 9,604. Full derivation of \(N_{\min}\) and of the power version below it is in §05, derivation 2.
Significance and \(N_{\min}\) answers: "can I reject the null?". Power asks: "if the true rate is 54%, how often will a test of \(N\) trades actually detect it?".
So a 600-trade study is a coin flip about whether you see what is there, by design.
To be cleared four times in five, the threshold must sit below the true rate — far enough below that 80% of the scatter falls above it. At \(N = 1{,}224\): \(\operatorname{SE} = 0.0143\), so the threshold is at \(0.5 + 1.96(0.0143) = 0.528\), and the true rate now sits above it by
\[ z = \frac{0.528 - 0.54}{0.0143} = -0.84 \qquad\Longrightarrow\qquad \text{power} = P(Z \ge -0.84) = 0.80 \]That \(0.84\) is \(z_\beta\), and it is the whole cost of power: the threshold has to fall \(z_\beta\) standard errors below the true rate instead of landing on it. Requiring that gap and solving for \(N\) gives the second term in the numerator — evaluated at the alternative, since it describes the scatter around the true rate rather than around the null:
\[ N_{80\%} = \left(\frac{z_{\alpha/2}\sqrt{p_0(1-p_0)} + z_{\beta}\sqrt{p(1-p)}}{p - p_0}\right)^{2} \]| True p | N for sig. | N for 80% power |
|---|---|---|
| 51% | 9,604 | 19,620 |
| 52% | 2,401 | 4,903 |
| 53% | 1,067 | 2,178 |
| 54% | 600 | 1,224 |
| 55% | 384 | 783 |
| 60% | 96 | 194 |
Reference tables pulled out of the main text.
| \(t\) | t-statistic — the measured value over its own standard error; \(t = SR_{\text{trade}}\sqrt N = SR_{\text{ann}}\sqrt T\) |
| \(\operatorname{SE}\) | Standard error of the hit rate; \(\sqrt{p(1-p)/N}\) exactly, \(1/2\sqrt N\) under the null |
| \(\hat p,\ \hat e\) | Observed hit rate and edge, against the true \(p,\ e\). The hat is carried only where the two must be told apart — §03 and derivation 2, where the gap between them is the subject |
| \(p_0\) | Null hit rate, \(= 0.5\) throughout |
| \(z^\ast,\ z_{\alpha/2}\) | Critical value; 1.96 at \(\alpha = 5\%\) two-sided |
| \(z_\beta\) | Power quantile; 0.8416 at 80% power |
| \(N_{\min},\ N_{80\%}\) | Trades for significance, and trades for 80% power. Ratio 2.04 |
| \(N^\ast,\ T^\ast\) | Trades to reach a target \(t^\ast\), and the calendar time that takes at a given trade rate |
| N trades | 51% | 52% | 53% | 54% | 55% |
|---|---|---|---|---|---|
| 100 | 0.20 | 0.40 | 0.60 | 0.80 | 1.00 |
| 250 | 0.32 | 0.63 | 0.95 | 1.26 | 1.58 |
| 500 | 0.45 | 0.89 | 1.34 | 1.79 | 2.24 |
| 1,000 | 0.63 | 1.26 | 1.90 | 2.53 | 3.16 |
| 2,500 | 1.00 | 2.00 | 3.00 | 4.00 | 5.00 |
| 10,000 | 2.00 | 4.00 | 6.00 | 8.00 | 10.00 |
| Hit rate | 2e | t = 2 (sig.) | t = 2, 80% power | t = 3 (sig.) | t = 3, 80% power |
|---|---|---|---|---|---|
| 51% | 0.02 | 9,604 | 19,620 | 22,500 | 36,892 |
| 52% | 0.04 | 2,401 | 4,903 | 5,625 | 9,220 |
| 53% | 0.06 | 1,067 | 2,178 | 2,500 | 4,096 |
| 54% | 0.08 | 600 | 1,224 | 1,406 | 2,303 |
| 55% | 0.10 | 384 | 783 | 900 | 1,473 |
| 60% | 0.20 | 96 | 194 | 225 | 366 |
Referenced from §01, stated compactly there and completed here.
Step 1 — the estimator and its null. Each trade is a win or a loss, so the hit rate is an average of \(N\) win/lose indicators and is unbiased for the true rate: \(\mathbb E[\hat p] = p\). This derivation carries the hat, writing \(\hat p\) for the rate you measured against \(p\) for the true one, because the standard error is precisely a statement about the gap between them; the body drops it where no confusion arises. Test \(H_0: p = p_0 = 0.5\) against \(H_1: p > 0.5\), with the observed edge \(\hat e = \hat p - 0.5\) as the value being tested.
Step 2 — the standard error. A single trade is one win-or-lose draw with variance \(p(1-p)\). Independence makes variances add, and the \(1/N\) out front squares:
\[ \operatorname{Var}(\hat p) = \frac{1}{N^{2}}\sum_{i=1}^{N} p(1-p) = \frac{p(1-p)}{N} \qquad\Longrightarrow\qquad \operatorname{SE}(\hat p) = \sqrt{\frac{p(1-p)}{N}} \tag{1.1} \]Step 3 — divide. By definition of the t-statistic, and using (1.1) evaluated at \(\hat p\). The numerator is the distance from the null and the denominator the standard error of the estimator, which is consistent because \(p_0\) is a constant: \(\operatorname{SE}(\hat p - p_0) = \operatorname{SE}(\hat p)\).
\[ t = \frac{\hat p - 0.5}{\operatorname{SE}(\hat p)} = \frac{\hat p - 0.5}{\sqrt{\hat p(1-\hat p)/N}} = \frac{2\hat p-1}{2\sqrt{\hat p(1-\hat p)}}\,\sqrt N = SR_{\text{trade}}\sqrt N \tag{1.2} \]using \(\hat p - 0.5 = (2\hat p - 1)/2\) in the numerator. T he t-statistic and the per-trade Sharpe ratio are the same quantity up to \(\sqrt N\).
Step 4 — the \(2e\) working form. Evaluating (1.1) at the null rather than at \(\hat p\) — the score version of the same test — replaces \(\sqrt{\hat p(1-\hat p)}\) with the exact \(\sqrt{p_0(1-p_0)} = 0.5\):
\[ \operatorname{SE}(\hat p)\big|_{H_0} = \frac{0.5}{\sqrt N} = \frac{1}{2\sqrt N} \qquad\Longrightarrow\qquad t = \frac{\hat p - 0.5}{1/2\sqrt N} = 2\hat e\sqrt N \tag{1.3} \]The factor 2 is \(1/\sqrt{p_0(1-p_0)}\) for a fair coin, nothing more. The two versions differ only in which hit rate the denominator is evaluated at, so they agree to the same 0.3% at \(\hat p = 0.54\) that \(2e\) agrees with the exact per-trade Sharpe in From hit rate to Sharpe, table 2. All tables in this article use (1.3).
Step 5 — the annualized form. If the \(N\) trades span \(T\) years then by (1.2) applied to one year's worth, \(SR_{\text{ann}} = SR_{\text{trade}}\sqrt{N/T}\), so
\[ t = SR_{\text{trade}}\sqrt N = \left(\frac{SR_{\text{ann}}}{\sqrt{N/T}}\right)\sqrt N = SR_{\text{ann}}\sqrt T \tag{1.4} \]so the horizon \(T\) cancels: the evidence requirement is a trade count, not a length of time.
Significance. Set (1.3) equal to the critical value and solve for \(N\):
\[ 2e\sqrt{N} \ge z^\ast \qquad\Longrightarrow\qquad N_{\min} = \left(\frac{z^\ast}{2e}\right)^{2} = \left(\frac{z_{\alpha/2}\sqrt{p_0(1-p_0)}}{p - p_0}\right)^{2} \tag{2.1} \]the two forms agreeing because \(\sqrt{p_0(1-p_0)} = 0.5\) at \(p_0 = 0.5\).
Power. The test rejects when \(\hat p\) exceeds \(p_0 + z_{\alpha/2}\sqrt{p_0(1-p_0)/N}\). Under the alternative, \(\hat p\) is approximately \(\mathcal N\big(p,\ p(1-p)/N\big)\), so rejecting with probability \(1-\beta\) requires the alternative's \(\beta\)-quantile to sit above that threshold:
\[ p - z_\beta\sqrt{\frac{p(1-p)}{N}} \;\ge\; p_0 + z_{\alpha/2}\sqrt{\frac{p_0(1-p_0)}{N}} \tag{2.2} \]Collect the two radicals on one side, divide by \(p - p_0\), and square:
\[ \begin{aligned} p - p_0 &\;\ge\; \frac{z_{\alpha/2}\sqrt{p_0(1-p_0)} + z_\beta\sqrt{p(1-p)}}{\sqrt N} \\[6pt] N_{80\%} &\;=\; \left(\frac{z_{\alpha/2}\sqrt{p_0(1-p_0)} + z_\beta\sqrt{p(1-p)}}{p-p_0}\right)^{2} \end{aligned} \tag{2.3} \]The ratio. Dividing (2.3) by (2.1), everything cancels except the bracketed sum:
\[ \frac{N_{80\%}}{N_{\min}} = \left(1 + \frac{z_\beta}{z_{\alpha/2}}\sqrt{\frac{p(1-p)}{p_0(1-p_0)}}\right)^{2} \tag{2.4} \]Near a coin flip the radical is essentially 1 — at \(p = 0.54\) it is \(\sqrt{0.2484/0.25} = 0.9968\) — so the hit rate drops out and
\[ \frac{N_{80\%}}{N_{\min}} \;\approx\; \left(1 + \frac{0.8416}{1.96}\right)^{2} = 1.4294^{2} = \mathbf{2.04} \tag{2.5} \]which is the 2× rule of §03. It is a statement about the two normal quantiles, not about the strategy — which is why it holds unchanged down the whole table. It is not invariant to the bar, though: (2.4) contains \(z_{\alpha/2}\) in the denominator, so demanding \(t^\ast = 3\) instead of 1.96 shrinks the power premium to \((1 + 0.8416/3)^{2} = 1.64\).