Description Usage Arguments Details Value Note Author(s) Examples
View source: R/conditional.sort.R
Calculates out-of-sample mean sub-portfolio returns and the composition of each sub-portfolio using the conditional portfolio sorting method.
1 |
Fa |
xts-object containing data for the first dimension of sort |
Fb |
xts-object containing data for the second dimension of sort (optional) |
Fc |
xts-object containing data for the third dimension of sort (optional) |
R.Forward |
xts-object containing forward returns |
dimA |
vector of break points between 0 and 1 |
dimB |
vector of break points between 0 and 1 (optional) |
dimC |
vector of break points between 0 and 1 (optional) |
type |
pass-through parameter to the |
The conditional sort function sorts assets based on each factor (Fa to Fc) from low to high in a dependent fashion at each time t. Based on the sorted assets in each sub-portfolio at time t, mean out-of-sample sub-portfolio returns are computed for time t+1. After each dimension of sort, the subsequent sort is done only within each prior sorted sub-portfolio. Hence, the first factor that is sorted on yields greater influence on the overall sorting procedure. The function outputs out-of-sample returns for each sub-portfolio in columns and a list of the sub-portfolio constituents at each rebalancing point.
returns |
Out-of-sample sub-portfolio returns |
portfolio |
List of the sub-portfolio constituents over time |
The function implicitly handles NA/NaN or Inf values at each rebalancing point (at time t) by excluding them from the quantile
function. Furthermore, if there are any NA, NaN or Inf values in the R.Forward object when computing out-of-sample returns, these are also excluded. The function outputs returns in columns. For example, if a double sort is conducted with both Fa and Fb including 3 breakpoints (a 3v3) sort, column 1 will contain out-of-sample returns for the 'Low-Low' sub-portfolio, column 4 will contain out-of-sample returns for the 'Mid-Low' sub-portfolio whilst column 9 will contain the 'High-High' sub-portfolio returns.
Jonathan Spohnholtz and Alexander Dickerson
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # Load the included data
library(portsort)
data(Factors)
# Specifiy the sort dimension - in this case, a double sort on lagged returns and Bitcoin volumes
# with 4 breakpoints (a 4v4 sort)
dimA = c(0,0.25,0.5,0.75,1)
dimB = c(0,0.25,0.5,0.75,1)
# Specify the factors for the double sort
# Lagged returns, lagged volumes are stored in the Factors list
R.Forward = Factors[[1]]; R.Lag = Factors[[2]]; V.Lag = Factors[[3]]
# Subset the data from late 2017
R.Forward = R.Forward["2017-12-01/"]
R.Lag = R.Lag["2017-11-30/2018-09-05"]
V.Lag = V.Lag["2017-11-30/2018-09-05"]
Fa = R.Lag
Fb = V.Lag
# Conduct a conditional sort
sort.output <- conditional.sort(Fa,Fb,Fc=NULL,R.Forward = R.Forward,dimA = dimA,dimB = dimB)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.