Setting Ex-Ante Volatility Limits for a Rolling Fund Volatility Threshold
Summary
The document derives a way to constrain a fund’s next weekly return so that its rolling five-year, annualized ex-post volatility is less likely to exceed a chosen threshold. It treats the historical weekly returns as fixed, assumes the next return is normally distributed with zero mean, and expresses its squared standardized value as a one-degree-of-freedom chi-squared variable. The remaining variance allowance in the rolling window then determines a maximum ex-ante volatility at a selected confidence level.
An R example estimates that limit from historical returns and simulates next-week outcomes to inspect the resulting ex-post volatility. This illustrates the calculation but is not evidence that the model reliably controls future risk. The derivation relies on simplifying assumptions, including a zero average return and normal next-period returns, and the result depends on the rolling estimator and confidence choice. The document does not address changing market regimes or broader portfolio constraints.
Key ideas
- The method holds past weekly returns fixed and models the next return as normally distributed with zero mean.
- The next return’s squared standardized value follows a one-degree-of-freedom chi-squared distribution under the stated assumptions.
- The remaining variance budget in the rolling window can be converted into an ex-ante volatility limit at a chosen confidence level.
- An R simulation illustrates the calculation, but it does not validate the assumptions or guarantee future threshold compliance.
Tags
Full text
# Controling ex-post volatility by ex-ante limits
# Controling ex-post volatility by ex-ante limits
In the context of mutual funds the KID directive forces us to calculate 5 year ex-post volatility of a (market) fund (weekly returns). Thus each week we look back in the past and calculate volatility (annualized) using the last $5*52 = 260$ weekly returns.
Given a $5$ year history and thus a recent ex-post volatility how can we set an ex-ante limit for a market fund in order not to breach a certain level of ex-post volatility in the next period?
To start a chain of thoughts: We are given returns $r_1,\ldots, r_{260}$ now and one week later we are given returns $r_2\ldots r_{260}$ and a new return which we assume ex-ante to be normally distributed with volatility $\sigma$ then the future ex-post variance is given by (assume an average return of $0$ for simplicity) $$ 1/259 \sum_{i=2}^{260} r_i^2 + 1/259 X^2 \sigma^2/52, $$ where $X^2$ is chi-squared distributed with $1$ df (the factor $1/259$ is the usual factor for the variance estimator and $1/52$ scales annualized variance to weekly). Thus if we want that the ex-post vol is below a threshold $t$ we need that $$ 1/259 \sum_{i=2}^{260} r_i^2 + 1/259 X^2 \sigma^2/52 \le t^2 $$ and thus $$ X^2 \sigma^2/52 \le 259*t^2-\sum_{i=2}^{260} r_i^2, $$ and we could use this equation to set a limit on ex-ante vol.
## Answer by Richi Wa (score 1, accepted)
https://quant.stackexchange.com/a/12640
The chain of thoughts above seem to work. I post some `R` code where I implemented this. Seems to work well. Comments are welcome!
```
r.hist = rnorm(5*52,0,0.18/sqrt(52)) ## 18% vola
limit.vol = 0.2 ## limit 20% vola
## next period 5% confidence
gap = 0.2^2/52*259-sum(r.hist[2:259]^2)
var.treshold = gap/qchisq(0.95, 1)
target.vol = sqrt(var.treshold*52)
cat("Target vola",round(target.vol*100),"%")
## simulate
ex.post.vol = NULL
N = 1000
new.ret = rnorm(N,0,target.vol/sqrt(52))
for (i in 1:N){
r.new = c(r.hist[2:259],new.ret[i])
ex.post.vol = c(ex.post.vol,sd(r.new)*sqrt(52))
}
plot(ex.post.vol,main="Sampled ex-post vol one week later")
quantile(ex.post.vol,0.95)
quantile(ex.post.vol,0.99)
```Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.