Quantitative note

From trade count to significance

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.

01 Where the t-statistic comes from

What a t-statistic is
\[ t \;=\; \frac{\text{how far the measurement sits from the null}}{\text{the standard error of that measurement}} \]

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 hit rate and its standard error

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.

The same equation, twice
\[ SR_{\text{ann}} = SR_{\text{trade}}\sqrt{N_{\text{one year}}} = t \]

Approximation for the t-statistic

Within reasonable hit rates \(\sqrt{p(1-p)}\approx 0.5\), so the t statistic simplifies:

Significance from the hit rate directly
\[ \operatorname{SE}(p) \;\approx\; \frac{0.5}{\sqrt N} = \frac{1}{2\sqrt N} \qquad\Longrightarrow\qquad t \;\approx\; \frac{p - 0.5}{1\big/2\sqrt N} \;=\; 2e\,\sqrt N \]

The same result on the equity curve

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\).

−50 0 50 100 150 0 250 500 750 1,000 trades mean = 0.08 N ±2 SE = ±2√N band clears zero at N ≈ 625 80 / 31.6 = t 2.53
Cumulative P&L at a 54% hit rate, in units of the per-trade bet size. The mean climbs by 0.08 per trade; the 95% band widens as \(2\sqrt N\). The band clears zero at \(N \approx 625\) — that crossing is the significance threshold of §02, and at \(N = 1{,}000\) the ratio of the two is \(80/31.6 = 2.53\), the t-statistic.

Caveats

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.

02 Significance versus number of trades

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

Significance
\[ t \;\approx\; 2\,(p - 0.5)\,\sqrt N \qquad\Longrightarrow\qquad N_{\min} = \left(\frac{z^\ast}{2e}\right)^{2} \]

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.

0 1 2 3 4 5 100 250 500 1,000 2,500 5,000 10,000 number of trades (log scale) 55% 54% 53% 52% 51% t = 2 t = 3 625 1,406
\(t = 2e\sqrt N\) for each hit rate, on a log trade-count axis with \(t\) plotted linearly — so the curves bend upward rather than running straight: each tenfold rise in \(N\) multiplies \(t\) by \(\sqrt{10}\approx3.2\). The 54% strategy crosses \(t = 2\) at 625 trades and \(t = 3\) at 1,406. The 51% strategy does not reach \(t = 3\) anywhere on this chart; it needs 22,500 trades.

03 Power

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?".

  1. Where the threshold sits. At \(N = 600\), \(\operatorname{SE} = 1/(2\sqrt{600}) = 0.0204\). The test rejects the coin when the observed rate clears \(0.5 + z^\ast\!\cdot\!\operatorname{SE} = 0.5 + 1.96(0.0204) = \mathbf{0.54}\). The \(z^\ast\!\cdot\!\operatorname{SE}\) term collapses to exactly \(e\) — that is what solving \(z^\ast = 2e\sqrt N\) for \(N\) means, read forwards.
  2. What is actually random. The true rate is a fixed 54%; it is not a distribution. What varies is \(\hat p\), the rate you measure from 600 finite trades — centred on 0.54, with a standard deviation of 0.0204. Run those 600 trades again and you get a different \(\hat p\).
  3. The probability. So the threshold sits exactly on the centre of the distribution of \(\hat p\). Standardising, \[ \text{power} = P\big(\hat p \ge 0.54 \,\big|\, p = 0.54\big) = P\!\left(Z \ge \frac{0.54-0.54}{0.0204}\right) = P(Z \ge 0) = \mathbf{0.5} \] The z-score of the threshold is zero. Half your draws land above it, half below.

So a 600-trade study is a coin flip about whether you see what is there, by design.

What 80% power costs

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} \]
Significance vs. 80% power
True pN for sig.N for 80% power
51%9,60419,620
52%2,4014,903
53%1,0672,178
54%6001,224
55%384783
60%96194
From the two formulas above, \(p_0 = 0.5\), \(\alpha = 5\%\) two-sided. Time to significance scales with \(1/SR^2\), which is why the cascade in From hit rate to Sharpe, §04 costs 1.1 years against 7.1.

04 Tables

Reference tables pulled out of the main text.

Table 1 — notation added by this article

\(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
Shared symbols — \(p\), \(e\), \(d = 2p-1\), \(SR_{\text{trade}}\), \(SR_{\text{ann}}\), \(N\), \(T\), \(k\), \(c\), \(\kappa\), \(\rho\) — are defined in From hit rate to Sharpe, §05 table 1 and are used identically here. As there, only \(N\) and \(T\) are primitive and the rate \(N/T\) is deliberately given no symbol: significance is governed by \(N\), annual Sharpe by \(N/T\), and that separation is why the trade count rather than the calendar sets the evidence requirement.

Table 2 — t-statistic by trade count and hit rate

t = 2e √N
N trades51%52%53%54%55%
1000.200.400.600.801.00
2500.320.630.951.261.58
5000.450.891.341.792.24
1,0000.631.261.902.533.16
2,5001.002.003.004.005.00
10,0002.004.006.008.0010.00
Teal marks cells clearing \(t = 1.96\). Uses the \(2e\) approximation from From hit rate to Sharpe, table 2, which understates the exact figure by 0.3% at 54% — immaterial here, since the reference value \(z^\ast\) is itself a convention.

Table 3 — trades required, by standard of proof

N = (t*/2e)², and the powered version
Hit rate2et = 2 (sig.)t = 2, 80% powert = 3 (sig.)t = 3, 80% power
51%0.029,60419,62022,50036,892
52%0.042,4014,9035,6259,220
53%0.061,0672,1782,5004,096
54%0.086001,2241,4062,303
55%0.103847839001,473
60%0.2096194225366
Reading right along a row is the cost of honesty: the 54% strategy needs 600 trades to look significant and 2,303 to be a design that will detect a real edge four times in five at the stricter \(t = 3\) bar. Amber marks requirements above 10,000 trades — at 5 positions a day, more than eight years. Note the power columns do not scale with the significance columns: raising the bar to \(t = 3\) moves only the \(z_{\alpha/2}\) term of (2.3), so the power premium shrinks from 2.04× to 1.64× as the bar rises.

05 Derivations

Derivation 1: \(t = SR_{\text{trade}}\sqrt N\) from value over standard error

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.

Derivation 2: \(N_{\min}\), \(N_{80\%}\), and why their ratio is 2.04

Referenced from §02 and §03.

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\).

← Back to the post