Background
我正在尝试设置我的交易分析环境。我正在对不同经纪商的期货运行一些基于规则的策略,并试图将来自不同经纪商的交易汇总到一个地方。我正在使用blotter
包作为我的主要分析工具。
想法是使用blotter
和PerformanceAnalytics
来分析我正在运行的各种策略的实时性能。
手头的问题
我未来爆炸物处理数据的来源是CSIData。这些期货的所有EOD OHLC价格都以CSV格式存储在以下目录结构中。对于每个期货都有单独的目录,每个期货合约都有一个包含 OHLC 价格序列的 csv 文件。
|
+---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
...
我已经设法为所有期货(例如,在上述情况下AD
、BO2
等(定义了根合约,我将在FinancialInstrument
中使用 CSIData 符号作为主要标识符。
我现在正在为如何定义所有实际的个人期货合约而苦恼(例如 AD_201203
、AD_201206
等(并使用setSymbolLookup.FI
设置他们的查找。
关于如何做到这一点的任何指示?
为了设置单个期货合约,我研究了?future_series
和?build_series_symbols
,但是,它们支持的后缀似乎只是未来月份的代码格式。所以我有一种感觉,我只能手动设置每个单独的未来合同。 例如
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"
我不知道从哪里开始挖掘我问题的第二部分,即从 CSI 为这些期货设置价格查找。
PS:如果这不是此类问题的正确论坛,我很乐意将其移至正确的部分,甚至在完全不同的论坛上提问。
PPS:声誉较高的人可以用FinancialInstrument
和CSIdata
来标记这个问题吗?谢谢!
第一部分只是工作。
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"
关于第二部分,我从未使用过setSymbolLookup.FI
. 如果我要走这条路,我要么直接使用 setSymbolLookup
,要么设置一个src
乐器属性。
但是,我可能会提出一种getSymbols
方法,也许是getSymbols.mycsv
,如果您给它一个dir
的参数,它知道如何找到您的数据。 然后,我将setDefaults
您的getSymbols
方法(假设这是大多数数据的存储方式(。
我用saveSymbols.days()
保存数据,每天使用getSymbols.FI
。 我认为调整getSymbols.FI
读取 csv 文件而不是 RData 文件不会花费太多精力。 因此,我建议查看该代码。
然后,你可以
setDefaults("getSymbols", src="mycsv")
setDefaults("getSymbols.mycsv", dir="path/to/dir")
或者,如果您愿意
setSymbolLookup(AD_201206=list(src="mycsv", dir="/path/to/dir"))
或(本质上相同(
instrument_attr("AD_201206", "src", list(src="mycsv", dir="/path/to/dir")