[R-SIG-Finance] Blotter returns question, portfolio vs account
Bos, Roger
roger.bos at rothschild.com
Fri May 5 17:27:56 CEST 2017
All,
I am looking into calculating portfolio and/or account returns using blotter. (I am also trying to learn better the difference between portfolios and accounts.) So I created a simple example pasted below. I get a portfolio return of 6.9% which matches my manual calculation, but I get an account return of -2.0%, so I asking why that might be? The table below shows the portfolio returns, the account returns, and account returns I calculated myself and the account returns I calculated myself match pretty closely to the portfolio returns:
> cbind(portfolio_rets, account_rets, account_test)
IBM.DailyEndEq e1 End.Eq
1950-01-01 NA NA NA
2017-01-03 NA NA 0.00716868674699
2017-01-04 0.01963852409639 0.00526341880180 0.01238108125628
2017-01-05 -0.00337348192771 -0.01564818890663 -0.00330850771915
2017-01-06 0.00500001204819 0.00840183742261 0.00491998823213
2017-01-09 -0.01132533132530 -0.01624412256496 -0.01108951224615
2017-01-10 -0.01283126506024 -0.00152318430183 -0.01270498106907
2017-01-11 0.01343371084337 0.02660636928014 0.01347266762995
2017-01-12 0.00120480120482 -0.01206680763400 0.00119223248882
2017-01-13 -0.00367470481928 -0.00487363426366 -0.00363203936229
2017-01-17 0.00331327108434 0.00701374936220 0.00328673965069
2017-01-18 -0.00656624096386 -0.00984688664341 -0.00649232239259
2017-01-19 0.00006021084337 0.00667025027784 0.00005992206127
2017-01-20 0.02253015060241 0.02246858690647 0.02242074842540
2017-01-23 0.00289154216867 -0.01920589668888 0.00281440041956
2017-01-24 0.02933731927711 0.02636952850479 0.02847450756285
2017-01-25 0.01439758433735 -0.01451393499485 0.01358726027017
2017-01-26 0.00222898192771 -0.01199589056355 0.00207533240522
2017-01-27 -0.00819277710843 -0.01039858078750 -0.00761222976352
2017-01-27 -0.00000001807229 NA NA
2017-01-27 NA 0.00826043493841 -0.00000001692047
2017-01-30 0.00000000000000 0.00000001807229 0.00000000000000
2017-01-31 0.00000000000000 0.00000000000000 0.00000000000000
I tried to figure it out discrepancy with AcctReturns by running the code in AcctReturns interactively, but it uses a non-exported function called .getBySymbol, so I got stuck there.
While I am here, I would be happy to get some advice. If I want to calculate the returns for three strategies, say a small cap fund, mid cap fund, and large cap fund, should I have 3 portfolios in one account or 3 accounts each with one portfolio? I am leaning towards the latter, but then I am wondering why the difference between portfolio and account?
Thanks,
Roger
require(blotter)
require(FinancialInstrument)
require(quantmod)
rm(.blotter)
if(!exists(".instrument")) .instrument <<- new.env()
if(!exists(".blotter")) .blotter <<- new.env()
currency("USD")
symbols = c("IBM")
for(symbol in symbols){ # establish tradable instruments
stock(symbol, currency="USD", multiplier=1)
}
getSymbols(symbols, from='2017-01-01', to='2017-01-31', src='yahoo', index.class=c("POSIXt","POSIXct"))
initPortf("p", symbols=symbols, currency="USD")
## Trades must be made in date order.
addTxn(Portfolio = "p", Symbol = "IBM", TxnDate = '2017-01-03', TxnQty = 1, TxnPrice = 166, TxnFees = 00)
addTxn("p", "IBM", '2017-01-27', -1, 177.30, TxnFees = 0)
updatePortf(Portfolio="p",Dates='2017-01')
initAcct(name="a", portfolios="p", initEq=166, currency="USD")
updateAcct("a",'2017-01')
updateEndEq("a",'2017-01')
portfolio_rets <- PortfReturns(Account="a", Dates="2017", Portfolios="p")
Return.cumulative(rets)
account_rets <- AcctReturns(Account="a", Dates="2017", Portfolios="p")
Return.cumulative(arets)
p = getPortfolio("p")
a = getAccount("a")
account_test <- CalculateReturns(a$summary$End.Eq)
cbind(portfolio_rets, account_rets, account_test)
This message and any attachments are for the intended recipient’s use only. This message may contain confidential, proprietary or legally privileged information. No right to confidential or privileged treatment of this message is waived or lost by an error in transmission.
If you have received this message in error, please immediately notify the sender by e-mail, delete the message, any attachments and all copies from your system and destroy any hard copies. You must not, directly or indirectly, use, disclose, distribute, print or copy any part of this message or any attachments if you are not the intended recipient.
More information about the R-SIG-Finance
mailing list