## [tech-spec] Re: BBchart

• From: Tom McCubbin <tmccubbin@xxxxxxxxxxxxxxxx>
• To: tech-spec@xxxxxxxxxxxxx
• Date: Tue, 26 Oct 2004 11:36:18 -0400

The output looks damn beautiful. But the source code begs some questions i have regarding R, its, and calendaring:

`From your code:`

# to calc the start date for data collection adjust trading days, 251,
# for calendar days, 366, add a runup period
# equal to the longest calculation length + 50
# and subtract the total from today's date
if(compress=="d") startDate <- Sys.Date()-as.integer(periods/251*366+max(normVol, BBlength)+50)
if(compress=="w") startDate <- Sys.Date()-as.integer(periods*7/251*366+max(normVol, BBlength)+50)
if(compress=="m") startDate <- Sys.Date()-as.integer(periods*31/251*366+max(normVol, BBlength)+50)

now obviously, you make some sweeping assumptions about a finite trading days / year, which of course is variable, and for the last 10 years (cal 1992-2003) numbered 2519 for nyse stuff, or ~251.9/ year. I am however a spoiled brat, and just can't accept approximation ( here it doesn't matter i know, because it just spots a rough point in time to snatch yahoo data ), so how can this be done better in R?

In my world i have calendars for both regular and irregular frequencies, represented of course as intervals, so for example:

if(compress=="d") startDate <- business_calendar( Sys.Date() ) - max(normVol, BBlength)+50
if(compress=="w") startDate <- weekly_calendar( Sys.Date() ) - max(normVol, BBlength)+50
if(compress=="m") startDate <- monthly_calendar( Sys.Date() ) - max(normVol, BBlength)+50

would give each an interval that represented the exact date at the given frequency. The issue is dealing w/ irregular frequency intervals should be done just like that. as intervals, not as dates, but should be easily converted back and forth.

Now, I'm looking for some nice way to contribute to this group, so could someone tell me how to handle calendaring, or would it be a good contribution to package calendaring functionality for R for the group?

One other question: i notice that the computeXXX functions all take the data represented as business frequency. Is there a good way to handle time-scaling w/ its (or other R pkg) to handle simple meta-data like how time-series are observed, i.e., closes mark the end of a time interval, highs the high for an interval, volume the aggregate for the interval...etc...
E.g., calc the moving average of weekly volume for a stock?

`curious and helpless in R,`

`-tom`

ps - i'll look at the code and try and give some more meaningful input than my selfish wants and desires to help/prove myself...

`BBands wrote:`

`I'd appreciate feedback from anyone who had a look at BBchart.`

--jab