diff --git a/R/benchTradePerf.R b/R/benchTradePerf.R index 6267b00..7e1a41f 100644 --- a/R/benchTradePerf.R +++ b/R/benchTradePerf.R @@ -194,7 +194,8 @@ #' #' @examples #' -#' # examples consider daily data, perhaps the most common use case for the practitioners of the field +#' # examples consider daily data, perhaps the most common use case for the +#' practitioners of the field #' #' \donttest{ #' set.seed(333) @@ -211,14 +212,32 @@ #' addTxns('abc.port.day', 'ABC', TxnData = abc.trades.day) #' updatePortf('abc.port.day', 'ABC') #' -#' benchTradeBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'TradeBench', MktData = ABC.day) -#' benchMktBenchOpen <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', type = list(price = 'Open'), MktData = ABC.day[1]) # performance against daily open price -#' benchMktBenchClose <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', type = list(price = 'Close'), MktData = ABC.day[nrow(ABC.day)]) # performance against daily closing price -#' benchMktBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', type = list(price = 'price-of-choice'), MktData = 5000) -#' benchVWAPinterv <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', type = list(vwap = 'interval'), MktData = ABC.day) -#' benchVWAPfull <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', type = list(vwap = 'full'), MktData = ABC.day) -#' benchPWP <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'PWP', POV = 0.3, MktData = ABC.day) -#' benchRPM <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'RPM', MktData = ABC.day) +#' benchTradeBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, +#' benchmark = 'TradeBench', MktData = ABC.day) +#' +#' benchMktBenchOpen <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', +#' type = list(price = 'Open'), MktData = ABC.day[1]) +#' # performance against daily open price +#' +#' benchMktBenchClose <- benchTradePerf('abc.port.day', 'ABC', side = 1, +#' benchmark = 'MktBench', +#' type = list(price = 'Close'), +#' MktData = ABC.day[nrow(ABC.day)]) +#' # performance against daily closing price +#' +#' benchMktBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', +#' type = list(price = 'price-of-choice'), MktData = 5000) +#' +#' benchVWAPinterv <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', +#' type = list(vwap = 'interval'), MktData = ABC.day) +#' +#' benchVWAPfull <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', +#' type = list(vwap = 'full'), MktData = ABC.day) +#' +#' benchPWP <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'PWP', +#' POV = 0.3, MktData = ABC.day) +#' benchRPM <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'RPM', +#' MktData = ABC.day) #' #' plot(benchTradeBench, benchmark = 'TradeBench') #' plot(benchMktBenchOpen, benchmark = 'MktBench') diff --git a/R/benchTradeStats.R b/R/benchTradeStats.R index 26701bd..0210e64 100644 --- a/R/benchTradeStats.R +++ b/R/benchTradeStats.R @@ -177,21 +177,35 @@ #' #' ## Paired observations approach tests #' # Sign test, VWAP full and VWAP interval -#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'full'), metric = 1, -#' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', conf.level = 0.95, alternative = "two.sided") -#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), -#' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', conf.level = 0.95, alternative = "two.sided") +#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, +#' type = list(vwap = 'full'), metric = 1, +#' OrdersMktData = OrdersMktData, approach = 'paired', +#' test = 'Sign', conf.level = 0.95, alternative = "two.sided") +#' +#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, +#' type = list(vwap = 'interval'), OrdersMktData = OrdersMktData, +#' approach = 'paired', test = 'Sign', conf.level = 0.95, +#' alternative = "two.sided") +#' #' # Wilcoxon test, VWAP full and VWAP interval -#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'full'), metric = 1, -#' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Wilcoxon', conf.level = 0.95, alternative = "two.sided") +#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, +#' type = list(vwap = 'full'), metric = 1,OrdersMktData = OrdersMktData, +#' approach = 'paired', test = 'Wilcoxon', conf.level = 0.95, +#' alternative = "two.sided") +#' #' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), -#' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Wilcoxon', conf.level = 0.95, alternative = "two.sided") +#' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Wilcoxon', +#' conf.level = 0.95, alternative = "two.sided") +#' #' # Sign test, ChiSq test on VWAP interval -#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), metric = 1, -#' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', dgptest = 'ChiSq', +#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, +#' type = list(vwap = 'interval'), metric = 1, OrdersMktData = OrdersMktData, +#' approach = 'paired', test = 'Sign', dgptest = 'ChiSq', #' conf.level = 0.95, alternative = "two.sided") +#' #' # Sign test and KS test on VWAP interval -#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), metric = 1, +#' benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, +#' type = list(vwap = 'interval'), metric = 1, #' OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', dgptest = 'KS', #' conf.level = 0.95, alternative = "two.sided") #' @@ -200,22 +214,28 @@ #' OrdersMktDataIndp <- list(list(OrdersMktData$OrdersMktData1, OrdersMktData$OrdersMktData2), #' list(OrdersMktData$OrdersMktData1 * 2, OrdersMktData$OrdersMktData2 * 3), #' list(OrdersMktData$OrdersMktData1 * 4, OrdersMktData$OrdersMktData2 * 5)) +#' #' # Median test, TradeBench #' benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, #' OrdersMktData = OrdersMktDataIndp, approach = 'independent', #' test = 'Median', conf.level = 0.95, alternative = "two.sided") +#' #' # Wilcoxon-Mann-Whitney test, TradeBench #' benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, #' OrdersMktData = OrdersMktDataIndp, approach = 'independent', #' test = 'WMW', conf.level = 0.95, alternative = "two.sided") +#' #' # Median test, ChiSq test on TradeBench (two reports produced) #' benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, -#' OrdersMktData = OrdersMktDataIndp, approach = 'independent', test = 'Median', dgptest = 'ChiSq', -#' conf.level = 0.95, alternative = "two.sided") +#' OrdersMktData = OrdersMktDataIndp, approach = 'independent', +#' test = 'Median', dgptest = 'ChiSq', conf.level = 0.95, +#' alternative = "two.sided") +#' #' # WMW test and KS test on TradeBench #' benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, -#' OrdersMktData = OrdersMktDataIndp, approach = 'independent', test = 'WMW', dgptest = 'KS', -#' conf.level = 0.95, alternative = "two.sided") +#' OrdersMktData = OrdersMktDataIndp, approach = 'independent', +#' test = 'WMW', dgptest = 'KS', conf.level = 0.95, +#' alternative = "two.sided") #' } #' #' @export diff --git a/R/iStar.R b/R/iStar.R index 119e066..ae8c23b 100644 --- a/R/iStar.R +++ b/R/iStar.R @@ -887,8 +887,11 @@ iStarSensitivity <- function(object #' # Multiple Cost Curves #' plot(iStarEst, fixVals = c('POV'=c(0.1,0.2,0.3,0.4,0.5), 'AnnualVol'=0.25), multiple = TRUE) #' -#' # Assuming user would like to specify their own params. Example uses params for Scenario 'All Data' from Table 5.4 in Kissell2014 -#' plot(iStarEst, fixVals = c('POV'=c(0.1,0.2,0.3,0.4,0.5), 'AnnualVol'=0.25), params = c(a_1 = 708, a_2=0.55, a_3=0.71, a_4=0.5, b_1=0.98), multiple = TRUE) +#' # Assuming user would like to specify their own params. Example uses params for +#' Scenario 'All Data' from Table 5.4 in Kissell2014 +#' plot(iStarEst, fixVals = c('POV'=c(0.1,0.2,0.3,0.4,0.5), 'AnnualVol'=0.25), +#' params = c(a_1 = 708, a_2=0.55, a_3=0.71, a_4=0.5, b_1=0.98), +#' multiple = TRUE) #' } #end dontrun #' #' @export diff --git a/man/benchTradePerf.Rd b/man/benchTradePerf.Rd index 068a777..35baeff 100644 --- a/man/benchTradePerf.Rd +++ b/man/benchTradePerf.Rd @@ -212,7 +212,8 @@ the VWAP benchmark to use in the PnL metric computation, namely the Interval VWA } \examples{ -# examples consider daily data, perhaps the most common use case for the practitioners of the field +# examples consider daily data, perhaps the most common use case for the +practitioners of the field \donttest{ set.seed(333) @@ -229,14 +230,32 @@ initPortf('abc.port.day', symbols = 'ABC') addTxns('abc.port.day', 'ABC', TxnData = abc.trades.day) updatePortf('abc.port.day', 'ABC') -benchTradeBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'TradeBench', MktData = ABC.day) -benchMktBenchOpen <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', type = list(price = 'Open'), MktData = ABC.day[1]) # performance against daily open price -benchMktBenchClose <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', type = list(price = 'Close'), MktData = ABC.day[nrow(ABC.day)]) # performance against daily closing price -benchMktBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', type = list(price = 'price-of-choice'), MktData = 5000) -benchVWAPinterv <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', type = list(vwap = 'interval'), MktData = ABC.day) -benchVWAPfull <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', type = list(vwap = 'full'), MktData = ABC.day) -benchPWP <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'PWP', POV = 0.3, MktData = ABC.day) -benchRPM <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'RPM', MktData = ABC.day) +benchTradeBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, + benchmark = 'TradeBench', MktData = ABC.day) + +benchMktBenchOpen <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', + type = list(price = 'Open'), MktData = ABC.day[1]) + # performance against daily open price + +benchMktBenchClose <- benchTradePerf('abc.port.day', 'ABC', side = 1, + benchmark = 'MktBench', + type = list(price = 'Close'), + MktData = ABC.day[nrow(ABC.day)]) + # performance against daily closing price + +benchMktBench <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'MktBench', + type = list(price = 'price-of-choice'), MktData = 5000) + +benchVWAPinterv <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', + type = list(vwap = 'interval'), MktData = ABC.day) + +benchVWAPfull <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'VWAP', + type = list(vwap = 'full'), MktData = ABC.day) + +benchPWP <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'PWP', + POV = 0.3, MktData = ABC.day) +benchRPM <- benchTradePerf('abc.port.day', 'ABC', side = 1, benchmark = 'RPM', + MktData = ABC.day) plot(benchTradeBench, benchmark = 'TradeBench') plot(benchMktBenchOpen, benchmark = 'MktBench') diff --git a/man/benchTradeStats.Rd b/man/benchTradeStats.Rd index 5661fac..c594bf5 100644 --- a/man/benchTradeStats.Rd +++ b/man/benchTradeStats.Rd @@ -196,21 +196,35 @@ addTxns(ordNames[3], symNames[2], TxnData = txns.6) ## Paired observations approach tests # Sign test, VWAP full and VWAP interval -benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'full'), metric = 1, - OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', conf.level = 0.95, alternative = "two.sided") -benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), - OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', conf.level = 0.95, alternative = "two.sided") +benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, + type = list(vwap = 'full'), metric = 1, + OrdersMktData = OrdersMktData, approach = 'paired', + test = 'Sign', conf.level = 0.95, alternative = "two.sided") + +benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, + type = list(vwap = 'interval'), OrdersMktData = OrdersMktData, + approach = 'paired', test = 'Sign', conf.level = 0.95, + alternative = "two.sided") + # Wilcoxon test, VWAP full and VWAP interval -benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'full'), metric = 1, - OrdersMktData = OrdersMktData, approach = 'paired', test = 'Wilcoxon', conf.level = 0.95, alternative = "two.sided") +benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, + type = list(vwap = 'full'), metric = 1,OrdersMktData = OrdersMktData, + approach = 'paired', test = 'Wilcoxon', conf.level = 0.95, + alternative = "two.sided") + benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), - OrdersMktData = OrdersMktData, approach = 'paired', test = 'Wilcoxon', conf.level = 0.95, alternative = "two.sided") + OrdersMktData = OrdersMktData, approach = 'paired', test = 'Wilcoxon', + conf.level = 0.95, alternative = "two.sided") + # Sign test, ChiSq test on VWAP interval -benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), metric = 1, - OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', dgptest = 'ChiSq', +benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, + type = list(vwap = 'interval'), metric = 1, OrdersMktData = OrdersMktData, + approach = 'paired', test = 'Sign', dgptest = 'ChiSq', conf.level = 0.95, alternative = "two.sided") + # Sign test and KS test on VWAP interval -benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list(vwap = 'interval'), metric = 1, +benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, + type = list(vwap = 'interval'), metric = 1, OrdersMktData = OrdersMktData, approach = 'paired', test = 'Sign', dgptest = 'KS', conf.level = 0.95, alternative = "two.sided") @@ -219,22 +233,28 @@ benchTradeStats(Portfolio = ordNames, benchmark = "VWAP", side = 1, type = list( OrdersMktDataIndp <- list(list(OrdersMktData$OrdersMktData1, OrdersMktData$OrdersMktData2), list(OrdersMktData$OrdersMktData1 * 2, OrdersMktData$OrdersMktData2 * 3), list(OrdersMktData$OrdersMktData1 * 4, OrdersMktData$OrdersMktData2 * 5)) + # Median test, TradeBench benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, OrdersMktData = OrdersMktDataIndp, approach = 'independent', test = 'Median', conf.level = 0.95, alternative = "two.sided") + # Wilcoxon-Mann-Whitney test, TradeBench benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, OrdersMktData = OrdersMktDataIndp, approach = 'independent', test = 'WMW', conf.level = 0.95, alternative = "two.sided") + # Median test, ChiSq test on TradeBench (two reports produced) benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, - OrdersMktData = OrdersMktDataIndp, approach = 'independent', test = 'Median', dgptest = 'ChiSq', - conf.level = 0.95, alternative = "two.sided") + OrdersMktData = OrdersMktDataIndp, approach = 'independent', + test = 'Median', dgptest = 'ChiSq', conf.level = 0.95, + alternative = "two.sided") + # WMW test and KS test on TradeBench benchTradeStats(Portfolio = ordNames, benchmark = "TradeBench", side = 1, metric = -1, - OrdersMktData = OrdersMktDataIndp, approach = 'independent', test = 'WMW', dgptest = 'KS', - conf.level = 0.95, alternative = "two.sided") + OrdersMktData = OrdersMktDataIndp, approach = 'independent', + test = 'WMW', dgptest = 'KS', conf.level = 0.95, + alternative = "two.sided") } } diff --git a/man/plot.iStarEst.Rd b/man/plot.iStarEst.Rd index 9b734a2..edde480 100644 --- a/man/plot.iStarEst.Rd +++ b/man/plot.iStarEst.Rd @@ -68,8 +68,11 @@ plot(iStarEst, fixVals = c('POV'=0.1, 'AnnualVol'=0.25)) # Multiple Cost Curves plot(iStarEst, fixVals = c('POV'=c(0.1,0.2,0.3,0.4,0.5), 'AnnualVol'=0.25), multiple = TRUE) -# Assuming user would like to specify their own params. Example uses params for Scenario 'All Data' from Table 5.4 in Kissell2014 -plot(iStarEst, fixVals = c('POV'=c(0.1,0.2,0.3,0.4,0.5), 'AnnualVol'=0.25), params = c(a_1 = 708, a_2=0.55, a_3=0.71, a_4=0.5, b_1=0.98), multiple = TRUE) +# Assuming user would like to specify their own params. Example uses params for +Scenario 'All Data' from Table 5.4 in Kissell2014 +plot(iStarEst, fixVals = c('POV'=c(0.1,0.2,0.3,0.4,0.5), 'AnnualVol'=0.25), + params = c(a_1 = 708, a_2=0.55, a_3=0.71, a_4=0.5, b_1=0.98), + multiple = TRUE) } #end dontrun }