Why when names(getPortfolio(portfolio)) [1] " -24702R9GE" do I have [1] "2008-05-30 -24702R9GE 10 @ 35" Error in get(x, pos = .instrument) : object ' -24702R9GE' not found Error in get(Symbol, envir = as.environment(.GlobalEnv)) : object ' -24702R9GE' not found when I call portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
What are the requirements for instrument names in a blotter portfolio?
5 messages · Robert Nicholson, Brian G. Peterson
R variable names may not start with a number. instruments will be used to create R variables, so all normal naming rules for variables apply.
Robert Nicholson wrote:
Why when names(getPortfolio(portfolio)) [1] " -24702R9GE" do I have [1] "2008-05-30 -24702R9GE 10 @ 35" Error in get(x, pos = .instrument) : object ' -24702R9GE' not found Error in get(Symbol, envir = as.environment(.GlobalEnv)) : object ' -24702R9GE' not found when I call portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock
Why then do I get this?
I added
Transactions$Symbol = sub('[ -]*','INST',Transactions$Symbol)
so this prefixes everything I had with INST presumably I can have digits in the name
1] "2008-05-30 INST24702R9GE 10 @ 0.35"
Error in get(x, pos = .instrument) : object 'INST24702R9GE' not found
Error in get(Symbol, envir = as.environment(.GlobalEnv)) :
object 'INST24702R9GE' not found
On Apr 26, 2010, at 5:01 AM, Brian G. Peterson wrote:
R variable names may not start with a number. instruments will be used to create R variables, so all normal naming rules for variables apply. Robert Nicholson wrote:
Why when names(getPortfolio(portfolio)) [1] " -24702R9GE" do I have [1] "2008-05-30 -24702R9GE 10 @ 35" Error in get(x, pos = .instrument) : object ' -24702R9GE' not found Error in get(Symbol, envir = as.environment(.GlobalEnv)) : object ' -24702R9GE' not found when I call portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
-- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock
As should be clear from the documentation and examples, we have followed
the 'quantmod' convention of storing the market data as the symbol name.
My presumtion is that as you could not possibly have stored your market
data as '-24702R9GE' (as this is an illegal R variable name), you have
likely also not stored it as 'INST24702R9GE'
The call that is failing, however, suggests a different problem.
This error:
Error in get(x, pos = .instrument) : object 'INST24702R9GE' not found
suggests that you haven't declared the instrument, with currency,
multiplier, etc.
it's not clear if the next error is directly related, or if it is simply
the code falling back to try to find the instrument data in the global
environment.
Diagnosing this would be much easier if you provided a complete,
reproducible example, per the posting guide. Then I wouldn't have to
guess, I could simply run the code.
Regards,
- Brian
On 04/26/2010 08:32 AM, Robert Nicholson wrote:
Why then do I get this?
I added
Transactions$Symbol = sub('[ -]*','INST',Transactions$Symbol)
so this prefixes everything I had with INST presumably I can have digits in the name
1] "2008-05-30 INST24702R9GE 10 @ 0.35"
Error in get(x, pos = .instrument) : object 'INST24702R9GE' not found
Error in get(Symbol, envir = as.environment(.GlobalEnv)) :
object 'INST24702R9GE' not found
On Apr 26, 2010, at 5:01 AM, Brian G. Peterson wrote:
R variable names may not start with a number.
instruments will be used to create R variables, so all normal naming rules for variables apply.
Robert Nicholson wrote:
Why when
names(getPortfolio(portfolio))
[1] " -24702R9GE"
do I have
[1] "2008-05-30 -24702R9GE 10 @ 35"
Error in get(x, pos = .instrument) : object ' -24702R9GE' not found
Error in get(Symbol, envir = as.environment(.GlobalEnv)) : object ' -24702R9GE' not found
when I call
portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
-- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock
Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock
Sure here's an example
Please bear I'm in mind I'm still learning R and blotter.
The idea is to put transaction data thru and then look at the PnL ideally for each trade
The transactions file looks like this for each row
05/30/2008, YOU BOUGHT OPENING TRANSACTION, -24702R9GE, CALL (DLQ) DELL INC JUL 25 (100 SHS),Cash,10,0.35,17.5,,,-367.5, 06/02/2008
06/12/2008, YOU SOLD CLOSING TRANSACTION, -24702R9GE, CALL (DLQ) DELL INC JUL 25 (100 SHS),Cash,-10,0.56,18.45,,,541.54, 06/13/2008
library(quantmod)
library(blotter)
library(PerformanceAnalytics)
Transactions <- as.xts(read.zoo("/Users/robert/Downloads/transactions.csv", header=FALSE, FUN=as.POSIXct, sep=",", format="%m/%d/%Y"))
colnames(Transactions) <- c('Action', 'Symbol', 'SecurityDescription', 'Cash', 'Quantity', 'Price', 'Commission', 'Fees', 'Blank', 'Amount', 'SettlementDate')
Transactions$Symbol = sub('[ -]*','INST',Transactions$Symbol)
symbols = as.character((unique(Transactions$Symbol)))
portfolioname = 'portfolio'
accountname = 'account'
rm(list=ls(envir=.blotter),envir=.blotter)
portfolio <- initPortf(portfolioname, symbols=symbols)
account = initAcct(accountname, portfolios=portfolioname)
for (i in 1:NROW(Transactions)) {
Transaction = Transactions[i]
CurrentDate=time(Transaction)
equity = getEndEq(account, CurrentDate)
symbol = Transaction$Symbol
price = as.numeric(Transaction$Price)
quantity = as.numeric(Transaction$Quantity)
if(is.na(Transaction$Fees)) {
fees = 0
} else {
fees = as.numeric(Transaction$Fees)
}
if (is.na(Transaction$Commission)) {
commission = 0
} else {
commission = as.numeric(Transaction$Commission)
}
multiplier = 1
if(substr(symbol,2,2) == '-') {
multiplier = 100
}
addTxn(Portfolio=portfolio, Symbol=symbol, TxnDate=CurrentDate, TxnPrice=(price*multiplier), TxnQty=quantity, TxnFees=(commission + fees), verbose=TRUE, ConMult=1)
portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
}
#portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
#account = updateAcct(Account = account, Dates = CurrentDate)
#account = updateEndEq(Account = account, Dates = CurrentDate)
On Apr 26, 2010, at 8:40 AM, Brian G. Peterson wrote:
As should be clear from the documentation and examples, we have followed the 'quantmod' convention of storing the market data as the symbol name.
My presumtion is that as you could not possibly have stored your market data as '-24702R9GE' (as this is an illegal R variable name), you have likely also not stored it as 'INST24702R9GE'
The call that is failing, however, suggests a different problem.
This error:
Error in get(x, pos = .instrument) : object 'INST24702R9GE' not found
suggests that you haven't declared the instrument, with currency, multiplier, etc.
it's not clear if the next error is directly related, or if it is simply the code falling back to try to find the instrument data in the global environment.
Diagnosing this would be much easier if you provided a complete, reproducible example, per the posting guide. Then I wouldn't have to guess, I could simply run the code.
Regards,
- Brian
On 04/26/2010 08:32 AM, Robert Nicholson wrote:
Why then do I get this?
I added
Transactions$Symbol = sub('[ -]*','INST',Transactions$Symbol)
so this prefixes everything I had with INST presumably I can have digits in the name
1] "2008-05-30 INST24702R9GE 10 @ 0.35"
Error in get(x, pos = .instrument) : object 'INST24702R9GE' not found
Error in get(Symbol, envir = as.environment(.GlobalEnv)) :
object 'INST24702R9GE' not found
On Apr 26, 2010, at 5:01 AM, Brian G. Peterson wrote:
R variable names may not start with a number.
instruments will be used to create R variables, so all normal naming rules for variables apply.
Robert Nicholson wrote:
Why when
names(getPortfolio(portfolio))
[1] " -24702R9GE"
do I have
[1] "2008-05-30 -24702R9GE 10 @ 35"
Error in get(x, pos = .instrument) : object ' -24702R9GE' not found
Error in get(Symbol, envir = as.environment(.GlobalEnv)) : object ' -24702R9GE' not found
when I call
portfolio = updatePortf(Portfolio = portfolio, Dates = CurrentDate)
-- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock
-- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock