[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