2015-01-30 8 views
2

저는 현재 quantstrat/blotter를 사용하여 전략을 수립하는 중입니다. 내가 사용하는 가격 데이터는 보안 식별자로 숫자를 사용하므로이 숫자는 열 이름뿐 아니라 financial instruments를 가져 오기 위해 stock()와 같은 함수에서 synbol 이름에 사용하는 것입니다. 그러나 아래의 재현 가능한 코드에서 볼 수 있듯이 매우 작은 부분의 데이터 집합을 사용하여 이러한 숫자 식별자에 stock (stockquant가 사용될 때마다 FinancialInstrument 패키지가 "X"를 추가하고 선행 숫자를 제거하여 이상한 방식으로 수정합니다 . 이를 기반으로 FinancialInstrument 패키지에서 사용할 심볼 이름에 대한 제한이 있습니까?R - 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" 
+2

를 추가하는 또 다른 방법은 이상 없습니다. 기호/개체 이름은 문자 또는 점과 문자로 시작해야합니다. 각 주식에 대해 다른 식별자를 사용하십시오. –

+1

흠. 이 코드가'instrument()'에 있기 때문에 발생합니다 : if (substr (primary_id, 1, 1) == 1) primary_id <- substr (primary_id, 2, nchar (primary_id))', 그러나 기억이 안나요 왜 그곳에 가는지. Joshua가 말했듯이, 당신이 계좌를 더 잘 지명 할 수 있고, 숫자를 찾으면 getInstrument()가 여전히 그들을 찾을 수 있도록 식별자를 사용할 수 있습니다 : – GSee

+1

:'' 주식 ("X1234", 통화 ("USD"), 식별자 = 목록 (num = "1234")); getInstrument ("1234")' – GSee

답변

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)