[R-SIG-Finance] (TTR) chaikinVolatility problems

Mark Knecht markknecht at gmail.com
Mon Sep 14 22:11:40 CEST 2009


Hi,
   I'm wondering if there are any know limitations with the TTR
chaikinVolatility function I should be aware of. I've got a small
application I've been writing in R that uses it. I debugged the app
using weekly data for the SPX, DJI, Nasdaq and Russell going back as
far as TradeStation would give me data. Everything worked great.
However when I switched to SPX daily data the indicator fails for the
first 1/3 to 1/2 of the data. (Roughly 12400 days) Looking into the
data output of the indicator I see this:

 [4465]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [4483]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [4501]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
0.00   Inf   Inf   Inf   Inf   Inf   Inf   Inf
 [4519]   Inf   Inf   Inf   Inf   Inf   Inf  3.83  1.75  0.78  0.46
0.35  0.20  0.15  0.12  0.12  0.12  0.09  0.03
 [4537]  0.01  0.05  0.03  0.02  0.00 -0.04 -0.03 -0.06 -0.07 -0.09
-0.13 -0.12 -0.07 -0.02 -0.02 -0.01 -0.02  0.01
 [4555] -0.01 -0.01 -0.01 -0.01  0.04  0.08  0.11  0.09  0.04  0.06
0.06  0.10  0.08  0.07  0.05  0.07  0.04 -0.03

   After the indicator starts working it continues to work, but it's
all 0.00 back to the beginning except for these few Inf's in the
middle.

   When I broke the code out to try to debug it before I wrote this
email I got somewhat different results with NaN's:

> head(TradeSystem, n=40)
         Date Time  Open  High   Low Close  Vol OI FastAvg SlowAvg
MyDate ChVol
1  01/04/1960 1300 59.91 59.91 59.91 59.91 3988  0       0       0
1960-01-04    NA
2  01/05/1960 1300 60.39 60.39 60.39 60.39 3712  0       0       0
1960-01-05    NA
3  01/06/1960 1300 60.13 60.13 60.13 60.13 3730  0       0       0
1960-01-06    NA
4  01/07/1960 1300 59.69 59.69 59.69 59.69 3311  0       0       0
1960-01-07    NA
5  01/08/1960 1300 59.50 59.50 59.50 59.50 3287  0       0       0
1960-01-08    NA
6  01/11/1960 1300 58.77 58.77 58.77 58.77 3466  0       0       0
1960-01-11    NA
7  01/12/1960 1300 58.41 58.41 58.41 58.41 3764  0       0       0
1960-01-12    NA
8  01/13/1960 1300 58.08 58.08 58.08 58.08 3468  0       0       0
1960-01-13    NA
9  01/14/1960 1300 58.40 58.40 58.40 58.40 3560  0       0       0
1960-01-14    NA
10 01/15/1960 1300 58.38 58.38 58.38 58.38 3422  0       0       0
1960-01-15    NA
11 01/18/1960 1300 57.89 57.89 57.89 57.89 3019  0       0       0
1960-01-18    NA
12 01/19/1960 1300 57.27 57.27 57.27 57.27 3096  0       0       0
1960-01-19    NA
13 01/20/1960 1300 57.07 57.07 57.07 57.07 2717  0       0       0
1960-01-20    NA
14 01/21/1960 1300 57.21 57.21 57.21 57.21 2697  0       0       0
1960-01-21    NA
15 01/22/1960 1300 57.38 57.38 57.38 57.38 2690  0       0       0
1960-01-22    NA
16 01/25/1960 1300 56.78 56.78 56.78 56.78 2793  0       0       0
1960-01-25    NA
17 01/26/1960 1300 56.86 56.86 56.86 56.86 3062  0       0       0
1960-01-26    NA
18 01/27/1960 1300 56.72 56.72 56.72 56.72 2463  0       0       0
1960-01-27    NA
19 01/28/1960 1300 56.13 56.13 56.13 56.13 2627  0       0       0
1960-01-28    NA
20 01/29/1960 1300 55.61 55.61 55.61 55.61 3061  0       0       0
1960-01-29    NA
21 02/01/1960 1300 55.96 55.96 55.96 55.96 2825  0       0       0
1960-02-01    NA
22 02/02/1960 1300 56.82 56.82 56.82 56.82 3077  0       0       0
1960-02-02    NA
23 02/03/1960 1300 56.32 56.32 56.32 56.32 3022  0       0       0
1960-02-03    NA
24 02/04/1960 1300 56.27 56.27 56.27 56.27 2617  0       0       0
1960-02-04    NA
25 02/05/1960 1300 55.98 55.98 55.98 55.98 2535  0       0       0
1960-02-05    NA
26 02/08/1960 1300 55.32 55.32 55.32 55.32 3348  0       0       0
1960-02-08   NaN
27 02/09/1960 1300 55.84 55.84 55.84 55.84 2859  0       0       0
1960-02-09   NaN
28 02/10/1960 1300 55.49 55.49 55.49 55.49 2441  0       0       0
1960-02-10   NaN
29 02/11/1960 1300 55.18 55.18 55.18 55.18 2606  0       0       0
1960-02-11   NaN
30 02/12/1960 1300 55.46 55.46 55.46 55.46 2229  0       0       0
1960-02-12   NaN
31 02/15/1960 1300 55.17 55.17 55.17 55.17 2772  0       0       0
1960-02-15   NaN
32 02/16/1960 1300 54.73 54.73 54.73 54.73 3278  0       0       0
1960-02-16   NaN
33 02/17/1960 1300 55.03 55.03 55.03 55.03 4208  0       0       0
1960-02-17   NaN
34 02/18/1960 1300 55.80 55.80 55.80 55.80 3798  0       0       0
1960-02-18   NaN
35 02/19/1960 1300 56.24 56.24 56.24 56.24 3234  0       0       0
1960-02-19   NaN
36 02/23/1960 1300 55.94 55.94 55.94 55.94 2960  0       0       0
1960-02-23   NaN
37 02/24/1960 1300 55.74 55.74 55.74 55.74 2744  0       0       0
1960-02-24   NaN
38 02/25/1960 1300 55.93 55.93 55.93 55.93 3601  0       0       0
1960-02-25   NaN
39 02/26/1960 1300 56.16 56.16 56.16 56.16 3384  0       0       0
1960-02-26   NaN
40 02/29/1960 1300 56.12 56.12 56.12 56.12 2994  0       0       0
1960-02-29   NaN
>

   The data came from TradeStation. It looks OK to me visually. The
code stub I'm using follows. I could possibly post the data somewhere
if necessary.

Thanks,
Mark


require(chron)
require(ggplot2)
require(quantmod)
require(reshape)
require(TTR)

AbsLookback = 13

TradeSystem = read.csv("C:\\MiningData\\SPX_Daily.txt",header=TRUE)
#TradeSystem = read.csv("C:\\MiningData\\SPX_Weekly.txt",header=TRUE)
#TradeSystem = read.csv("C:\\MiningData\\INDU_Weekly.txt",header=TRUE)
#TradeSystem = read.csv("C:\\MiningData\\NDX_Weekly.txt",header=TRUE)
#TradeSystem = read.csv("C:\\MiningData\\RUT_Weekly.txt",header=TRUE)

TradeSystem$MyDate = as.Date(TradeSystem$Date, "%m/%d/%Y")

CVol = data.frame(chaikinVolatility(TradeSystem[,c("High","Low")],
n=AbsLookback))
names(CVol)[1]="ChVol"

TradeSystem$ChVol = round(CVol$ChVol, 2)



More information about the R-SIG-Finance mailing list