require(blotter)
## Loading required package: blotter
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Loading required package: FinancialInstrument
## Loading required package: quantmod
## Loading required package: Defaults
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
## Loading required package: PerformanceAnalytics
##
## Attaching package: 'PerformanceAnalytics'
##
## The following object is masked from 'package:graphics':
##
## legend
require(quantmod)
currency("USD")
## [1] "USD"
# Initialize a portfolio object 'p'
print("Creating portfolio \"p\"...")
## [1] "Creating portfolio \"p\"..."
initPortf("p", symbols = "MMM", currency = "USD")
## [1] "p"
getSymbols("MMM", from = "2007-01-01", to = "2007-01-31", src = "yahoo", index.class = c("POSIXt",
"POSIXct")) # Download price data
## As of 0.4-0, 'getSymbols' uses env=parent.frame() and
## auto.assign=TRUE by default.
##
## This behavior will be phased out in 0.5-0 when the call will
## default to use auto.assign=FALSE. getOption("getSymbols.env") and
## getOptions("getSymbols.auto.assign") are now checked for alternate defaults
##
## This message is shown once per session and may be disabled by setting
## options("getSymbols.warning4.0"=FALSE). See ?getSymbol for more details
## [1] "MMM"
stock("MMM", currency = "USD", multiplier = 1) # Add the instrument
## [1] "MMM"
addTxn("p", "MMM", "2007-01-05", -50, 77.9, TxnFees = -0.05 * 50)
## [1] "2007-01-05 00:00:00 MMM -50 @ 77.9"
addTxn("p", "MMM", "2007-01-08", 50, 77.6, TxnFees = -0.05 * 50)
## [1] "2007-01-08 00:00:00 MMM 50 @ 77.6"
addTxn("p", "MMM", "2007-01-09", 50, 77.6, TxnFees = -0.05 * 50)
## [1] "2007-01-09 00:00:00 MMM 50 @ 77.6"
addTxn("p", "MMM", "2007-01-10", -50, 77.04, TxnFees = -0.05 * 50)
## [1] "2007-01-10 00:00:00 MMM -50 @ 77.04"
updatePortf(Portfolio = "p", Dates = "2007-01")
## [1] "p"
initAcct(name = "a", portfolios = "p", initEq = 10000, currency = "USD")
## [1] "a"
updateAcct("a", "2007-01") # Check out the sweet date scoping. Thanks, xts.
## [1] "a"
updateEndEq("a", "2007-01")
## [1] "a"
PortfReturns(Account = "a", Dates = "2007", Portfolios = "p")
## MMM.DailyEndEq
## 2007-01-03 0.00000
## 2007-01-04 0.00000
## 2007-01-05 0.00215
## 2007-01-08 -0.00115
## 2007-01-09 0.00015
## 2007-01-10 -0.00345
## 2007-01-11 0.00000
## 2007-01-12 0.00000
## 2007-01-16 0.00000
## 2007-01-17 0.00000
## 2007-01-18 0.00000
## 2007-01-19 0.00000
## 2007-01-22 0.00000
## 2007-01-23 0.00000
## 2007-01-24 0.00000
## 2007-01-25 0.00000
## 2007-01-26 0.00000
## 2007-01-29 0.00000
## 2007-01-30 0.00000
## 2007-01-31 0.00000
getTxns(Portfolio = "p", Symbol = "MMM", Date = "2007-01")
## Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost
## 2007-01-05 -50 77.90 -2.5 -3895 77.90
## 2007-01-08 50 77.60 -2.5 3880 77.60
## 2007-01-09 50 77.60 -2.5 3880 77.60
## 2007-01-10 -50 77.04 -2.5 -3852 77.04
## Net.Txn.Realized.PL
## 2007-01-05 -2.5
## 2007-01-08 12.5
## 2007-01-09 -2.5
## 2007-01-10 -30.5
getTxns(Portfolio = "p", Symbol = "MMM", Date = "2007-01-03::2007-01-05")
## Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost
## 2007-01-05 -50 77.9 -2.5 -3895 77.9
## Net.Txn.Realized.PL
## 2007-01-05 -2.5
getPos(Portfolio = "p", Symbol = "MMM", Date = "2007-01")
## Error: character string is not in a standard unambiguous format
getPos(Portfolio = "p", Symbol = "MMM", Date = "2007-01-05")
## Pos.Qty Pos.Avg.Cost
## 2007-01-05 -50 77.9
getPosQty(Portfolio = "p", Symbol = "MMM", Date = "2007-01")
## Error: character string is not in a standard unambiguous format
dailyStats("p", use = "txns")
## Error: object 'dailyPL' not found
dailyStats("p", use = "trades")
## Error: object 'dailyPL' not found
dailyEqPL("p")
## MMM.DailyEndEq
## 2007-01-03 0.0
## 2007-01-04 0.0
## 2007-01-05 21.5
## 2007-01-08 -11.5
## 2007-01-09 1.5
## 2007-01-10 -34.5
## 2007-01-11 0.0
## 2007-01-12 0.0
## 2007-01-16 0.0
## 2007-01-17 0.0
## 2007-01-18 0.0
## 2007-01-19 0.0
## 2007-01-22 0.0
## 2007-01-23 0.0
## 2007-01-24 0.0
## 2007-01-25 0.0
## 2007-01-26 0.0
## 2007-01-29 0.0
## 2007-01-30 0.0
## 2007-01-31 0.0
dailyTxnPL("p")
## MMM.DailyTxnPL
## 2007-01-04 -2.5
## 2007-01-07 12.5
## 2007-01-08 -2.5
## 2007-01-09 -30.5