2

背景

我正在尝试设置我的交易分析环境。我正在针对不同经纪人的期货运行一些基于规则的策略,并试图将来自不同经纪人的交易汇总在一个地方。我使用blotter包作为我的主要分析工具。

想法是使用blotterPerformanceAnalytics分析我正在运行的各种策略的实时表现。

手头的问题

我未来 EOD 数据的来源是 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

...

我已经成功地为所有期货定义了根合约(例如,在上述情况下ADBO2),我将使用FinancialInstrumentCSIData 符号作为主要标识符。

我现在正在努力解决如何定义所有实际的个人未来合同(例如AD_201203AD_201206)并使用setSymbolLookup.FI.

关于如何做到这一点的任何指示?

为了设置单独的未来合约,我查看了?future_seriesand ?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吗?谢谢!

4

1 回答 1

1

第一部分只是工作。

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")
于 2013-02-14T13:11:34.993 回答