[R-SIG-Finance] Blotter package - problem with example.

Mark Knecht markknecht at gmail.com
Wed Oct 14 15:35:39 CEST 2009


Hi Jan,
   Yea! Another Gentoo user!

   OK, I had trouble with xts-0.6.8 on windows. I had to go with the
0.6.7 version in the Bezerkeley CRAN repo to get it to work at all. I
haven't tried anything with blotter on Gentoo yet.

HTH,
Mark

On Wed, Oct 14, 2009 at 6:15 AM, Jan Vandermeer <nordicgnome at gmail.com> wrote:
> Hi Jeff;
>
> Thanks for your speedy reply. I thought that I had a relatively up to
> date R repository, kind of just short of SVN but updating to the
> packages on R-forge, xts_0.6.8 and quantmod_0.3-12 allowed a clean
> run.
>
> I guess I was not living as close to the bleeding edge as I thought.
>
> Jan
>
> On Tue, Oct 13, 2009 at 10:27 PM, Jeff Ryan <jeff.a.ryan at gmail.com> wrote:
>> Try installing the latest versions of xts and quantmod as well.  As
>> blotter is under development, it is best to update all the
>> dependencies as well.
>>
>> In this case, I think that should solve your problem.
>>
>> Best,
>> Jeff
>>
>> On Tue, Oct 13, 2009 at 9:22 PM, Jan Vandermeer <nordicgnome at gmail.com> wrote:
>>> Hi all;
>>>
>>> I've been following the discussion here on backtesting
>>> ([R-SIG-Finance] Backtesting framework package -
>>> <https://stat.ethz.ch/pipermail/r-sig-finance/2009q2/004404.html> and
>>> the discussion  [R-SIG-Finance] QuantMod trading models docs?
>>> initiated by Mark Knecht and decided to give the blotter package a
>>> try.
>>> I tried running  through the example provided by the blotter package.
>>> </usr/lib64/R/library/blotter/html/blotter-package.html>
>>> I installed the latest version from R-forge. I am running R version
>>> 2.9.1 (2009-06-26) on an AMD Turion 64 with a Gentoo 2.6.31 kernel.
>>>
>>> Things ran smoothly as shown below until I got to the "p =
>>> updatePortf(p,'2007-01')" step, where R kicked out
>>>
>>> "Error in if (mid != 0 && key < vec[mid]) { :
>>>  missing value where TRUE/FALSE needed".
>>>
>>> So I went along and looked at the
>>> "/usr/lib64/R/library/blotter/html/00Index.html", which sent me along
>>> to "/usr/lib64/R/library/blotter/html/updatePosPL.html" and attempted
>>> to adjust some of the values because the usage seems to indicate that
>>> additional values may be required
>>>
>>> "Usage
>>> updatePosPL(Portfolio, Symbol, StartDate, EndDate, Prices = Cl(get(Symbol)))
>>> updatePortf(Portfolio, StartDate, EndDate)"
>>>
>>> I added an EndDate using the same format as in the getSymbols command.
>>> and received the following error.
>>>
>>>> p = updatePortf(p,'2007-01-01`, '2007-01-31')
>>> Error: unexpected numeric constant in "p = updatePortf(p,'2007-01-01`, '2007"
>>>
>>>
>>> I tried a couple of variations on the updatePosPL()
>>>
>>>> updatePosPL(p, "IBM", '2007-01-01', '2007-01-31', Prices = Cl(get(Symbol)))
>>> Error in updatePosPL(p, "IBM", "2007-01-01", "2007-01-31", Prices =
>>> Cl(get(Symbol))) :
>>>  unused argument(s) ("2007-01-31")
>>>> updatePosPL(p, "IBM", '2007-01-01', '2007-01-31', Prices = Cl(get(Symbol)))
>>> Error in updatePosPL(p, "IBM", "2007-01-01", "2007-01-31", Prices =
>>> Cl(get(Symbol))) :
>>>  unused argument(s) ("2007-01-31")
>>>> updatePosPL(p, "IBM", '2007-01-01', Prices = Cl(get(Symbol)))
>>> Error in get(Symbol) : object 'Symbol' not found
>>>> updatePosPL(p, "IBM", '2007-01-01', Prices = Cl(get(symbol)))
>>> Error in get(symbol) : object 'symbol' not found
>>>
>>> I also tried:
>>>> updatePosPL(p, "IBM", '2007-01-01', Prices = Cl(IBM))
>>> Error in if (any(i < 0)) { : missing value where TRUE/FALSE needed
>>>
>>>
>>> At this point I am at a bit of a loss. I tried looking through some of
>>> the stuff on R-Project to see if there are guidelines for code
>>> examples and where and if they should work. I guess I would expect the
>>> code examples include in the library or
>>> "/usr/lib64/R/library/blotter/R-ex" to just work.
>>>
>>> So, I am I doing something glaringly wrong? Do I need to update my
>>> version of R, xts, zoo or quantmod? I know I am on still on the steep
>>> part of the learning curve as far as R in general is concerned and
>>> specifically with time series and financial data with R but R texts
>>> I've seen suggest that working through examples with real data and
>>> known steps is a great way to learn. Successfully working through
>>> examples allows one small sign posts of success along the way
>>>
>>> Any assistance would be appreciated.
>>>
>>> Jan
>>>
>>>
>>>
>>> Blotter example entered into R and responses after the first _________
>>>
>>> I tried looking at the output for "p", see below the second ______. It
>>> appears to be included in the data.frame
>>>
>>> Values obtained through quantmod are below the third _______
>>>
>>> ________________________________
>>>> library(blotter)
>>> Loading required package: xts
>>> Loading required package: zoo
>>>
>>> Attaching package: 'zoo'
>>>
>>>
>>>        The following object(s) are masked from package:base :
>>>
>>>         as.Date.numeric
>>>
>>> xts now requires a valid TZ environment variable to be set
>>>  no TZ var is set, setting to TZ=GMT
>>>> symbols = c("IBM","F","MMM")
>>>> require(quantmod)
>>> Loading required package: quantmod
>>> Loading required package: Defaults
>>> Loading required package: TTR
>>>> getSymbols(symbols, from='2007-01-01', to='2007-01-31', index.class="POSIXct")
>>> [1] "IBM" "F"   "MMM"
>>>> print('Creating portfolio \"p\"...')
>>> [1] "Creating portfolio \"p\"..."
>>>> p = initPortf(symbols=symbols)
>>>> print('Adding trades to \"p\"...')
>>> [1] "Adding trades to \"p\"..."
>>>> # Make a couple of trades in IBM
>>>> p = addTxn(p, "IBM", '2007-01-03', 50, 96.5, -0.05*50)
>>> [1] "IBM 2007-01-03 50 @ 96.5"
>>>> p = addTxn(p, "IBM", '2007-01-04', 50, 97.1, -0.05*50)
>>> [1] "IBM 2007-01-04 50 @ 97.1"
>>>> # ...a few in F.
>>>> p = addTxn(p, "F", '2007-01-03', -100, 7.60, -0.05*100)
>>> [1] "F 2007-01-03 -100 @ 7.6"
>>>> p = addTxn(p, "F", '2007-01-04', 50, 7.70, -0.05*50)
>>> [1] "F 2007-01-04 50 @ 7.7"
>>>> p = addTxn(p, "F", '2007-01-10', 50, 7.78, -0.05*50)
>>> [1] "F 2007-01-10 50 @ 7.78"
>>>> # ...and some in MMM
>>>> p = addTxn(p, "MMM", '2007-01-05', -50, 77.9, -0.05*50)
>>> [1] "MMM 2007-01-05 -50 @ 77.9"
>>>> p = addTxn(p, "MMM", '2007-01-08', 50, 77.6, -0.05*50)
>>> [1] "MMM 2007-01-08 50 @ 77.6"
>>>> p = addTxn(p, "MMM", '2007-01-09', 50, 77.6, -0.05*50)
>>> [1] "MMM 2007-01-09 50 @ 77.6"
>>> ___________
>>>
>>>
>>> It appears that the transactions have been posted correctly
>>>
>>>> p
>>> $IBM
>>> $IBM$txn
>>>           Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost Pos.Qty
>>> 1950-01-01       0       0.0      0.0       0.0         0.00       0
>>> 2007-01-03      50      96.5     -2.5    4827.5        96.55      50
>>> 2007-01-04      50      97.1     -2.5    4857.5        97.15     100
>>>           Pos.Avg.Cost Realized.PL
>>> 1950-01-01         0.00           0
>>> 2007-01-03        96.55           0
>>> 2007-01-04        96.85           0
>>>
>>> $IBM$posPL
>>>           Pos.Qty Pos.Value Txn.Value Txn.Fees Realized.PL Unrealized.PL
>>> 1950-01-01       0         0         0        0           0             0
>>>           Trading.PL
>>> 1950-01-01          0
>>>
>>>
>>> $F
>>> $F$txn
>>>           Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost Pos.Qty
>>> 1950-01-01       0      0.00      0.0       0.0         0.00       0
>>> 2007-01-03    -100      7.60     -5.0    -755.0         7.55    -100
>>> 2007-01-04      50      7.70     -2.5     387.5         7.75     -50
>>> 2007-01-10      50      7.78     -2.5     391.5         7.83       0
>>>           Pos.Avg.Cost Realized.PL
>>> 1950-01-01         0.00           0
>>> 2007-01-03         7.55           0
>>> 2007-01-04         7.35         -10
>>> 2007-01-10         0.00         -24
>>>
>>> $F$posPL
>>>           Pos.Qty Pos.Value Txn.Value Txn.Fees Realized.PL Unrealized.PL
>>> 1950-01-01       0         0         0        0           0             0
>>>           Trading.PL
>>> 1950-01-01          0
>>>
>>>
>>> $MMM
>>> $MMM$txn
>>>           Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost Pos.Qty
>>> 1950-01-01       0       0.0      0.0       0.0         0.00       0
>>> 2007-01-05     -50      77.9     -2.5   -3892.5        77.85     -50
>>> 2007-01-08      50      77.6     -2.5    3882.5        77.65       0
>>> 2007-01-09      50      77.6     -2.5    3882.5        77.65      50
>>>           Pos.Avg.Cost Realized.PL
>>> 1950-01-01         0.00           0
>>> 2007-01-05        77.85           0
>>> 2007-01-08         0.00          10
>>> 2007-01-09        77.65           0
>>>
>>> $MMM$posPL
>>>           Pos.Qty Pos.Value Txn.Value Txn.Fees Realized.PL Unrealized.PL
>>> 1950-01-01       0         0         0        0           0             0
>>>           Trading.PL
>>> 1950-01-01
>>>
>>> _________________________________________
>>>
>>>> IBM
>>>           IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted
>>> 2007-01-03    97.18    98.40   96.26     97.27    9196800        92.84
>>> 2007-01-04    97.25    98.79   96.88     98.31   10524500        93.83
>>> 2007-01-05    97.60    97.95   96.91     97.42    7221300        92.98
>>> 2007-01-08    98.50    99.50   98.35     98.90   10340000        94.40
>>> 2007-01-09    99.08   100.33   99.07    100.07   11108200        95.51
>>> 2007-01-10    98.50    99.05   97.93     98.89    8744800        94.39
>>> 2007-01-11    99.00    99.90   98.50     98.65    8000700        94.16
>>> 2007-01-12    98.99    99.69   98.50     99.34    6636500        94.82
>>> 2007-01-16    99.40   100.84   99.30    100.82    9602200        96.23
>>> 2007-01-17   100.69   100.90   99.90    100.02    8200700        95.47
>>> 2007-01-18    99.80    99.95   98.91     99.45   14725000        94.92
>>> 2007-01-19    95.00    96.85   94.55     96.17   26035800        91.79
>>> 2007-01-22    96.42    97.23   96.12     97.11   13539300        92.69
>>> 2007-01-23    96.91    97.38   96.20     97.08   10337400        92.66
>>> 2007-01-24    97.08    97.58   96.58     97.40    5700000        92.96
>>> 2007-01-25    97.22    97.92   97.22     97.51    6201300        93.07
>>> 2007-01-26    97.52    97.83   96.84     97.45    5771100        93.01
>>> 2007-01-29    97.70    98.66   97.45     98.54    7294800        94.05
>>> 2007-01-30    98.57    99.45   98.50     99.37    7177900        94.84
>>> 2007-01-31    98.80    99.48   98.35     99.15    6432600        94.63
>>>> F
>>>           F.Open F.High F.Low F.Close  F.Volume F.Adjusted
>>> 2007-01-03   7.56   7.67  7.44    7.51  78652200       7.51
>>> 2007-01-04   7.56   7.72  7.43    7.70  63454900       7.70
>>> 2007-01-05   7.72   7.75  7.57    7.62  40562100       7.62
>>> 2007-01-08   7.63   7.75  7.62    7.73  48938500       7.73
>>> 2007-01-09   7.75   7.86  7.73    7.79  56732200       7.79
>>> 2007-01-10   7.79   7.79  7.67    7.73  42397100       7.73
>>> 2007-01-11   7.73   7.80  7.68    7.77  40020800       7.77
>>> 2007-01-12   7.77   7.92  7.76    7.89  57053800       7.89
>>> 2007-01-16   7.89   8.01  7.87    7.94  66699800       7.94
>>> 2007-01-17   7.97   8.10  7.97    8.04  63728700       8.04
>>> 2007-01-18   8.06   8.24  8.06    8.18  78375700       8.18
>>> 2007-01-19   8.24   8.32  8.17    8.30  66023300       8.30
>>> 2007-01-22   8.33   8.43  8.25    8.41  53554600       8.41
>>> 2007-01-23   8.39   8.62  8.24    8.30 116406900       8.30
>>> 2007-01-24   8.31   8.35  8.11    8.20  76821900       8.20
>>> 2007-01-25   8.15   8.52  8.00    8.22  99688700       8.22
>>> 2007-01-26   8.15   8.48  8.14    8.42  54421900       8.42
>>> 2007-01-29   8.44   8.51  8.35    8.37  55791000       8.37
>>> 2007-01-30   8.38   8.42  8.19    8.20  28763200       8.20
>>> 2007-01-31   8.17   8.20  8.04    8.13  65038600       8.13
>>>> MMM
>>>           MMM.Open MMM.High MMM.Low MMM.Close MMM.Volume MMM.Adjusted
>>> 2007-01-03    77.53    78.85   77.38     78.26    3781500        72.40
>>> 2007-01-04    78.40    78.41   77.45     77.95    2968400        72.11
>>> 2007-01-05    77.89    77.90   77.01     77.42    2765200        71.62
>>> 2007-01-08    77.42    78.04   76.97     77.59    2434500        71.78
>>> 2007-01-09    78.00    78.23   77.44     77.68    1896800        71.86
>>> 2007-01-10    77.31    77.96   77.04     77.85    1787500        72.02
>>> 2007-01-11    78.05    79.03   77.88     78.65    2372500        72.76
>>> 2007-01-12    78.41    79.50   78.22     79.36    2582200        73.42
>>> 2007-01-16    79.48    79.62   78.92     79.56    2526600        73.60
>>> 2007-01-17    79.33    79.51   78.75     78.91    2711300        73.00
>>> 2007-01-18    78.71    79.70   78.60     78.81    1963000        72.91
>>> 2007-01-19    79.09    79.88   78.82     79.25    2912100        73.32
>>> 2007-01-22    79.25    79.29   78.13     78.49    2139300        72.61
>>> 2007-01-23    78.71    79.15   78.33     78.85    1949500        72.95
>>> 2007-01-24    78.85    79.66   78.85     79.49    1772700        73.54
>>> 2007-01-25    79.56    79.75   78.83     79.01    2888700        73.09
>>> 2007-01-26    78.97    79.19   78.23     78.69    1996300        72.80
>>> 2007-01-29    78.54    79.20   78.25     78.96    3420300        73.05
>>> 2007-01-30    74.92    76.18   74.24     74.70   15657900        69.11
>>> 2007-01-31    74.21    74.68   73.09     74.30    9284500        68.74
>>>
>>> _______________________________________________
>>> 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.
>>>
>>
>>
>>
>> --
>> Jeffrey Ryan
>> jeffrey.ryan at insightalgo.com
>>
>> ia: insight algorithmics
>> www.insightalgo.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.
>



More information about the R-SIG-Finance mailing list