[Blotter-commits] r1239 - in pkg/blotter: . R man

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Mon Nov 5 22:24:09 CET 2012


Author: braverock
Date: 2012-11-05 22:24:09 +0100 (Mon, 05 Nov 2012)
New Revision: 1239

Modified:
   pkg/blotter/DESCRIPTION
   pkg/blotter/NAMESPACE
   pkg/blotter/R/calcPortfWgt.R
   pkg/blotter/R/getByPortf.R
   pkg/blotter/R/perTradeStats.R
   pkg/blotter/R/tradeStats.R
   pkg/blotter/man/calcPortfWgt.Rd
   pkg/blotter/man/tradeQuantiles.Rd
   pkg/blotter/man/tradeStats.Rd
Log:
- fix and export calcPortfWgt
- minor doc updates

Modified: pkg/blotter/DESCRIPTION
===================================================================
--- pkg/blotter/DESCRIPTION	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/DESCRIPTION	2012-11-05 21:24:09 UTC (rev 1239)
@@ -2,7 +2,7 @@
 Type: Package
 Title: Tools for transaction-oriented trading systems
     development.
-Version: 0.8.12
+Version: 0.8.13
 Date: $Date$
 Author: Peter Carl, Brian G. Peterson
 Maintainer: Brian G. Peterson <brian at braverock.com>
@@ -14,7 +14,7 @@
 License: GPL
 LazyLoad: yes
 Depends:
-    R (>= 2.11.1),
+    R (>= 2.15),
     xts (>= 0.7-6.17),
     zoo,
     FinancialInstrument(>= 0.6.3)
@@ -23,41 +23,7 @@
     Hmisc,
     RUnit,
     quantmod
-Contributors: Dirk Eddelbuettel, Jan Humme, Lance Levenson, 
+Contributors: Dirk Eddelbuettel, Jan Humme, Lance Levenson,
     Ben McCann, Jeff Ryan, Garrett See, Joshua Ulrich, Wolfgang Wu
 URL: https://r-forge.r-project.org/projects/blotter/
-Copyright: (c) 2008-2011
-Collate:
-    'addPortfInstr.R'
-    'addTxn.R'
-    'calcPortfWgt.R'
-    'calcPosAvgCost.R'
-    'calcTxnAvgCost.R'
-    'calcTxnValue.R'
-    'chart.ME.R'
-    'chart.Posn.R'
-    'chart.Reconcile.R'
-    'chart.Spread.R'
-    'extractTests.R'
-    'getAccount.R'
-    'getByPortf.R'
-    'getBySymbol.R'
-    'getEndEq.R'
-    'getPortfAcct.R'
-    'getPortfolio.R'
-    'getPosAvgCost.R'
-    'getPosQty.R'
-    'getPos.R'
-    'getTxn.R'
-    'initAcct.R'
-    'initPortf.R'
-    'initPosPL.R'
-    'initSummary.R'
-    'initTxn.R'
-    'PortfReturns.R'
-    'tradeStats.R'
-    'updateAcct.R'
-    'updateEndEq.R'
-    'updatePortf.R'
-    'updatePosPL.R'
-    'perTradeStats.R'
+Copyright: (c) 2008-2012

Modified: pkg/blotter/NAMESPACE
===================================================================
--- pkg/blotter/NAMESPACE	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/NAMESPACE	2012-11-05 21:24:09 UTC (rev 1239)
@@ -1,6 +1,7 @@
 export(addDiv)
 export(addPortfInstr)
 export(addTxn)
+export(calcPortfWgt)
 export(chart.ME)
 export(chart.Posn)
 export(chart.Reconcile)

Modified: pkg/blotter/R/calcPortfWgt.R
===================================================================
--- pkg/blotter/R/calcPortfWgt.R	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/R/calcPortfWgt.R	2012-11-05 21:24:09 UTC (rev 1239)
@@ -1,25 +1,43 @@
 #' Calculates the portfolio weights for positions within a given portfolio.
 #' 
 #' Portfolio weights may be calculated differently depending on their use.
+#' By default, this function uses denominator of 'Gross.Value', the second most common 
+#' option will likely be 'Net.Value'. 
+#' For separating long and short weights, 'Long.Value' and 'Short.Value' may be 
+#' needed as denominators.
 #' 
 #' @return xts timeseries object with weights by date in rows and symbolname in columns
 #' @param Portfolio a portfolio object structured with initPortf()
 #' @param Symbols an instrument identifier for a symbol included in the portfolio
 #' @param Dates dates to return the calculation over formatted as xts range
-#' @param denominator string describing the deniminator, see usage
+#' @param denominator string describing the deniminator, see Description
 #' @param Account an Account object containing Portfolio summaries
-calcPortfWgt <- function(Portfolio, Symbols = NULL, Dates = NULL, 
-        denominator = c('Gross.Value', 'Net.Value', 'Long.Value', 'Short.Value'), 
-        Account = NULL)
-{ # @author Peter Carl
+#' @export
+calcPortfWgt <- function(Portfolio, 
+                         Symbols = NULL, 
+                         Dates = NULL, 
+                         denominator = c('Gross.Value', 'Net.Value', 'Long.Value', 'Short.Value'), 
+                         Account)
+{ # @author Peter Carl, Brian Peterson
 
-    # FUNCTION
+    zerofill <- function (x) 
+    { # kind of like PerformanceAnalytics, but not quite
+        for (column in 1:NCOL(x)) {
+            x[,column] <- ifelse(is.na(x[,column]),0, x[,column])
+        }
+        return(x)
+    }
+    
+    pname<-Portfolio
+    Portfolio<-getPortfolio(pname) # TODO add Date handling
+    
+    if(is.null(Symbols)) Symbols<-names(Portfolio$symbols)
+    
+    pos.value = .getBySymbol(Portfolio = Portfolio, Dates = Dates, Attribute = "Pos.Value", Symbols = Symbols)    
+    portf.value = .getByPortf(Account=getAccount(Account),Attribute = denominator[1], Date = Dates)
+    weights = zerofill(as.data.frame(lapply(pos.value, FUN = function(x,y){return(x/y)}, y=portf.value))) 
 
-#    pos.value = .getBySymbol(Portfolio = Portfolio, Dates = Dates, Attribute = "Pos.Value", Symbols = Symbols)    
-#    portf.value = .calcPortfAttr(Portfolio = Portfolio, Date = Dates, Attribute = denominator[1])
-#    weights = apply(pos.value, MARGIN = 2, FUN = function(x,y){return(x/y)}, y=portf.value) 
-
-#    return(weights)
+    return(weights)
 }
 
 ###############################################################################

Modified: pkg/blotter/R/getByPortf.R
===================================================================
--- pkg/blotter/R/getByPortf.R	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/R/getByPortf.R	2012-11-05 21:24:09 UTC (rev 1239)
@@ -27,7 +27,8 @@
     table = NULL 
     portfolios=names(Account$portfolios)
     for (portfolio in portfolios) {
-        tmp_col= Account$portfolios[[portfolio]][Dates,Attribute,drop=FALSE]
+        if (!is.null(Dates))tmp_col= Account$portfolios[[portfolio]][Dates,Attribute,drop=FALSE]
+        else tmp_col= Account$portfolios[[portfolio]][,Attribute,drop=FALSE]
         colnames(tmp_col)<-portfolio
         if(is.null(table)) table = tmp_col
         else table = cbind(table, tmp_col)

Modified: pkg/blotter/R/perTradeStats.R
===================================================================
--- pkg/blotter/R/perTradeStats.R	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/R/perTradeStats.R	2012-11-05 21:24:09 UTC (rev 1239)
@@ -146,7 +146,7 @@
 #' the maximum cumulative P&L achieved for each \code{scale} you request.
 #' Tomasini&Jaekle recommend plotting MAE or MFE with respect to cumulative P&L 
 #' and choosing a stop or profit target in the 'stable region'.  The reported 
-#' max should help the user to locate the stable region, perhaps mechnaically.
+#' max should help the user to locate the stable region, perhaps mechanically.
 #' There is room for improvement here, but this should give the user 
 #' information to work with in addition to the raw quantiles.  
 #' For example, it may make more sense to use the max of a loess or

Modified: pkg/blotter/R/tradeStats.R
===================================================================
--- pkg/blotter/R/tradeStats.R	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/R/tradeStats.R	2012-11-05 21:24:09 UTC (rev 1239)
@@ -66,7 +66,7 @@
 #'    \item{Med.Daily.PL}{ median daily P&L }
 #'    \item{Std.Dev.Daily.PL}{ standard deviation of daliy P&L }
 #'    \item{Max.Drawdown}{ max drawdown }
-#'    \item{Avg.WinLoss.Ratio}{ ration of mean winning over mean losing trade }
+#'    \item{Avg.WinLoss.Ratio}{ ratio of mean winning over mean losing trade }
 #'    \item{Med.WinLoss.Ratio}{ ratio of median winning trade over mean losing trade }
 #'    \item{Max.Equity}{ maximum account equity }
 #'    \item{Min.Equity}{ minimum account equity }

Modified: pkg/blotter/man/calcPortfWgt.Rd
===================================================================
--- pkg/blotter/man/calcPortfWgt.Rd	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/man/calcPortfWgt.Rd	2012-11-05 21:24:09 UTC (rev 1239)
@@ -4,7 +4,7 @@
 \usage{
   calcPortfWgt(Portfolio, Symbols = NULL, Dates = NULL,
     denominator = c("Gross.Value", "Net.Value", "Long.Value", "Short.Value"),
-    Account = NULL)
+    Account)
 }
 \arguments{
   \item{Portfolio}{a portfolio object structured with
@@ -17,7 +17,7 @@
   formatted as xts range}
 
   \item{denominator}{string describing the deniminator, see
-  usage}
+  Description}
 
   \item{Account}{an Account object containing Portfolio
   summaries}
@@ -28,6 +28,10 @@
 }
 \description{
   Portfolio weights may be calculated differently depending
-  on their use.
+  on their use. By default, this function uses denominator
+  of 'Gross.Value', the second most common option will
+  likely be 'Net.Value'. For separating long and short
+  weights, 'Long.Value' and 'Short.Value' may be needed as
+  denominators.
 }
 

Modified: pkg/blotter/man/tradeQuantiles.Rd
===================================================================
--- pkg/blotter/man/tradeQuantiles.Rd	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/man/tradeQuantiles.Rd	2012-11-05 21:24:09 UTC (rev 1239)
@@ -49,7 +49,7 @@
   plotting MAE or MFE with respect to cumulative P&L and
   choosing a stop or profit target in the 'stable region'.
   The reported max should help the user to locate the
-  stable region, perhaps mechnaically. There is room for
+  stable region, perhaps mechanically. There is room for
   improvement here, but this should give the user
   information to work with in addition to the raw
   quantiles. For example, it may make more sense to use the

Modified: pkg/blotter/man/tradeStats.Rd
===================================================================
--- pkg/blotter/man/tradeStats.Rd	2012-11-04 14:50:22 UTC (rev 1238)
+++ pkg/blotter/man/tradeStats.Rd	2012-11-05 21:24:09 UTC (rev 1239)
@@ -41,7 +41,7 @@
   \item{Avg.Daily.PL}{mean daily P&L } \item{Med.Daily.PL}{
   median daily P&L } \item{Std.Dev.Daily.PL}{ standard
   deviation of daliy P&L } \item{Max.Drawdown}{ max
-  drawdown } \item{Avg.WinLoss.Ratio}{ ration of mean
+  drawdown } \item{Avg.WinLoss.Ratio}{ ratio of mean
   winning over mean losing trade }
   \item{Med.WinLoss.Ratio}{ ratio of median winning trade
   over mean losing trade } \item{Max.Equity}{ maximum



More information about the Blotter-commits mailing list