У меня есть фрейм данных с датами и ценами:
>df
Price Date
1.25 2012-01-05
...
Я создаю валюту и акции:
currency("USD")
stock("GSPC", "USD")
Затем я создаю объект xts:
GSPC <- xts(df$Price, df$Date)
colnames(GSPC) <- "Close"
Предполагаемое использование состоит в том, чтобы создать промо-портфолио - это работает. Но когда я пытаюсь
updatePortf(portfolio, Symbols="GSPC", Dates = current.date)
Я получаю следующую ошибку:
Error in get(Symbol, pos = env) : object 'GSPC' not found
GSPC не отображается в «showSymbols()», поэтому я предполагаю, что его нужно где-то зарегистрировать. Есть ли способ зарегистрировать символ?
Очень хакерский обходной путь, вдохновленный другим ответом stackoverflow:
GSPC$GSPC.High <- GSPC$Open
GSPC$GSPC.Low <- GSPC$Open
GSPC$GSPC.Close <- GSPC$Open
GSPC$GSPC.Volume <- GSPC$Open
GSPC$GSPC.Adjusted <- GSPC$Open
write.zoo(GSPC, file="GSPC.csv", sep=",")
setSymbolLookup(GSPC=list(src="csv",format="%Y-%m-%d"))
getSymbols("GSPC")
Есть ли лучший способ создать вышеперечисленное? У меня нет (нужно) Volume, High, Low, Close и Adjust - нужны ли они мне для промокашки?
ОБНОВЛЕНИЕ Мне удалось воспроизвести проблему, а затем понять, почему она возникла. Похоже, вы не можете объявить объекты xts в локальной среде функций. Вот воспроизводимый скрипт:
library(xts)
library(FinancialInstrument)
library(blotter)
library(lubridate)
rm(list=ls(envir=.blotter),envir=.blotter)
runme <- function() {
currency("USD")
stock("GSPC", "USD")
dates <-ymd("2012-03-02") + seq(0,9) * ddays(1)
prices <- abs(rnorm(10))
GSPC <- xts(prices, dates)
colnames(GSPC) <- "Close"
# Initialise
initPortf("p", symbols="GSPC", initDate=ymd("2012-01-01"), currency="USD")
initAcct("a", portfolios="p", initDate=ymd("2012-01-01"), initEq=2e6, currency="USD")
trade.date <- ymd("2012-03-04")
addTxn("p", "GSPC", trade.date, 1, GSPC[trade.date])
updatePortf("p", Symbols="GSPC", Dates = trade.date)
updateAcct("a", Dates = trade.date)
updateEndEq("a", Dates = trade.date)
chart.Posn("p")
}
portfolio
? Что такоеcurrent.date
? Какое точное сообщение об ошибке вы получаете? Если вам нужна помощь в воспроизведении, см. stackoverflow.com/questions/5963269/ - person GSee   schedule 09.08.2012