R - FinancialInstrument包使用库存时更改符号名称

时间:2015-01-30 18:47:17

标签: r xts quantstrat blotter financialinstrument

我目前正在使用quantstrat / blotter构建策略。我使用的价格数据使用数字作为安全标识符,因此这些数字是列名以及我用于诸如stock()之类的函数中的synbol名称以便导入金融工具。但是,如下面的可重现代码所示,使用我的数据集的一小部分,只要在这些数字标识符上使用stock(),FinancialInstrument包就会以一种奇怪的方式修改它们,方法是附加一个" X"并删除前导数字。基于此,对于与FinancialInstrument包一起使用的符号名称是否有任何限制?

structure(c(9.17000007629395, 9.17000007629395, 9.17000007629395, 
9.17000007629395, 9.17000007629395, 9.17000007629395, 41.0999984741211, 
40.7599983215332, 40.4599990844727, 40.1500015258789, 40.5299987792969, 
40.5299987792969, 41.9900016784668, 41.7449989318848, 42.0299987792969, 
41.7200012207031, 42.25, 41.7000007629395, 29.3199996948242, 
29.3199996948242, 29.3199996948242, 29.3199996948242, 29.3199996948242, 
29.3199996948242), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(c(1403481600, 
1403568000, 1403654400, 1403740800, 1403827200, 1404086400), tzone = "UTC", tclass = "Date"), .Dim = c(6L, 
4L), .Dimnames = list(NULL, c("10078", "10104", "10107", "10108"
)))

colnames(x)
# "10078" "10104" "10107" "10108"

for(i in colnames(x)){
  stock(i,currency="USD",multiplier=1)
}

ls_stocks()
# "X0078" "X0104" "X0107" "X0108"

1 个答案:

答案 0 :(得分:2)

乐器名称需要以字母或点开头。 instrument函数使用make.names来确保这一点。如果能够通过数字找到您的乐器很重要,那么您可以将其添加为标识符。

stock("X1234", currency("USD"), identifiers=list(num=1234))
getInstrument("1234")
#primary_id :"X1234"
#currency   :"USD"
#multiplier :1
#tick_size  :0.01
#identifiers:List of 1
# ..$ num:1234
#type       :"stock"

添加标识符的另一种方法

add.identifier("X1234", id2=42)