<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
<font size="-1"><font face="Calibri">Howdy-<br>
<br>
I came up with some code that has served me well, perhaps if anyone
runs into the problem of needing to calculate historical
volatility(close) on a non-OHLC series (or a bunch of "univariate"
series stored in a matrix):<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; US2Y US5Y US10Y US30Y UKG5 UKG10 USSP2 USSP5 USSP10 USSP30<br>
2009-01-02 0.88 1.72&nbsp; 2.46&nbsp; 2.83 2.67&nbsp; 3.36&nbsp; 1.50&nbsp; 2.17&nbsp;&nbsp; 2.61&nbsp;&nbsp; 2.78<br>
2009-01-05 0.78 1.67&nbsp; 2.49&nbsp; 3.00 2.75&nbsp; 3.47&nbsp; 1.60&nbsp; 2.31&nbsp;&nbsp; 2.82&nbsp;&nbsp; 3.03<br>
2009-01-06 0.80 1.68&nbsp; 2.51&nbsp; 3.04 2.79&nbsp; 3.57&nbsp; 1.55&nbsp; 2.34&nbsp;&nbsp; 2.88&nbsp;&nbsp; 3.18<br>
2009-01-07 0.82 1.66&nbsp; 2.52&nbsp; 3.05 2.80&nbsp; 3.60&nbsp; 1.44&nbsp; 2.16&nbsp;&nbsp; 2.69&nbsp;&nbsp; 2.99<br>
....<br>
blahblah..<br>
<br>
I adapted the code to use 'close' from Josh Ulrich's volatility
function (since all of these are closing prices), and here's my result:<br>
<br>
volatility.matrix &lt;- function(Matrix, n = 10, N = 252, pretty=TRUE,
...) {<br>
&nbsp;&nbsp;&nbsp; volm &lt;- Matrix<br>
&nbsp;&nbsp;&nbsp; for(i in 1:ncol(Matrix)) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; r &lt;- ROC(Matrix[,i], 1,...)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rBar &lt;- runSum(r, n -1)/(n - 1)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; s &lt;- sqrt(N/(n - 2) * runSum((r - rBar)^2, n - 1))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #because i like to make it pretty<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; volm[,i] &lt;- round(s,2) * 100<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; volm &lt;- na.omit(volm)<br>
&nbsp;&nbsp;&nbsp; reclass(volm, Matrix)<br>
}<br>
<br>
<br>
The Result:<br>
&gt; volatility.matrix(Yields, n=30)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; US2Y US5Y US10Y US30Y UKG5 UKG10 USSP2 USSP5 USSP10 USSP30<br>
2009-03-24&nbsp; 116&nbsp; 110&nbsp;&nbsp;&nbsp; 73&nbsp;&nbsp;&nbsp; 45&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 65&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 51<br>
2009-03-25&nbsp; 115&nbsp; 112&nbsp;&nbsp;&nbsp; 75&nbsp;&nbsp;&nbsp; 46&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 65&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 51<br>
2009-03-26&nbsp; 114&nbsp; 110&nbsp;&nbsp;&nbsp; 74&nbsp;&nbsp;&nbsp; 44&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp; 65&nbsp;&nbsp;&nbsp; 64&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 50<br>
2009-03-27&nbsp; 114&nbsp; 110&nbsp;&nbsp;&nbsp; 74&nbsp;&nbsp;&nbsp; 44&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 64&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 51<br>
2009-03-30&nbsp; 111&nbsp; 104&nbsp;&nbsp;&nbsp; 68&nbsp;&nbsp;&nbsp; 39&nbsp;&nbsp; 52&nbsp;&nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 63&nbsp;&nbsp;&nbsp;&nbsp; 58&nbsp;&nbsp;&nbsp;&nbsp; 51<br>
2009-03-31&nbsp; 107&nbsp; 100&nbsp;&nbsp;&nbsp; 68&nbsp;&nbsp;&nbsp; 39&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 63&nbsp;&nbsp;&nbsp;&nbsp; 58&nbsp;&nbsp;&nbsp;&nbsp; 50<br>
2009-04-01&nbsp; 107&nbsp; 100&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 38&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 62&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp; 49<br>
2009-04-02&nbsp; 107&nbsp; 100&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp; 37&nbsp;&nbsp; 58&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp; 65&nbsp;&nbsp;&nbsp; 61&nbsp;&nbsp;&nbsp;&nbsp; 56&nbsp;&nbsp;&nbsp;&nbsp; 48<br>
......<br>
<br>
What I get is a nice matrix of volatilities in a pretty format
(rounded, etc.)<br>
<br>
I'll give it a shot tonight trying to implement it into the current
volatility function, however I'm sure the code that I have here could
be done better.<br>
<br>
Regards,<br>
c<br>
<br>
<br>
</font></font>
</body>
</html>