[Blotter-commits] r365 - pkg/blotter/tests

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Fri Aug 6 17:42:28 CEST 2010


Author: braverock
Date: 2010-08-06 17:42:28 +0200 (Fri, 06 Aug 2010)
New Revision: 365

Added:
   pkg/blotter/tests/runitAddTxn.R
   pkg/blotter/tests/runitCalcValues.R
   pkg/blotter/tests/testSuite.R
Removed:
   pkg/blotter/tests/addTxn.R
   pkg/blotter/tests/calcValues.R
Log:


Deleted: pkg/blotter/tests/addTxn.R
===================================================================
--- pkg/blotter/tests/addTxn.R	2010-07-29 15:43:53 UTC (rev 364)
+++ pkg/blotter/tests/addTxn.R	2010-08-06 15:42:28 UTC (rev 365)
@@ -1,201 +0,0 @@
-Sys.setenv(TZ="America/Chicago")        # as the data set got save with this TZ
-options("width"=78)                     # to tie down the print() statement width
-verbose <- FALSE
-data(IBM)                               # data included in package
-symbols <- c("IBM")
-
-suppressMessages(library(blotter))  # to suppress the TZ noise from xts
-suppressMessages(library(quantmod))
-# Initialize a portfolio object 'p'
-# Creating portfolio:
-p = initPortf(symbols=symbols)
-
-## Trades must be made in date order.
-# Make a couple of trades in IBM
-p = addTxn(p, "IBM", '2007-01-03', 50, 96.5, 0.05*50)
-p = addTxn(p, "IBM", '2007-01-04', -50, 97.1, 0.05*50)
-p = addTxn(p, "IBM", '2007-01-08', -10, 99.2, 0.05*10)
-p = addTxn(p, "IBM", '2007-01-09', -10, 100.1, 0.05*10)
-p = addTxn(p, "IBM", '2007-01-17', -10, 100.25, 0.05*10)
-p = addTxn(p, "IBM", '2007-01-19', 30, 95, 0.05*30)
-p = addTxn(p, "IBM", '2007-01-22', 25, 96.3, 0.05*25)
-p = addTxn(p, "IBM", '2007-01-23', 25, 96.42, 0.05*25)
-p = addTxn(p, "IBM", '2007-01-26', -25, 97.52, 0.05*25)
-p = addTxn(p, "IBM", '2007-01-31', -25, 98.80, 0.05*25)
-
-# Resulting transaction table:
-p[["IBM"]]$txn
-# > p[["IBM"]]$txn
-#            Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost Pos.Qty
-# 1950-01-01       0      0.00     0.00      0.00         0.00       0
-# 2007-01-03      50     96.50     2.50   4822.50        96.45      50
-# 2007-01-04     -50     97.10     2.50  -4857.50        97.15       0
-# 2007-01-08     -10     99.20     0.50   -992.50        99.25     -10
-# 2007-01-09     -10    100.10     0.50  -1001.50       100.15     -20
-# 2007-01-17     -10    100.25     0.50  -1003.00       100.30     -30
-# 2007-01-19      30     95.00     1.50   2848.50        94.95       0
-# 2007-01-22      25     96.30     1.25   2406.25        96.25      25
-# 2007-01-23      25     96.42     1.25   2409.25        96.37      50
-# 2007-01-26     -25     97.52     1.25  -2439.25        97.57      25
-# 2007-01-31     -25     98.80     1.25  -2471.25        98.85       0
-#            Pos.Avg.Cost Realized.PL
-# 1950-01-01         0.00         0.0
-# 2007-01-03        96.45         0.0
-# 2007-01-04         0.00        35.0
-# 2007-01-08        99.25         0.0
-# 2007-01-09        99.70         0.0
-# 2007-01-17        99.90         0.0
-# 2007-01-19         0.00       148.5
-# 2007-01-22        96.25         0.0
-# 2007-01-23        96.31         0.0
-# 2007-01-26        95.05        31.5
-# 2007-01-31         0.00        95.0
-
-# Tests for Transactions
-t1 = getTxn(p,"IBM",'2007-01-03')
-print(t1)
-# > t1
-#            Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost
-# 2007-01-03      50      96.5      2.5    4822.5        96.45
-print(all.equal(as.numeric(t1[,'Txn.Qty']), 50)) # Test Txn.Qty
-print(all.equal(as.numeric(t1[,'Txn.Price']), 96.5)) # Test Txn.Qty
-print(all.equal(as.numeric(t1[,'Txn.Fees']), 2.5)) # Test Txn.Qty
-print(all.equal(as.numeric(t1[,'Txn.Value']), 4822.5)) # Test Txn.Value
-print(all.equal(as.numeric(t1[,'Txn.Avg.Cost']), 96.45)) # Test Txn.Avg.Cost
-
-t2 = getTxn(p,"IBM",'2007-01-04')
-print(t2)
-# > t2
-#            Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost
-# 2007-01-04     -50      97.1      2.5   -4857.5        97.15
-print(all.equal(as.numeric(t2[,'Txn.Value']), -4857.5)) # Test Txn.Value
-print(all.equal(as.numeric(t2[,'Txn.Avg.Cost']), 97.15)) # Test Txn.Avg.Cost
-
-t3 = getTxn(p,"IBM",'2007-01-09')
-print(t3)
-# > t3
-#            Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost
-# 2007-01-09     -10     100.1      0.5   -1001.5       100.15
-print(all.equal(as.numeric(t3[,'Txn.Value']), -1001.5)) # Test Txn.Value
-print(all.equal(as.numeric(t3[,'Txn.Avg.Cost']), 100.15)) # Test Txn.Avg.Cost
-
-t4 = getTxn(p,"IBM",'2007-01-07') # No Txn on this date
-print(t4)
-# > t4
-#      Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost
-print(all.equal(as.numeric(t4[,'Txn.Value']), as.numeric(NULL))) # Test Txn.Value
-print(all.equal(as.numeric(t4[,'Txn.Avg.Cost']), as.numeric(NULL))) # Test Txn.Avg.Cost
-
-# Position query functions use xts date subsetting to find the most
-# recent position, even for days without a transaction associated. The
-# result of the second query shows that a position change was made on
-# 2007-01-09 and gives the end of day position.
-
-# Doing the same query for the next day indicates that no change was made
-# on 2007-01-16, so the position data for the previous day is still the
-# relevant information.
-
-p1 = getPos(p,"IBM",'2007-01-08')
-print(p1)
-#            Pos.Qty Pos.Avg.Cost
-# 2007-01-08     -10        99.25
-print(all.equal(as.numeric(p1[,'Pos.Qty']), -10)) # Test Pos.Qty
-
-p2 = getPos(p,"IBM",'2007-01-09')
-print(p1)
-#            Pos.Qty Pos.Avg.Cost
-# 2007-01-09     -20         99.7
-print(all.equal(as.numeric(p1[,'Pos.Qty']), -20)) # Test Pos.Qty
-
-p3 = getPos(p,"IBM",'2007-01-16')
-print(p3)
-#            Pos.Qty Pos.Avg.Cost
-# 2007-01-09     -20         99.7
-print(all.equal(as.numeric(p1[,'Pos.Avg.Cost']), 99.7)) # Test Pos.Avg.Cost
-
-
-# To get realized PL during a period, use xts date scoping directly in 'Date':
-rpl1 = getRealizedPL(p,"IBM",'2007-01-04')
-print(rpl1)
-# [1] 35.0
-print(all.equal(rpl1, 35.0)) # Test Realized.PL
-
-rpl2 = getRealizedPL(p,"IBM",'2007-01-08')
-print(rpl2)
-# [1] 0
-print(all.equal(rpl2, 0)) # Test Realized.PL
-
-rpl3 = getRealizedPL(p,"IBM",'2007-01-05')
-print(rpl3)
-# [1] 0
-print(all.equal(rpl3, 0)) # Test Realized.PL, non-existent date
-
-rpl4 = getRealizedPL(p,"IBM",'2007-01')
-print(rpl4)
-# [1] 310
-print(all.equal(rpl4, 99.7)) # Test Realized.PL aggregation
-
-# Tests for P&L
-# p = updatePortf(p,'2007-01')
-# # Resulting postions table:
-# # p[["IBM"]]$posPL
-# # > p[["IBM"]]$posPL                                                 
-# #            Pos.Qty Pos.Value Txn.Value Txn.Fees Realized.PL Unrealized.PL
-# # 1950-01-01       0      0.00      0.00     0.00         0.0          0.00
-# # 2007-01-03      50   4863.50   4822.50     2.50         0.0         41.00
-# # 2007-01-04       0      0.00  -4857.50     2.50        35.0        -41.00
-# # 2007-01-05       0      0.00      0.00     0.00         0.0          0.00
-# # 2007-01-08     -10   -989.00   -992.50     0.50         0.0          3.50
-# # 2007-01-09     -20  -2001.40  -1001.50     0.50         0.0        -10.90
-# # 2007-01-10     -20  -1977.80      0.00     0.00         0.0         23.60
-# # 2007-01-11     -20  -1973.00      0.00     0.00         0.0          4.80
-# # 2007-01-12     -20  -1986.80      0.00     0.00         0.0        -13.80
-# # 2007-01-16     -20  -2016.40      0.00     0.00         0.0        -29.60
-# # 2007-01-17     -30  -3000.60  -1003.00     0.50         0.0         18.80
-# # 2007-01-18     -30  -2983.50      0.00     0.00         0.0         17.10
-# # 2007-01-19       0      0.00   2848.50     1.50       148.5        -13.50
-# # 2007-01-22      25   2427.75   2406.25     1.25         0.0         21.50
-# # 2007-01-23      50   4854.00   2409.25     1.25         0.0         17.00
-# # 2007-01-24      50   4870.00      0.00     0.00         0.0         16.00
-# # 2007-01-25      50   4875.50      0.00     0.00         0.0          5.50
-# # 2007-01-26      25   2436.25  -2439.25     1.25        31.5        -31.50
-# # 2007-01-29      25   2463.50      0.00     0.00         0.0         27.25
-# # 2007-01-30      25   2484.25      0.00     0.00         0.0         20.75
-# # 2007-01-31       0      0.00  -2471.25     1.25        95.0       -108.00
-# #            Trading.PL
-# # 1950-01-01       0.00
-# # 2007-01-03      41.00
-# # 2007-01-04      -6.00
-# # 2007-01-05       0.00
-# # 2007-01-08       3.50
-# # 2007-01-09     -10.90
-# # 2007-01-10      23.60
-# # 2007-01-11       4.80
-# # 2007-01-12     -13.80
-# # 2007-01-16     -29.60
-# # 2007-01-17      18.80
-# # 2007-01-18      17.10
-# # 2007-01-19     135.00
-# # 2007-01-22      21.50
-# # 2007-01-23      17.00
-# # 2007-01-24      16.00
-# # 2007-01-25       5.50
-# # 2007-01-26       0.00
-# # 2007-01-29      27.25
-# # 2007-01-30      20.75
-# # 2007-01-31     -13.00
-# 
-# # @todo: add tests for functions currently buried in updatePortf
-# 
-# x1 = calcPortfSummary(p)
-# x2 = getBySymbol(p,'Pos.Qty')
-# 
-# # Initialize account:
-# a = initAcct(portfolios="p")
-# # Updating account:
-# a = updateAcct(a,'2007-01')
-# a = updateEndEq(a,'2007-01')
-
-
-
-

Deleted: pkg/blotter/tests/calcValues.R
===================================================================
--- pkg/blotter/tests/calcValues.R	2010-07-29 15:43:53 UTC (rev 364)
+++ pkg/blotter/tests/calcValues.R	2010-08-06 15:42:28 UTC (rev 365)
@@ -1,18 +0,0 @@
-suppressMessages(library(blotter))  # to suppress the TZ noise from xts
-options("width"=78)                     # to tie down the print() statement width
-
-t1 = calcTxnValue(TxnQty=10, TxnPrice=10, TxnFees=1) # == 99
-print(t1)
-print(all.equal(t1, 99))
-
-t2 = calcTxnAvgCost(TxnValue=99, TxnQty=10) # == 9.9
-print(t2)
-print(all.equal(t2, 9.9))
-
-t3 = calcPosAvgCost(PrevPosQty=10, PrevPosAvgCost=100, TxnValue=1020, PosQty=20) # ==101
-print(t3)
-print(all.equal(t3, 101))
-
-t4 = calcRealizedPL(TxnQty=-10, TxnAvgCost=101.1, PrevPosAvgCost=99.98, PosQty=40, PrevPosQty=50) # == 11.2
-print(t4)
-print(all.equal(t4, 11.2))

Added: pkg/blotter/tests/runitAddTxn.R
===================================================================
--- pkg/blotter/tests/runitAddTxn.R	                        (rev 0)
+++ pkg/blotter/tests/runitAddTxn.R	2010-08-06 15:42:28 UTC (rev 365)
@@ -0,0 +1,44 @@
+
+#Sys.setenv(TZ="America/Chicago")        # as the data set got save with this TZ
+#options("width"=78)                     # to tie down the print() statement width
+#verbose <- FALSE
+
+test.addTxn <- function() {
+  currency("USD")
+  symbols <- c("IBM")
+  for (symbol in symbols){
+    stock(symbol, currency="USD", multiplier=1)
+  }
+  data(IBM)                               # data included in package
+
+  # Initialize a portfolio object 'p'
+  # Creating portfolio:
+  p = initPortf(symbols=symbols)
+
+  # Trades must be made in date order.
+  # Make a couple of trades in IBM
+  addTxn(p, "IBM", '2007-01-03',  50,  96.5,  TxnFees=0.05 * 50)
+  addTxn(p, "IBM", '2007-01-04', -50,  97.1,  TxnFees=0.05 * 50)
+  addTxn(p, "IBM", '2007-01-08', -10,  99.2,  TxnFees=0.05 * 10)
+  addTxn(p, "IBM", '2007-01-09', -10, 100.1,  TxnFees=0.05 * 10)
+  addTxn(p, "IBM", '2007-01-17', -10, 100.25, TxnFees=0.05 * 10)
+  addTxn(p, "IBM", '2007-01-19',  30,  95,    TxnFees=0.05 * 30)
+  addTxn(p, "IBM", '2007-01-22',  25,  96.3,  TxnFees=0.05 * 25)
+  addTxn(p, "IBM", '2007-01-23',  25,  96.42, TxnFees=0.05 * 25)
+  addTxn(p, "IBM", '2007-01-26', -25,  97.52, TxnFees=0.05 * 25)
+  addTxn(p, "IBM", '2007-01-31', -25,  98.80, TxnFees=0.05 * 25)
+
+  portfolio <- getPortfolio(p)
+  transactions <- portfolio[["IBM"]][["txn"]]
+  checkEquals(13, sum(transactions$Txn.Fees))
+  checkEquals(0, sum(transactions$Txn.Qty))
+
+  # TODO: fix bug in calcPortfSummary
+  # summary <- calcPortfSummary(portfolio)
+}
+
+.tearDown <- function() {
+  rm(list=ls(all=TRUE))
+  .blotter <- new.env()
+  .instrument <- new.env()
+}

Added: pkg/blotter/tests/runitCalcValues.R
===================================================================
--- pkg/blotter/tests/runitCalcValues.R	                        (rev 0)
+++ pkg/blotter/tests/runitCalcValues.R	2010-08-06 15:42:28 UTC (rev 365)
@@ -0,0 +1,17 @@
+# Copyright 2010.  All rights reserved.
+
+test.calcTxnValue <- function() {
+  checkEquals(99, calcTxnValue(TxnQty=10, TxnPrice=10, TxnFees=1))
+}
+
+test.calcTxnAvgCost <- function() {
+  checkEquals(9.9, calcTxnAvgCost(TxnValue=99, TxnQty=10))
+}
+
+test.calcPosAvgCost <- function() {
+  checkEquals(101, calcPosAvgCost(PrevPosQty=10, PrevPosAvgCost=100, TxnValue=1020, PosQty=20))
+}
+
+test.calcRealizedPL <- function() {
+  checkEquals(11.2, calcRealizedPL(TxnQty=-10, TxnAvgCost=101.1, PrevPosAvgCost=99.98, PosQty=40, PrevPosQty=50))
+}

Added: pkg/blotter/tests/testSuite.R
===================================================================
--- pkg/blotter/tests/testSuite.R	                        (rev 0)
+++ pkg/blotter/tests/testSuite.R	2010-08-06 15:42:28 UTC (rev 365)
@@ -0,0 +1,15 @@
+# Set working directory to this directory before running
+
+# Load deps
+library(RUnit)
+library(quantmod)
+
+# Load blotter
+for (file in dir("../R", pattern="*.R", full.names=TRUE)) {
+  source(file)
+}
+
+# Tests
+testsuite.blotter <- defineTestSuite("blotter", dirs = ".")
+testResult <- runTestSuite(testsuite.blotter)
+printTextProtocol(testResult)



More information about the Blotter-commits mailing list