[R-SIG-Finance] addTxns addfees
Hideyoshi Maeda
hideyoshi.maeda at gmail.com
Thu Jul 5 02:17:46 CEST 2012
Thats amazing! Thank you very much! and thanks to all of you guys that help build such a great resource for all to use!
On 5 Jul 2012, at 10:01, G See wrote:
> Yeah, yeah, ok. Patched in Rev. 1100.
>
> Your TxnData object must have a column named "TxnFees" (instead of
> "TxnFee" because both addTxn and .calcTxnValue use "TxnFees").
>
> If you need help checking out and building the current source code,
> see here (http://stackoverflow.com/questions/11105131/cannot-install-r-forge-package-using-install-packages)
>
> After updated, this should do what you want:
>
> 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)
>
> Best,
> Garrett
>
> On Wed, Jul 4, 2012 at 6:42 PM, Hideyoshi Maeda
> <hideyoshi.maeda at gmail.com> wrote:
>> Ah ok, I didn't look at the repository...is that expected to go in any time soon given its simplicity in adjustment?
>>
>> On 5 Jul 2012, at 09:36, G See wrote:
>>
>>> If you look at the code in the repository,
>>>
>>> https://r-forge.r-project.org/scm/viewvc.php/pkg/blotter/R/addTxn.R?view=markup&revision=1081&root=blotter
>>>
>>> you can see that there are comments saying that this isn't yet supported.
>>>
>>> TxnFee <- 0 #TODO FIXME support transaction fees in addTxns
>>> #TxnFee <- ifelse( is.function(TxnFees), TxnFees(TxnQty,
>>> TxnPrice), TxnFees)
>>>
>>> Sorry,
>>> Garrett
>>>
>>> On Wed, Jul 4, 2012 at 6:29 PM, G See <gsee000 at gmail.com> wrote:
>>>> My apologies. I see what you are talking about, and I see where that
>>>> is hardcoded in. So, you would need to replace
>>>>
>>>> TxnFee <- 0
>>>>
>>>> with
>>>>
>>>> TxnFee <- as.numeric(TxnData[row, "txnfees"])
>>>>
>>>>
>>>> On Wed, Jul 4, 2012 at 6:24 PM, Hideyoshi Maeda
>>>> <hideyoshi.maeda at gmail.com> wrote:
>>>>> Thanks for your response.
>>>>>
>>>>> I am aware that addTxn is not vectorized...
>>>>>
>>>>> but what I am using below is addTxns...(note the 's' after Txn)
>>>>>
>>>>> This allows transaction data through the TxnData argument
>>>>>
>>>>> It is, in effect, a vectorised version of addTxn...even the blotter demo from
>>>>>
>>>>> demo(amzn_test)
>>>>>
>>>>> uses this....
>>>>>
>>>>> However unlike the demo...i wanted to include Transaction fees, and wanted to know if this was possible...as the function for addTxns automatically assigns this to zero...
>>>>>
>>>>>
>>>>>
>>>>> On 5 Jul 2012, at 09:15, G See wrote:
>>>>>
>>>>>> Hi Hideyoshi,
>>>>>>
>>>>>> addTxn is not vectorized, and it does not have a txnData argument. To
>>>>>> see how the function is intended to be used, please read
>>>>>>
>>>>>> ?addTxn
>>>>>>
>>>>>> Then look at the demos that are included with blotter as well as the
>>>>>> examples in ?blotter.
>>>>>>
>>>>>> HTH,
>>>>>> Garrett
>>>>>>
>>>>>> On Wed, Jul 4, 2012 at 5:46 PM, Hideyoshi Maeda
>>>>>> <hideyoshi.maeda at gmail.com> wrote:
>>>>>>> If an example is required
>>>>>>>
>>>>>>> Here is an example:
>>>>>>>
>>>>>>> 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)
>>>>>>> This will show the buying and selling of 1 share on alternate days at the close but will not show any of the fees relating to each transaction.
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> HLM
>>>>>>>
>>>>>>> On 5 Jul 2012, at 01:48, Hideyoshi Maeda wrote:
>>>>>>>
>>>>>>>> Hi I am looking at the addTxns function in blotter, and I would like to add fees data/information in the TxnData argument (as a column).
>>>>>>>>
>>>>>>>> When looking at the function, by running
>>>>>>>>
>>>>>>>> blotter:::addTxns
>>>>>>>> it seems to use the column names "Price" and "Quantity" but automatically sets/assigns the TxnFees to zero.
>>>>>>>>
>>>>>>>> Is there a way of overwriting this, so that it can be included in my analysis?
>>>>>>>>
>>>>>
>>
More information about the R-SIG-Finance
mailing list