[R-SIG-Finance] Error in Blotter's Longtrend Demo

Wolfgang Wu wobwu22 at yahoo.de
Thu Mar 25 13:14:25 CET 2010


Ok. Here is another log of me trying to get through the demo. It seems like the first warnings are just there because the rm function can't find the objects. I then get another warning when trying to do a getsymbol. Does this help at all?

> require(TTR)
> require(blotter)
> try(rm("account.longtrend","portfolio.longtrend",pos=.blotter),silent=TRUE)
Warning messages:
1: In rm("account.longtrend", "portfolio.longtrend", pos = .blotter) :
  object 'account.longtrend' not found
2: In rm("account.longtrend", "portfolio.longtrend", pos = .blotter) :
  object 'portfolio.longtrend' not found
> try(rm("ltaccount","ltportfolio","ClosePrice","CurrentDate","equity","GSPC","i","initDate","initEq","Posn","UnitSize","verbose"),silent=TRUE)
There were 12 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'ltaccount' not found
2: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'ltportfolio' not found
3: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'ClosePrice' not found
4: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'CurrentDate' not found
5: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'equity' not found
6: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'GSPC' not found
7: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'i' not found
8: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'initDate' not found
9: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'initEq' not found
10: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'Posn' not found
11: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'UnitSize' not found
12: In rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate",  ... :
  object 'verbose' not found
> # Set initial values
> initDate='1997-12-31'
> initEq=100000
> print("Loading data")
[1] "Loading data"
> currency("USD")
> stock("GSPC",currency="USD",multiplier=1)
> getSymbols('^GSPC', src='yahoo', index.class=c("POSIXt","POSIXct"),from='1998-01-01')
[1] "GSPC"
Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,  :
  downloaded length 187356 != reported length 200
> GSPC=to.monthly(GSPC, indexAt='endof')
> print("Setting up indicators")
[1] "Setting up indicators"
> GSPC$SMA10m <- SMA(GSPC[,grep('Adj',colnames(GSPC))], 10)
> print("Initializing portfolio and account structure")
[1] "Initializing portfolio and account structure"
> ltportfolio='longtrend'
> ltaccount='longtrend'
> initPortf(ltportfolio,'GSPC', initDate=initDate)
[1] "longtrend"
> initAcct(ltaccount,portfolios='longtrend', initDate=initDate)
[1] "longtrend"
> verbose=TRUE
> i <- 10
> CurrentDate=time(GSPC)[i]
> cat(".")
.> equity = getEndEq(ltaccount, CurrentDate)
> ClosePrice = as.numeric(Ad(GSPC[i,]))
> Posn = getPosQty(ltportfolio, Symbol='GSPC', Date=CurrentDate)
> UnitSize = as.numeric(trunc(equity/ClosePrice))
> Posn
[1] 0
> as.numeric(Ad(GSPC[i,])) > as.numeric(GSPC[i,'SMA10m'])
[1] TRUE
> cat('\n')

> addTxn(ltportfolio, Symbol='GSPC', TxnDate=CurrentDate, TxnPrice=ClosePrice, TxnQty = UnitSize , TxnFees=0, verbose=verbose)
[1] "1998-10-30 GSPC 0 @ 1098.67"
> updatePortf(ltportfolio, Dates = CurrentDate)
Error: object 'ConMult' not found

 

Regards,


Wolfgang Wu



----- Ursprüngliche Mail ----
Von: Brian G. Peterson <brian at braverock.com>
An: r-sig-finance at stat.math.ethz.ch
Gesendet: Donnerstag, den 25. März 2010, 11:11:46 Uhr
Betreff: Re: [R-SIG-Finance] Error in Blotter's Longtrend Demo

I am unable to reproduce your error.  Current SVN works fine for me on 
two different machines, one of them only updated after your email.

If it is failing, I'm guessing it is happening earlier in the script.  
Are there any warnings?  The one I would expect is related to the 
instrument definition.

If there is no instrument defined, blotter attempts to proceed forward 
with a contract multiplier of 1.

It is possible that we have not made this assumption everywhere, 
expectially in updatePosn or updateAcct.  If there is a warning earlier 
in the demo, that would confirm that this is where I need to look.

Regards,

     - Brian

On 03/25/2010 03:37 AM, Wob Wu wrote:
> I am trying to reproduce the longtrend example in the current blotter package.
>
>    
>> require('blotter')
>>      
> Loading required package: blotter
> Loading required package: FinancialInstrument
>    
>> demo('longtrend')
>>      
> The demo breaks after the for loop with the error: object 'ConMult' not found.
> Is this a known issue or am I doing something wrong?
>
> I have compared my R settings with Brian's examples in http://ethos.braverock.com/brian/longtrend/sessioninfo.txt
> My xts and zoo package seem to be newer than the ones in the example settings. Is this causing the problem?
>
> Maybe someone can point me to the right direction.
>
> My current setup is the following:
>
>    
>> R.version
>>      
>                 _
> platform       i386-pc-mingw32
> arch           i386
> os             mingw32
> system         i386, mingw32
> status
> major          2
> minor          10.1
> year           2009
> month          12
> day            14
> svn rev        50720
> language       R
> version.string R version 2.10.1 (2009-12-14)
>    
>> sessionInfo()
>>      
> R version 2.10.1 (2009-12-14)
> i386-pc-mingw32
>
> locale:
> [1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252    LC_MONETARY=English_United Kingdom.1252
> [4] LC_NUMERIC=C                            LC_TIME=English_United Kingdom.1252
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] PerformanceAnalytics_1.0.2 blotter_0.4                FinancialInstrument_0.0.2  quantmod_0.3-14            TTR_0.20-1
> [6] Defaults_1.1-1             xts_0.7-1                  zoo_1.6-3
>
> loaded via a namespace (and not attached):
> [1] grid_2.10.1    lattice_0.18-3 tools_2.10.1
>
>
>
> And here is the code snippet of the demo('longtrend') that is breaking:
>
>    
>> # Create trades
>> for( i in 10:NROW(GSPC) ) {
>>      
> +     # browser()
> +     CurrentDate=time(GSPC)[i]
> +     cat(".")
> +     equity = getEndEq(ltaccount, CurrentDate)
> +
> +     ClosePrice = as.numeric(Ad(GSPC[i,]))
> +     Posn = getPosQty(ltportfolio, Symbol='GSPC', Date=CurrentDate)
> +     UnitSize = as.numeric(trunc(equity/ClosePrice))
> +
> +     # Position Entry (assume fill at close)
> +     if( Posn == 0 ) {
> +     # No position, so test to initiate Long position
> +         if( as.numeric(Ad(GSPC[i,]))>  as.numeric(GSPC[i,'SMA10m']) ) {
> +             cat('\n')
> +             # Store trade with blotter
> +             addTxn(ltportfolio, Symbol='GSPC', TxnDate=CurrentDate, TxnPrice=ClosePrice, TxnQty = UnitSize , TxnFees=0, verbose=verbose)
> +         }
> +     } else {
> +     # Have a position, so check exit
> +         if( as.numeric(Ad(GSPC[i,]))<   as.numeric(GSPC[i,'SMA10m'])) {
> +             cat('\n')
> +             # Store trade with blotter
> +             addTxn(ltportfolio, Symbol='GSPC', TxnDate=CurrentDate, TxnPrice=ClosePrice, TxnQty = -Posn , TxnFees=0, verbose=verbose)
> +         }
> +     }
> +
> +     # Calculate P&L and resulting equity with blotter
> +     updatePortf(ltportfolio, Dates = CurrentDate)
> +     updateAcct(ltaccount, Dates = CurrentDate)
> +     updateEndEq(ltaccount, Dates = CurrentDate)
> + } # End dates loop
> .
> [1] "1998-10-30 GSPC 91 @ 1098.67"
> Error: object 'ConMult' not found
> In addition: There were 15 warnings (use warnings() to see them)
>
> Thanks for your help!
>
> Regards,
>
>   Wolfgang Wu
>
>
> _______________________________
> ügt über einen herausragenden Schutz gegen Massenmails.
> http://mail.yahoo.com
>
> _______________________________________________
> R-SIG-Finance at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
>    


-- 
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock

_______________________________________________
R-SIG-Finance at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.


__________________________________________________
Do 
ragenden Schutz gegen Massenmails. 
http://mail.yahoo.com



More information about the R-SIG-Finance mailing list