Load development
Chronograph SD and ES calculator
A chronograph prints the average, standard deviation and extreme spread of the shots you fired. What you want is the same three numbers for the ammunition — every round you have not fired yet. Paste a velocity string and this works out how far each figure can be trusted, how many shots would pin it down, whether two loads really differ, and what the spread is worth in inches at distance. The equations are underneath, checked against a published example to the last printed digit.
Your string
It opens on the ten-shot string from PrecisionRifleBlog’s Statistics for Shooters series, and reproduces the confidence intervals the article prints for it (the worked example goes through them). Replace it with your own. Nothing you enter leaves the page.
SD and ES measure the same thing, differently
Both describe how widely a load scatters in velocity. The standard deviation uses every shot; the extreme spread uses two and ignores the rest:
The ES has a property that makes it hard to use: it grows with the number of shots, because every extra round is another chance at a new fastest or slowest. For a normal distribution the average ES of an n-shot string is a fixed multiple of the load’s true standard deviation, σ:
| Shots | Average ES, in SDs (d2) | SD ≈ ES × | 90% of ESs fall between |
|---|---|---|---|
| 2 | 1.128 | 0.886 | 0.09 and 2.77 SDs |
| 3 | 1.693 | 0.591 | 0.43 and 3.31 |
| 5 | 2.326 | 0.430 | 1.03 and 3.86 |
| 10 | 3.078 | 0.325 | 1.86 and 4.47 |
| 20 | 3.735 | 0.268 | 2.63 and 5.01 |
| 30 | 4.086 | 0.245 | 3.03 and 5.30 |
| 50 | 4.498 | 0.222 | 3.51 and 5.65 |
| 100 | 5.015 | 0.199 | 4.11 and 6.08 |
So a load with a true SD of 10 ft/s averages an ES of 23 ft/s over five shots and 37 ft/s over twenty. One five-shot string in twenty will show an ES under 10.3 ft/s, and another one in twenty over 38.6, from the same ammunition. An ES quoted without its number of shots cannot be compared with anything.
The NIST/SEMATECH e-Handbook gives the relationship — the mean range of a sample from a normal distribution is d2σ, citing Patnaik (1946) — and tabulates the control-chart factors built on it. This page computes d2 from the integral above and the spread of the ES from the exact distribution of the range. The results reproduce NIST’s d2 = 1.128 for two observations and every A2, D3 and D4 factor in its table for 2 to 10 — except D4 at n = 5, which comes out at 2.1145, on the rounding boundary of NIST’s printed 2.115. A simulation of 400,000 strings at each of 3, 5, 10 and 20 shots matched the computed 5th and 95th percentiles to within 0.4 per cent.
The handbook also tabulates how much information the range throws away. Its efficiency relative to the standard deviation is 1.000 for two observations, 0.955 for five and 0.850 for ten. At five shots the ES is nearly as good an estimate of the load’s spread as the SD — both are poor, because five shots are few. The case for the SD is that it keeps improving as the string gets longer while the ES falls behind: computed here as the ratio of the variances of the two unbiased estimates, s/c4 and ES/d2, the efficiency reproduces NIST’s figures for 2, 3, 4, 5 and 10 shots (it gives 0.933 at six, where NIST prints 0.930) and falls to 0.70 at twenty shots and 0.49 at fifty. A fifty-shot ES says about as much about the load as the SD of two dozen shots.
Converting an ES to an SD
Multiply by the third column, which is 1 ÷ d2(n). Because the distribution of ES ÷ σ is known exactly, an ES also gives a genuine confidence interval for the SD: σ lies between the ES divided by the upper and by the lower percentile in the last column. A five-shot ES of 30 ft/s gives an estimated SD of 12.9 ft/s — and at 90 per cent confidence, anything from 7.8 to 29.1 ft/s. The calculator does this when you choose the summary option and leave the SD blank.
How far a short string can be trusted
A string’s SD is an estimate, and for a normal distribution its uncertainty is known exactly: (n − 1)s²/σ² follows a chi-square distribution with n − 1 degrees of freedom. The NIST handbook turns that into an interval for the true SD:
| Shots | True SD, 90% confidence | True SD, 95% confidence |
|---|---|---|
| 3 | 0.578 to 4.415 × measured | 0.521 to 6.285 × |
| 5 | 0.649 to 2.372 | 0.599 to 2.874 |
| 10 | 0.729 to 1.645 | 0.688 to 1.826 |
| 20 | 0.794 to 1.370 | 0.760 to 1.461 |
| 30 | 0.825 to 1.280 | 0.796 to 1.344 |
| 50 | 0.859 to 1.202 | 0.835 to 1.246 |
| 100 | 0.896 to 1.134 | 0.878 to 1.162 |
Read it as multiples of the SD you measured. A five-shot SD of 10 ft/s says, at 90 per cent confidence, that the load’s true SD is somewhere from 6.5 to 23.7 ft/s. Twenty shots narrow that to 7.9–13.7. Getting the whole 90 per cent interval inside ±20 per cent of the measured value takes 51 shots; inside ±10 per cent, 167.
The interval is lopsided because short-string SDs are skewed: most come in low, with the occasional one far high. The chance that a string’s SD falls below the load’s true SD is exactly 1 − e−1 = 63.2 per cent for three shots and 1 − 3e−2 = 59.4 per cent for five, and still 56 per cent at ten. On average the sample SD reads low by the factor the handbook calls c4: 0.940 at five shots, 0.9727 at ten.
That skew has a consequence for load development. Take eight charge weights that in truth all have an SD of 10 ft/s, fire five shots of each, and keep the one with the lowest SD. In our simulation of 100,000 such ladders the winner averaged 4.9 ft/s, and 91 per cent of the time it came in under 7. The lowest SD in a ladder is mostly the luckiest string. Re-shoot the winner before believing it.
The average
The average is the number a ballistic solver takes as muzzle velocity. Its interval is the familiar one:
It settles far sooner than the SD. With an SD of 10 ft/s, ten shots put the average within ±5.8 ft/s at 90 per cent confidence — about a fifth of a per cent of 2,700 ft/s — while the same ten shots leave the SD uncertain by −27 to +65 per cent. Five shots give ±9.5 ft/s, twenty ±3.9.
The handbook’s caution about the word applies to both intervals: 90 per cent confidence does not mean a 90 per cent chance that this particular interval holds the true value. It means the method, applied to many strings, captures the true value 90 per cent of the time.
How many shots, and is load B really better?
The calculator runs both intervals backwards. For the average it finds the smallest n for which t1−α/2, n−1·s/√n is inside your tolerance, taking your string’s SD as the best available guess at the true one — NIST’s sample-size rule, with the t distribution in place of the normal, which asks for slightly more shots when the string is short. For the SD it finds the smallest n for which the whole chi-square interval lies within your percentage of the measured value; that depends only on n and the confidence level, not on your data.
Two strings are compared with the two tests the handbook gives for exactly this: the F-test for equal variances, and the two-sample t-test for equal means in its Welch form, which does not assume the two loads share an SD:
The F-test is less forgiving than most shooters expect. With ten shots of each load, one SD has to be 1.78 times the other before the difference is significant at 90 per cent confidence; with twenty of each, 1.47 times; with five of each, 2.53 times. Two ten-shot strings with SDs of 8 and 12 ft/s look decisively different on paper. The 90 per cent interval for the ratio of their true SDs runs from 0.84 to 2.67 and the p-value is 0.24: those strings cannot tell the two loads apart.
What velocity spread does at distance
A slower bullet takes longer to reach the target and falls further. With the rifle’s zero held fixed, the vertical spread that velocity alone produces is the velocity SD multiplied by how far the impact moves per unit of velocity:
The calculator does not use the shortcut. It runs the point-mass G1 or G7 trajectory from the muzzle velocity truing page, whose drag tables are identical, entry for entry, to the G1 and G7 files JBM Ballistics publishes. It zeroes the rifle for your average velocity, then takes a centred difference of the impact height at the average ±2 ft/s with the bore angle held fixed. Swap the G7 table for a constant drag coefficient and that difference agrees with 2 · drop / V to within 0.1 per cent at 300, 600 and 1,000 yards, which checks the machinery.
With the real G7 curve the answer comes out larger. For 2,700 ft/s, a G7 ballistic coefficient of 0.25, 59 °F and 29.92 inHg:
| Range | Impact moves, per ft/s | Flat-fire 2·drop/V | Vertical SD from a 10 ft/s velocity SD |
|---|---|---|---|
| 300 yd | 0.019 in | 0.018 in | 0.19 in |
| 600 yd | 0.094 in | 0.087 in | 0.94 in |
| 1,000 yd | 0.367 in | 0.313 in | 3.67 in — 0.35 MOA, 0.10 mil |
The G7 drag coefficient rises steadily as a bullet slows from Mach 3 toward Mach 1, so a slow round meets more drag as well as having less speed, and falls further than the constant-drag rule predicts — by 17 per cent at 1,000 yards, where this bullet is down to about 1,180 ft/s. And the effect grows much faster than the range: ten ft/s of SD is under a fifth of an inch at 300 yards and more than three and a half inches at 1,000.
The same derivative turns the uncertainty in the average into an uncertainty in elevation, which the calculator also reports. Both figures are velocity only: the rifle, the shooter, the wind and bullet-to-bullet differences in drag add their own vertical on top.
Worked example: PrecisionRifleBlog’s ten shots
Part 1 of Cal Zant’s Statistics for Shooters series on PrecisionRifleBlog lists ten velocities — 2777, 2763, 2767, 2774, 2754, 2777, 2773, 2766, 2762 and 2775 ft/s — with a table of the ranges it predicts for the average and the SD of the remaining rounds at six confidence levels. The calculator on this page, run on the same ten numbers:
| Confidence | Average, published | Average, this page | SD, published | SD, this page |
|---|---|---|---|---|
| 99% | 2,761 – 2,777 | 2,760.9 – 2,776.7 | 4.7 – 17.4 | 4.73 – 17.44 |
| 95% | 2,763 – 2,774 | 2,763.3 – 2,774.3 | 5.3 – 14.0 | 5.27 – 13.98 |
| 90% | 2,764 – 2,773 | 2,764.4 – 2,773.2 | 5.6 – 12.6 | 5.58 – 12.60 |
| 85% | 2,765 – 2,773 | 2,765.0 – 2,772.6 | 5.8 – 11.8 | 5.81 – 11.81 |
| 75% | 2,766 – 2,772 | 2,765.8 – 2,771.8 | 6.2 – 10.8 | 6.16 – 10.82 |
| 50% | 2,767 – 2,771 | 2,767.1 – 2,770.5 | 6.8 – 9.5 | 6.81 – 9.46 |
Every row agrees to the digits printed. The string’s average is 2,768.8 ft/s, its sample SD 7.66 ft/s and its ES 23 ft/s.
One discrepancy in the source is worth knowing about. The article introduces the string as one where the LabRadar “reported the average was 2,770.4 fps and the SD was 8.82 fps”, and later describes “those 10 shots that had an average of 2,768.8 fps and an SD of 8.82 fps”. The ten velocities it lists have the 2,768.8 average but not that SD: theirs is 7.66 ft/s dividing by n − 1, and 7.26 dividing by n. The table was computed from the real 7.66. The intervals quoted in the text beside it — 5.5 to 20.1 ft/s at 99 per cent, 6.1 to 16.1 at 95, 7.1 to 12.5 at 75 — are what an SD of 8.82 gives (the 99 per cent lower bound works out to 5.45), so the text’s arithmetic is right for a number that does not come from the ten velocities printed.
The article’s other examples reproduce as well. Five shots with an SD of 9.2 ft/s at 95 per cent: published 5.5 to 26.4, this page 5.51 to 26.44. Twenty shots at 9.2 and 90 per cent: 7.3 to 12.6 against 7.30 to 12.61. Part 2 gives a five-shot SD of 9 at 95 per cent as 5.4 to 25.9 (5.39 to 25.86 here) and its twenty-shot SD of 9.6 at 90 per cent as 7.6 to 13.2 (7.62 to 13.16).
The distribution functions underneath were checked against the handbook’s own worked examples: chi-square critical values of 73.361 and 128.422 for 99 degrees of freedom, F critical values of 0.7756 and 1.2894 for 239 and 239, t critical values of 1.9723 for 194 and 1.9673 for 326, all reproduced to the printed digits, and its 95 per cent interval for the mean of the ZARR13 data set to within one unit in the sixth decimal place, the precision of the mean it prints. The chi-square, t and F quantiles also agree with SciPy’s to better than one part in ten billion for strings of up to 100 shots, and to better than one part in ten million out to the 100,000 shots the summary option accepts; the two-load tests agree with SciPy’s to better than one part in a billion across 200 random comparisons.
What the numbers assume
- A normal distribution. The t interval for the average tolerates departures from it; the chi-square interval for the SD does not. When we fed the method velocities drawn from a heavier-tailed distribution (Student’s t with 5 degrees of freedom, scaled to a known SD), its nominal 90 per cent SD interval contained the true SD only 76 per cent of the time at twenty shots, while the interval for the average still held 90. Fliers make the SD interval optimistic.
- Independent shots from one population. A barrel heating through a long string, ammunition warming in the sun and a cold-bore first shot are trends, not scatter. They inflate the SD and break the arithmetic behind every interval here. How far velocity moves with the powder’s temperature is on the powder temperature sensitivity page.
- A perfect chronograph. Random error in the instrument adds to the load’s own spread in quadrature: measured SD² = load SD² + instrument SD². A constant error — a mis-set screen spacing, a reading taken several feet from the muzzle — moves every velocity together. It changes the average and not the SD, and no interval on this page includes it.
- Velocity only, at the target. The vertical figures assume level fire and no wind, a 100-yard zero and a 1.5 in sight height (a 300-yard zero or a 3 in sight height changes the answer by less than 0.1 per cent) and dry air (saturated air changes it by under 1 per cent). Air pressure does matter: at 24.9 inHg, about the pressure at 5,000 feet, the vertical spread at 1,000 yards is about 15 per cent smaller than at sea level, which is why it is an input.
Where the average goes next
A ballistic solver needs one muzzle velocity, and the right one is the average; the SD tells you how well you know it. Range Walkout Coming soon, our long-range ballistic solver for Android, takes one muzzle velocity per rifle profile, with a G1 or G7 ballistic coefficient, and can true that velocity from the elevation that actually centred a group at a known range. It does not read chronograph strings or compute any of the statistics on this page. The division of labour is: find the average and how far to trust it here, then true it at distance to take out what the chronograph cannot see. Range Walkout on the products page →
Related: truing muzzle velocity · powder temperature sensitivity · spin drift · the Coriolis effect on a rifle bullet · all tools
Questions or corrections: [email protected]
Sources
- NIST/SEMATECH e-Handbook of Statistical Methods: 1.3.5.2 Confidence limits for the mean; 1.3.5.3 Two-sample t-test for equal means; 1.3.5.8 Chi-square test for the variance; 1.3.5.9 F-test for equality of two variances; 7.2.2.2 Sample sizes required; 6.3.2 What are variables control charts? (c4); 6.3.2.1 Shewhart X-bar and R and S control charts (d2, A2, D3, D4, efficiency of the range); 6.3.2.2 Individuals control charts (d2 = 1.128).
- Cal Zant, PrecisionRifleBlog: How To Predict The Future – Statistics For Shooters Part 1 (the ten-shot string and its table) and Muzzle Velocity Stats – Statistics for Shooters Part 2.
- JBM Ballistics, downloads: the G1 and G7 drag tables, mcg1.txt and mcg7.txt.