Let \(R\) and \(R'\) be random variables defined on the probability space \((\Omega, \mathcal{F}, P)\).
\(R\) dominates \(R'\) with respect to SSD if and only if \(\textrm{E}[U(R)] \ge \textrm{E}[U(R')]\) for any nondecreasing and concave utility function \(U\).
This sets out the use of SSD relation to determine preferences of a risk-averse decision maker.
Denoted as \(R \succeq_{_{SSD}} R'\).
Strict relation: \(R \succ_{_{SSD}} R' \Leftrightarrow R \succeq_{_{SSD}} R' \mbox{ and } R' \not{\succeq_{_{SSD}}} R.\)
Dentcheva and Ruszczyński (2006) proposed the following model with an SSD constraint:
\[ \begin{array}{ll} \mathrm{maximize} & f(x) \\ \mathrm{s.t.} & x \in X, \\ & R_{\textbf{x}} \succeq_{_{SSD}} \widehat{R}, \\ \end{array} \]
where \(f\) is a concave continuous function, \(\widehat{R}\) is a reference random return such as the return of a stock market index.
Special case: \(f(x) = \textrm{E}[{R_{\textbf{x}}}]\)
Roman et al. (2006) formulated a multiobjective LP model, the Pareto efficient solutions of which are SSD efficient portfolios.
Assuming finite discrete distributions of returns with equiprobable outcomes, Fábián et al. (2009) converted it into a more efficient computational model with single objective and a finite system of inequalities representing an SSD constraint:
\[ \begin{array}{ll} \mathrm{maximize} & \vartheta \\ \mathrm{s.t.} & \vartheta \in \mathbb{R}, \textbf{x} \in X \\ & \mathrm{Tail}_{\frac{i}{S}}(R_{\textbf{x}}) \geq \mathrm{Tail}_{\frac{i}{S}}(\widehat{R}) + \vartheta, \quad i = 1, 2, \ldots, S. \\ \end{array} \]
Here one seeks a portfolio with a distribution which dominates the reference one or comes close to it uniformly (the smallest tail difference \(\vartheta\) is maximized).
Fábián et al. (2010) proposed an enhanced version of the model of Roman et al. which is expressed in the following SSD constrained form:
\[ \begin{array}{ll} \textrm{maximize} & \vartheta \\ \textrm{s.t.} & \vartheta \in \mathbb{R}, \textbf{x} \in X, \\ & R_{\textbf{x}} \succeq_{_{SSD}} \widehat{R} + \vartheta. \\ \end{array} \]
In this model one computes a portfolio that dominates a sum of the reference return and a riskless return \(\vartheta\).
Let \(S\) denote the number of equiprobable outcomes,
\(\textbf{r}^{(1)}, \textbf{r}^{(2)}, \ldots, \textbf{r}^{(S)}\) - the realisations of \(\textbf{R}\),
\(\widehat{r}^{(1)}, \widehat{r}^{(2)}, \ldots, \widehat{r}^{(S)}\) - the realisations of \(\widehat{R}\).
The enhanced model can be formulated as follows:
\[ \begin{array}{ll} \mathrm{maximize} & \vartheta \\ \mathrm{s.t.} & \vartheta \in \mathbb{R}, \textbf{x} \in X, \\ & \mathrm{Tail}_{\frac{i}{S}}(R_{\textbf{x}}) \geq \mathrm{Tail}_{\frac{i}{S}}(\widehat{R}) + \frac{i}{S} \vartheta, \\ & \quad i = 1, 2, \ldots, S. \\ \end{array} \]
Fábián et al. (2009) obtained the cutting-plane representation of the \(\textrm{Tail}\) function: \[ \begin{array}{ll} \textrm{Tail}_{\frac{i}{S}}(R_{\textbf{x}}) = & \displaystyle \min \frac{1}{S} \sum_{j \in J_i} \textbf{r}^{(j) T} \textbf{x} \\ & \mbox{such that } J_i \subset \{1, 2, \ldots, S\}, \quad |J_i| = i. \\ \end{array} \]
Cutting-plane representation of the enhanced model: \[ \begin{array}{lll} \textrm{maximize} & \vartheta & \\ \textrm{s.t.} & \vartheta \in \mathbb{R}, \textbf{x} \in X, & \\ & \displaystyle \frac{1}{S} \sum_{j \in J_i} \textbf{r}^{(j) T} \textbf{x} \geq \widehat{\tau_i} + \frac{i}{S} \vartheta, & \forall J_i \subset \{1, 2, \ldots, S\}, \\ & & |J_i| = i, \; i = 1, 2, \ldots, S, \\ \end{array} \] where \(\widehat{\tau_i} = \textrm{Tail}_{\frac{i}{S}}(\widehat{R})\).
By changing the scope of optimisation we get a problem of minimising a piecewise-linear convex function:
\[ \begin{array}{ll} \mathrm{minimize} & \varphi(\textbf{x}) \\ \mathrm{s.t.} & \textbf{x} \in X, \\ \end{array} \] where \[ \begin{array}{ll} \varphi(\textbf{x}) =& \displaystyle \max \left( -\frac{1}{i} \sum_{j \in J_i} \textbf{r}^{(j) T} \textbf{x} + \frac{S}{i} \widehat{\tau_i} \right), \\ & \mbox{such that } J_i \subset \{1, 2, \ldots, S\}, |J_i| = i, \\ & i = 1, 2, \ldots, S. \\ \end{array} \]
It can be regularised by the level method.
The cut \(l(x)\) at the iteration \(k\) is constructed as follows:
Let \(\textbf{x}^* \in X\) denote the solution of the approximation function at iteration \(k\) and \(\textbf{r}^{(j_1^*)} \leq \textbf{r}^{(j_2^*)} \leq \ldots \leq \textbf{r}^{(j_S^*)}\) denote the ordered realisations of \(R_{\textbf{x}^*}\).
Select \( \displaystyle i^* \in \textrm{argmax}_{1 \leq i \leq S} \left( -\frac{1}{i} \sum_{j \in J_i^*} \textbf{r}^{(j)T} \textbf{x}^* + \frac{S}{i} \widehat{\tau}_i \right).\) Then \( \displaystyle l(\textbf{x}) = -\frac{1}{i^*} \sum_{j \in J_{i^*}^*} \textbf{r}^{(j)T} \textbf{x} + \frac{S}{i^*} \widehat{\tau}_{i^*}.\)
Sets \(J_i^* = (j^*_1, \ldots, j^*_i)\) correspond to ordered realisations.
ssd_uniform
function that is
translated into an SSD relation by the solver.
* External solver is used for subproblems.
* Solver library is optional but facilitates testing.
The solver extracts linear expressions from the expression trees representing
arguments of ssd_uniform
.
param nASSET integer >= 0; # number of assets
set ASSETS := 1..nASSET; # set of assets
param nSCEN > 0;
param asset_returns{1..nASSET, 1..nSCEN};
param index_returns{1..nSCEN};
param nCUT integer >= 0 default 0; # number of cuts
set CUTS := 1..nCUT; # set of cuts
param cut_const {CUTS}; # constant in cut
param cut {CUTS,ASSETS}; # multipliers in cut
param scaling_factor {CUTS} default 1;
# portfolio: investments into different assets
var Invest {ASSETS} >= 0 default 1 / nASSET;
var Dom; # dominance measure
maximize Uniform_Dominance: Dom;
subject to Dom_constraint {c in CUTS}:
scaling_factor[c] * Dom + cut_const[c]
<= sum {a in ASSETS} cut[c,a] * Invest[a];
subject to Budget: sum {a in ASSETS} Invest[a] = 1;
include ssd.ampl;
param NumScenarios;
param NumAssets;
set Scenarios = 1..NumScenarios;
set Assets = 1..NumAssets;
# Return of asset a in senario s.
param Returns{a in Assets, s in Scenarios};
# Reference return in scenario s.
param Reference{s in Scenarios};
# Fraction of the budget to invest in asset a.
var invest{a in Assets} >= 0 <= 1;
subject to ssd_constraint{s in Scenarios}:
ssd_uniform(sum{a in Assets} Returns[a, s] * invest[a], Reference[s]);
subject to budget: sum{a in Assets} invest[a] = 1;