Skip to content
Prev 7156 / 15274 Next

Possible bug in blotter

Wolfgang,

Your example is sending in prices in a way that blotter doesn't expect. 
I've modified your example to construct the price series that blotter can
work with.  We'll have to figure out a way to check the price series and
warn the user when it's mangled, so I appreciate the use case.

I've modified your script to construct a time series of prices for the
instrument being traded, ABC.  blotter uses FinancialInstrument to
associate the prices with the instrument, so that you don't have to.  I'd
refer you to the documentation, but we're still writing it...

library(blotter)
currency('USD')
stock('ABC', currency='USD', multiplier=1)
initPortf('portA', symbols="ABC", initDate='2010-01-01');
initAcct('accA',portfolios='portA', initDate='2010-01-01', initEq=100);
#Buy on day 2
addTxn("portA", Symbol='ABC', TxnDate='2010-01-02', TxnPrice=100, TxnQty =
1, TxnFees=0, verbose=TRUE)
ABC <- xts(100, order.by=as.Date('2010-01-02'))
colnames(ABC) = "Close"
updatePortf('portA', Dates = '2010-01-02')
updateAcct('accA', Dates = '2010-01-02')
updateEndEq('accA', Dates = '2010-01-02')
#Sell on day 3
addTxn("portA", Symbol='ABC', TxnDate='2010-01-03', TxnPrice=100, TxnQty =
-1, TxnFees=0, verbose=TRUE)
ABC <- rbind(ABC, xts(100, order.by=as.Date('2010-01-03')))
updatePortf('portA', Dates = '2010-01-03')
updateAcct('accA', Dates = '2010-01-03')
updateEndEq('accA', Dates = '2010-01-03')
#Equity wrong?
getPortfolio('portA')
getAccount('accA')

That results in:
$portfolios
$portfolios$portA
           Long.Value Short.Value Net.Value Gross.Value Realized.PL
2010-01-01          0           0         0           0           0
2010-01-02        100           0       100         100           0
2010-01-03          0           0         0           0           0
           Unrealized.PL Gross.Trading.PL Txn.Fees Net.Trading.PL
2010-01-01             0                0        0              0
2010-01-02             0                0        0              0
2010-01-03             0                0        0              0


$summary
           Additions Withdrawals Realized.PL Unrealized.PL Int.Income
2010-01-01         0           0           0             0          0
2010-01-02         0           0           0             0          0
2010-01-03         0           0           0             0          0
           Gross.Trading.PL Txn.Fees Net.Trading.PL Advisory.Fees
2010-01-01                0        0              0             0
2010-01-02                0        0              0             0
2010-01-03                0        0              0             0
           Net.Performance End.Eq
2010-01-01               0    100
2010-01-02               0    100
2010-01-03               0    100

attr(,"currency")
[1] "USD"
attr(,"initEq")
[1] 100
attr(,"class")
[1] "portfolio_account" "account"

... which is, I think, what you're looking for.

pcc