在抽头或量子计数器中为R的addTxns()函数添加费用

时间:2012-07-04 15:43:30

标签: r quantstrat

您好我正在看印刷机中的addTxns函数,我想在TxnData参数中添加费用数据/信息(作为列)。

查看功能时,运行

blotter:::addTxns

它似乎使用列名“价格”和“数量”,但自动设置/分配TxnFees为零。

有没有办法覆盖它,以便它可以包含在我的分析中?

以下是一个例子:

rm(list=ls(pos=.blotter),pos=.blotter)
rm(list=ls(pos=.instrument),pos=.instrument)
rm(list=ls(pos=.strategy),pos=.strategy)

currency('USD')
stock("SPY", currency="USD", mulitplier=1)

getSymbols('SPY', from='2012-03-01', to='2012-07-04')

portf.name <- "dummy.Portfolio"  

initPortf(portf.name, 'SPY', initDate='2012-02-29')
initAcct(portf.name, portf.name, initDate='2012-02-29', initEq=1e6)

qty <- rep(c(1,-1), nrow(SPY)/2)
price <- SPY[,4]
txnfees <- rep(-5, nrow(SPY))
txndata <- cbind(qty, price, txnfees)
colnames(txndata) <- c("Quantity","Price","txnfees")

blotter:::addTxns(Portfolio=portf.name, Symbol='SPY', TxnData=txndata )

txns <- getTxns(Portfolio=portf.name, Symbol='SPY')

head(txns)

这将显示在收盘时隔天买入和卖出1股,但不会显示与每笔交易有关的任何费用。

1 个答案:

答案 0 :(得分:2)

Patched in Rev. 1100.

checking out之后,构建并安装新代码,我相信这会做你想要的:

library(blotter)
currency('USD')
stock("SPY", currency="USD", mulitplier=1)
getSymbols('SPY', from='2012-03-01', to='2012-07-04')
portf.name <- "dummy.Portfolio"
initPortf(portf.name, 'SPY', initDate='2012-02-29')
initAcct(portf.name, portf.name, initDate='2012-02-29', initEq=1e6)
qty <- rep(c(1,-1), nrow(SPY)/2)
price <- SPY[,4]
txnfees <- rep(-5, nrow(SPY))
txndata <- cbind(qty, price, txnfees)
colnames(txndata) <- c("Quantity","Price","TxnFees")
blotter:::addTxns(Portfolio=portf.name, Symbol='SPY', TxnData=txndata )
txns <- getTxns(Portfolio=portf.name, Symbol='SPY')
head(txns)

(这是link to our discussion on r-sig-finance