Quantitative note

Hit Rate To Sharpe

01 Sharpe per trade, naive

Strip everything away. Each trade wins \(+b\) with probability \(p\) and loses \(-b\) with probability \(1-p\): same size every time, win or lose, and trades are independent. Then

\[ \mathbb E[X] = b(2p-1), \qquad \operatorname{Var}(X) = b^2\big[1-(2p-1)^2\big] = 4b^2p(1-p), \qquad \sigma(X)=2\sqrt{p(1-p)} \]
Hit rate → per-trade Sharpe
\[ SR_{\text{trade}} = \frac{2p-1}{2\sqrt{p(1-p)}} \;\approx\; 2(p-0.5) \]

02 Per-trade Sharpe → annual Sharpe

Assume \(T = 1\) year. Under independence, aggregating \(N\) trades scales the mean by \(N\) and the volatility by \(\sqrt N\), so Sharpe scales by \(\sqrt N\):

\[ SR_{\text{ann}} = SR_{\text{trade}}\sqrt{N} = \frac{2p-1}{2\sqrt{p(1-p)}}\sqrt{N} \]

Your hit rate \(p\) sets \(SR_{\text{trade}}\); your annual Sharpe is that number scaled by \(\sqrt N\). The running example:

See §05, table 3 for the relationship between \(N\), \(p\), and \(SR_{\text{ann}}\).

You normally know the Sharpe you need and want to know what accuracy achieves it. To invert means solving the for \(p\) rather than for Sharpe. The algebra turns on one substitution: \(d = 2p-1\), which collapses \(2\sqrt{p(1-p)}\) into \(\sqrt{1-d^2}\). See full derivation at §06, derivation 1. The result:

Forward — per-trade Sharpe → annual Sharpe
\[ SR_{\text{ann}} = SR_{\text{trade}}\sqrt{N} \;\approx\; 2(p-0.5)\sqrt{N} \]
Inverted — target Sharpe → required hit rate
\[ p \;=\; 0.5 \;+\; \frac{SR_{\text{ann}}}{2\sqrt{N+SR_{\text{ann}}^{2}}} \qquad\approx 0.5 \;+\; \frac{SR_{\text{ann}}}{2\sqrt{N}} \]

Three things are worth noticing about the inverted form.

  1. For \(N > 50 \), \(SR_{\text{ann}}^2\) has a marginal contribution. And so, \(p \approx 0.5 + SR_{\text{ann}}/2\sqrt{N}\).
  2. \(p < 1\) always. Since \(SR_{\text{ann}}/\sqrt{N+SR_{\text{ann}}^2} < 1\).
  3. The required edge falls as \(1/\sqrt N\), not \(1/N\). Quadrupling your trade rate halves the needed accuracy.

The relationship between \(p\) and \(N\) are listed in §05, table 4 and graphed below.

50% 54% 58% 62% 66% 12 52 252 1,260 5,040 bets per year (log scale) SR 1.5 SR 1.0 SR 0.5 63.9% at N=12 51.4% at N=1,260
To run a Sharpe-1.0 book you need a 63.9% hit rate at \(N = 12\) bets a year but only 51.4% at \(N = 1{,}260\). The curve is flat on the right: past roughly \(N = 1{,}000\), extra trades stop meaningfully lowering the accuracy bar. The discounts in §03, and costs (covered in the companion article on trade count and significance), become the binding constraints instead.

03 The discount ladder

Relaxing the symmetric-sizing and independence assumptions reduces Sharpe. Starting from §01 and §02, each of the following is a further discount on the one before.

  1. Magnitude dispersion: \(\times\,1/\sqrt{1+c^2}\)
  2. Payoff asymmetry: replaces \(2e\) entirely
  3. Costs: subtract \(\kappa\) from the numerator
  4. Correlation across simultaneous positions: \(N \to 252\,k_{\text{eff}}\)

04 The cascade, worked end to end

Take the running example — 54% hit rate, five positions per day — and walk down every discount with realistic parameters: magnitude dispersion \(c = 1.0\) (magnitude std equals its mean, typical), costs \(\kappa = 0.02\) (a quarter of the gross edge), cross-sectional correlation \(\rho = 0.2\) among the five simultaneous positions.

0 1 2 3 2.85 2.01 1.51 1.12 idealized − dispersion − costs − correlation c = 1.0 κ = 0.02 ρ = 0.2
  1. Idealized. \(SR_{\text{trade}} = 0.0803\), \(N = 252\times5 = 1{,}260\), so \(SR_{\text{ann}} = 0.0803\times35.50 = \mathbf{2.85}\).
  2. Discount 1, dispersion. \(SR_{\text{trade}} = 0.08/\sqrt{1+1-0.0064} = 0.0567\), so \(SR_{\text{ann}} = \mathbf{2.01}\). Cost: 29%.
  3. Discount 3, costs. Net edge \(0.08-0.02 = 0.06\), giving \(SR_{\text{trade}} = 0.0425\) and \(SR_{\text{ann}} = \mathbf{1.51}\). Cost: a further 25%.
  4. Discount 4, correlation. \(k_{\text{eff}} = 5/(1+4\times0.2) = 2.78\), so the effective rate is \(252\times2.78 = 700\) not 1,260, and \(SR_{\text{ann}} = \mathbf{1.12}\). Cost: a further 25%.

05 Tables

Reference tables pulled out of the main text.

Table 1 — notation

\(p\)Hit rate; edge \(e = p-0.5\); net edge \(d = 2p-1\)
\(SR_{\text{trade}}\)Sharpe ratio per trade — mean over standard deviation of one trade's return
\(SR_{\text{ann}}\)Sharpe ratio annualized — the number people quote; \(SR_{\text{ann}} = SR_{\text{trade}}\sqrt{N}\) over one year
\(t\)t-statistic, the evidence accumulated; \(t = SR_{\text{trade}}\sqrt N = SR_{\text{ann}}\sqrt T\)
\(N\)Number of trades. This article fixes the window at one year, so \(N\) is trades per year
\(T\)Length of the record, in years
\(k\)Positions held per day; \(k_{\text{eff}} = k/[1+(k-1)\rho]\) after correlation, derived in D4
\(c,\ \kappa,\ \rho\)Magnitude dispersion, cost per trade, correlation across positions — the discounts of §03

Table 2 — exact vs. the 2e rule of thumb

Per-trade Sharpe from hit rate, exact and approximate
Hit rate pEdge e = p − 0.52eExact SRtradeError
51%0.010.02000.0200+0.0%
52%0.020.04000.0400+0.1%
53%0.030.06000.0601+0.2%
54%0.040.08000.0803+0.3%
55%0.050.10000.1005+0.5%
60%0.100.20000.2041+2.1%
70%0.200.40000.4364+9.1%

Table 3 — annual Sharpe by hit rate and trade count

The forward direction: SRann = SRtrade √N
CadenceN√N51%52%53%54%55%60%
Monthly123.460.070.140.210.280.350.71
Weekly527.210.140.290.430.580.721.47
Daily25215.870.320.640.951.271.603.24
2 / day50422.450.450.901.351.802.264.58
5 / day1,26035.500.711.422.132.853.577.25
20 / day5,04070.991.422.844.275.707.1414.49

Table 4 — hit rate required to reach a target annual Sharpe

The inverted direction: p = 0.5 + SRann / 2√(N + SRann²)
CadenceNSR 0.5SR 1.0SR 1.5SR 2.0
Monthly1257.1%63.9%69.9%75.0%
Weekly5253.5%56.9%60.2%63.4%
Daily25251.6%53.1%54.7%56.3%
2 / day50451.1%52.2%53.3%54.4%
5 / day1,26050.7%51.4%52.1%52.8%
20 / day5,04050.4%50.7%51.1%51.4%

06 Derivations

Derivation 1: Inverting hit rate ↔ Sharpe

Referenced from §02. The goal: given a target annual Sharpe and a trade rate, find the hit rate that delivers it. We start from the §01 relation \(SR_{\text{trade}} = (2p-1)\big/2\sqrt{p(1-p)}\) and solve it for \(p\).

Step 1 — what per-trade Sharpe does the target require? Read the forward relation \(SR_{\text{ann}} = SR_{\text{trade}}\sqrt{N}\) backwards. To hit \(SR_{\text{ann}}\) with \(N\) trades in the year you need per-trade skill

\[ SR_{\text{trade}} \;=\; \frac{SR_{\text{ann}}}{\sqrt{N}} \tag{1.1} \]

Step 2 — change variable to the net probability edge. Let \(d = 2p-1\), so \(p = (1+d)/2\). This is the move that makes the whole thing tractable, because \(p(1-p)\) collapses:

\[ p(1-p) = \frac{1+d}{2}\cdot\frac{1-d}{2} = \frac{1-d^{2}}{4} \qquad\Longrightarrow\qquad 2\sqrt{p(1-p)} = \sqrt{1-d^{2}} \tag{1.2} \]

The awkward \(2\sqrt{p(1-p)}\) denominator becomes \(\sqrt{1-d^{2}}\), and it reduces to

\[ SR_{\text{trade}} = \frac{d}{\sqrt{1-d^{2}}} \tag{1.3} \]

Step 3 — solve for \(d\). Square both sides of (1.3) and collect terms in \(d^{2}\):

\[ \frac{d^{2}}{1-d^{2}} = SR_{\text{trade}}^{2} \;\Longrightarrow\; d^{2} = SR_{\text{trade}}^{2}\left(1-d^{2}\right) \;\Longrightarrow\; d^{2}\left(1+SR_{\text{trade}}^{2}\right) = SR_{\text{trade}}^{2} \tag{1.4} \]

so, taking the positive root (a positive edge implies \(d>0\)),

\[ d = \frac{SR_{\text{trade}}}{\sqrt{1+SR_{\text{trade}}^{2}}} \tag{1.5} \]

Step 4 — back to \(p\). Since \(p = (1+d)/2\), equation (1.5) already gives the hit rate implied by any per-trade Sharpe, independent of annualization:

\[ p = \frac12\left[1+\frac{SR_{\text{trade}}}{\sqrt{1+SR_{\text{trade}}^{2}}}\right] = 0.5 + \frac{SR_{\text{trade}}}{2\sqrt{1+SR_{\text{trade}}^{2}}} \tag{1.6} \]

Step 5 — substitute the annual target. Putting (1.1) into (1.6), the \(\sqrt N\) tidies into the radical:

\[ p = \frac12\left[1 + \frac{SR_{\text{ann}}/\sqrt N}{\sqrt{1+SR_{\text{ann}}^{2}/N}}\right] = \frac12\left[1+\frac{SR_{\text{ann}}}{\sqrt{N+SR_{\text{ann}}^{2}}}\right] = 0.5 + \frac{SR_{\text{ann}}}{2\sqrt{N+SR_{\text{ann}}^{2}}} \tag{1.7} \]

Equation (1.7) is the boxed result in §02 and the basis for table 4. It is exact — no small-edge approximation enters anywhere above. Two checks worth carrying:

← Back to the post