Domanda

Background

I am trying to setup my trade analysis environment. I am running some rule based strategies on futures on different brokers and trying to aggregate trades from different brokers in one place. I am using blotter package as my main tool for analysis.

Idea is to use blotter and PerformanceAnalytics for analysis of live performance of various strategies I am running.

Problem at hand

My source of future EOD data is CSIData. All the EOD OHLC prices for these futures are stored in CSV format in following directory structure. For each future there is seperate directory and each contract of the future has one csv file with OHLC price series.

|   
+---AD
|       AD_201203.TXT
|       AD_201206.TXT
|       AD_201209.TXT
|       AD_201212.TXT
|       AD_201303.TXT
|       AD_201306.TXT
|       AD_201309.TXT
|       AD_201312.TXT
|       AD_201403.TXT
|       AD_201406.TXT
|       AD_54.TXT
...      
+---BO2
|       BO2195012.TXT
|       BO2201201.TXT
|       BO2201203.TXT
|       BO2201205.TXT
|       BO2201207.TXT
|       BO2201208.TXT
|       BO2201209.TXT
|       BO2201210.TXT
|       BO2201212.TXT
|       BO2201301.TXT

...

I have managed to define root contracts for all the futures (e.g. in above case AD, BO2 etc) I will be using in FinancialInstrument with CSIData symbols as primary identifiers.

I am now struggling on how to define all the actual individual future contracts (e.g. AD_201203, AD_201206 etc) and setup their lookup using setSymbolLookup.FI.

Any pointers on how to do that?

To setup individual future contracts, I looked into ?future_series and ?build_series_symbols, however, the suffixes they support seem to be only of Future Month code format. So I have a feeling I am left with setting up each individual future contract manually. e.g.

build_series_symbols(data.frame(primary_id=c('ES','NQ'), month_cycle=c('H,M,U,Z'), yearlist = c(10,11)))
 [1] "ESH0" "ESM0" "ESU0" "ESZ0" "NQH0" "NQM0" "NQU0" "NQZ0" "ESH1" "ESM1" "ESU1" "ESZ1" "NQH1" "NQM1" "NQU1" "NQZ1"

I have no clue where to start digging for my second part of my question i.e. setting price lookup for these futures from CSI.

PS: If this is not right forum for this kind of question, I am happy to get it moved to right section or even ask on totally different forum altogether.

PPS: Can someone with higher reputation tag this question with FinancialInstrument and CSIdata? Thanks!

È stato utile?

Soluzione

The first part just works.

R> currency("USD")
[1] "USD"
R> future("AD", "USD", 100000)
[1] "AD"
Warning message:
In future("AD", "USD", 1e+05) :
  underlying_id should only be NULL for cash-settled futures
R> future_series("AD_201206", expires="2012-06-18")
[1] "AD_201206"
R> getInstrument("AD_201206")
primary_id :"AD_201206"
currency   :"USD"
multiplier :1e+05
tick_size  : NULL
identifiers: list()
type       :"future_series" "future"
root_id    :"AD"
suffix_id  :"201206"
expires    :"2012-06-18"

Regarding the second part, I've never used setSymbolLookup.FI. I'd either use setSymbolLookup directly, or set a src instrument attribute if I were going to go that route.

However, I'd probably make a getSymbols method, maybe getSymbols.mycsv, that knows how to find your data if you give it a dir argument. Then, I'd just setDefaults on your getSymbols method (assuming that's how most of your data are stored).

I save data with saveSymbols.days(), and use getSymbols.FI daily. I think it wouldn't be much effort to tweak getSymbols.FI to read csv files instead of RData files. So, I suggest looking at that code.

Then, you can just

setDefaults("getSymbols", src="mycsv")
setDefaults("getSymbols.mycsv", dir="path/to/dir")

Or, if you prefer

setSymbolLookup(AD_201206=list(src="mycsv", dir="/path/to/dir"))

or (essentially the same thing)

instrument_attr("AD_201206", "src", list(src="mycsv", dir="/path/to/dir")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top