Trading Dev AcademyFree quant education

Free lesson · Statistics

Central limit theorem, standard errors and confidence intervals

Open interactive lessonPractice calculationsExplore labs

Start with the idea

  • If the theorem’s conditions hold and the sample is large enough for a useful normal approximation, place a margin around the estimated mean to show sampling uncertainty.
Symbols, units & horizon
  • X_i: one-day return in basis points
  • n: independent observations
  • X̄_n,μ: sample and population mean in basis points per day
  • σ,s: population and sample standard deviation in basis points
  • SE: standard error in basis points per day
  • ⇒: convergence in distribution
  • N(0,1): standard normal distribution
  • I_.95: approximate 95% confidence interval for the mean

When and why to use this

Use standard errors to quantify uncertainty in a prespecified mean or Monte Carlo estimator. Keep confidence intervals for an estimated parameter separate from prediction intervals for future outcomes.

Start here · the same idea in everyday words

Technical termEveryday meaningConcrete example
Standard deviationHow widely individual observations vary around their mean.Daily returns with a standard deviation of 10 basis points vary much more than returns with a standard deviation of 1.
Standard errorHow much an estimated value would vary across repeated samples.A mean based on 100 iid daily observations has an estimated standard error of sample standard deviation divided by 10.
AsymptoticDescribing a limit as the sample size becomes very large.A normal approximation can improve with larger samples, but there is no universal safe sample size.

Unpack a technical sentence

Technical wording: An asymptotically normal estimator admits an approximate confidence interval.

Read it as: If the theorem’s conditions hold and the sample is large enough for a useful normal approximation, place a margin around the estimated mean to show sampling uncertainty.

A slower worked example · one step at a time

  1. One basis point is one hundredth of one percent. A 2 bp daily return is .02%, or .0002 as a decimal return.
  2. Suppose 100 independent daily observations have sample mean 2 bp and sample standard deviation 10 bp. The individual-return spread is 10 bp; this is not the uncertainty of the mean.
  3. Divide 10 by the square root of 100. The estimated standard error of the mean is 1 bp per day.
  4. An approximate normal 95% interval uses a margin of 1.96 times that standard error: 1.96 bp. Subtract and add to get [.04,3.96] bp per day.
  5. For 400 observations with the same sample spread, the estimated standard error is .5 bp, not .25. Four times the independent sample size halves this standard error. Dependence can prevent that reduction.
Self-assessed: Does the interval describe where 95% of tomorrow’s returns will fall?

No. It is an interval for the population mean. Predicting a single future return is a different task with a different uncertainty calculation.

Study loop: predict the result, work through the arithmetic, run the Python, then explain which assumption would make the result unreliable.

  • For iid observations with a finite positive variance, the centred mean divided by its population standard error approaches a standard normal distribution.
  • Estimate the population standard deviation with the sample standard deviation. A two-sided normal interval uses approximately 1.96 estimated standard errors on either side. This is a large-sample approximation; for iid Gaussian observations with estimated variance, the finite-sample Student t interval uses a t critical value.
  • A 95% confidence procedure covers the fixed population mean in 95% of repetitions under its assumptions. It is not a statement that 95% of future trades lie inside the interval.
  • Serial correlation changes the standard error. For overlapping returns, clustered trades or heavy tails, use a justified dependence-aware method rather than counting every row as independent.
Before reading the working, evaluate 10/sqrt(100). Give the result in basis points per day of standard error.

The approximate interval is [.04,3.96] bp per day, before costs if the supplied returns are gross. Even this positive interval does not account for strategy selection.

n(X‾n−μ)σ⇒N(0,1),SE^=sn,I.95≈[X‾n−1.96SE^,X‾n+1.96SE^]
Asymptotic theorem and normal approximation

Central limit theorem, standard errors and confidence intervals

  1. Assume n=100 independent daily returns, sample mean 2 bp and sample standard deviation 10 bp.
  2. The estimated standard error is 10/√100=1 bp per day.
  3. Multiply 1.96×1=1.96; interval endpoints are 2−1.96=.04 and 2+1.96=3.96 bp per day.
Work it by hand

The approximate interval is [.04,3.96] bp per day, before costs if the supplied returns are gross. Even this positive interval does not account for strategy selection.

An analogy to remember

Individual throws scatter widely; averages of many throws scatter less. The theorem describes the scaled scatter of averages.

How this becomes a building block

A research report should store the estimate, its uncertainty method and sampling horizon together, so downstream decisions do not treat an estimated mean as known.

Python · run and reuse

Architecture pseudocode

# Python 3.10+; standard library only unless NumPy is imported.
# Synthetic teaching inputs; no historical performance claim.
from math import sqrt

def normal_mean_interval(mean, sample_sd, n, critical=1.96):
    # Mean and sd in bp for a common daily horizon; iid large-sample approximation.
    if not isinstance(n,int) or n < 2 or sample_sd < 0 or critical <= 0:
        raise ValueError("Valid n, sd and critical value required")
    se = sample_sd/sqrt(n)
    return se, (mean-critical*se, mean+critical*se)

print(normal_mean_interval(2,10,100))

# Replay the slower, synthetic example above. Units are stated in its steps.
def plain_language_example():
    from math import exp, e  # Standard library; no extra dependency.
    return {
        "decimal_return": 2/10000,
        "se100": 10/100**.5,
        "lower": 2-1.96,
        "upper": 2+1.96,
        "se400": 10/400**.5,
    }

print(plain_language_example())
Self-assessed: explain the calculation, its output units, and one condition under which it fails.

Use standard errors to quantify uncertainty in a prespecified mean or Monte Carlo estimator. Keep confidence intervals for an estimated parameter separate from prediction intervals for future outcomes. The iid standard error can be severely understated under dependence. There is no universal sample size at which a normal approximation becomes accurate for all return distributions.

Research checkpoint · reviewed 13 October 2026

Barber and Pananjady, Predictive inference for time series: why is split conformal effective despite temporal dependence?, arXiv working paper submitted 2 October 2025, revised 10 January 2026. Abstract-only review. This is theoretical work on dependent time series, including predictors with memory and stationary beta-mixing processes; no specific market or historical market data dates are established in the abstract. It motivates checking the assumptions behind uncertainty guarantees, rather than using iid or exchangeability guarantees automatically for returns. It does not establish market profitability or guarantee coverage under arbitrary regime shifts.

Further reading: Primary working paper · arXiv:2510.02471 ↗

Development checklist: declare the target and observation horizon; log when each feature and label becomes available; fit preprocessing inside training windows; assess dependence; report uncertainty for a prespecified procedure; account for the entire model search; evaluate net decisions prospectively. Synthetic examples in this sequence teach mechanics and provide no performance evidence.

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

# Python 3.10+; standard library only unless NumPy is imported.
# Synthetic teaching inputs; no historical performance claim.
from math import sqrt

def normal_mean_interval(mean, sample_sd, n, critical=1.96):
    # Mean and sd in bp for a common daily horizon; iid large-sample approximation.
    if not isinstance(n,int) or n < 2 or sample_sd < 0 or critical <= 0:
        raise ValueError("Valid n, sd and critical value required")
    se = sample_sd/sqrt(n)
    return se, (mean-critical*se, mean+critical*se)

print(normal_mean_interval(2,10,100))

# Replay the slower, synthetic example above. Units are stated in its steps.
def plain_language_example():
    from math import exp, e  # Standard library; no extra dependency.
    return {
        "decimal_return": 2/10000,
        "se100": 10/100**.5,
        "lower": 2-1.96,
        "upper": 2+1.96,
        "se400": 10/400**.5,
    }

print(plain_language_example())

Continue learning

Statistics & Probability — all lessons
  1. Start with counts, probabilities and averages
  2. Random outcomes, sample averages and the limits of the bell curve
  3. Conditional probability: update a belief with evidence
  4. Prediction markets: probability, price and net expected value
  5. Expected value: measure the payoff before choosing the risk
  6. Correlation: how many strategies do you really have?
  7. Conditional probability and Bayes: where the edge actually lives
  8. The central limit theorem: sampling means under explicit assumptions
  9. Law of large numbers: what averaging can and cannot establish
  10. Central limit theorem, standard errors and confidence intervals
  11. Total expectation and total variance: within-regime and between-regime risk
  12. Markov, Chebyshev and Jensen: bounds without a full distribution
  13. Gauss–Markov theorem: what a regression hedge ratio guarantees
  14. Delta method: propagate estimator uncertainty through a smooth function
  15. Multiple testing and the union bound: account for the whole search
  16. Estimation uncertainty and Bayesian updating

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations