1 Introduction and motivation

Due to the globalization of financial markets, investors have access to thousands of financial instruments (assets). The portfolio selection problem can be modelled with the use of the famous Markowitz’s mean–variance (bi-objective) model [30]—the mean–variance problem (MVP)—or its extensions. The portfolio selection problem has long attracted the attention of researchers. A recent survey of modern portfolio theory can be found in [29]. The MVP is still a base for other practical models of the portfolio selection problem with additional real-life constraints, e.g., transaction costs, not present in the MVP. As nowadays a potentially large set of assets is available to investors, efficient (or: Pareto optimal) portfolios of the MVP might consist of a relatively large number of assets (often fractions of an efficient portfolio invested in these assets are very small). Portfolio management with a large number of assets might be costly, especially when an investor makes investment decisions relatively often. In order to limit the number of assets in efficient portfolios, a cardinality constraint can be added to the MVP [34]. This leads to the Cardinality-Constrained Markowitz mean–variance portfolio investment Problem (CCMP). Instead of adding the additional constraint on portfolio cardinality, one can add the third criterion (portfolio cardinality) to the MVP (see, e.g., [1]). My focus is the (bi-objective) CCMP.

The essence of solving practical instances of the CCMP is to select an efficient portfolio (or: solution) by the decision maker (DM) (or: investor) which best fits his/her preferences (see, e.g., [12]). I make a rational assumption that the DM’s focus is only on the set of efficient portfolios (or: efficient set). In order to grasp the mean–variance trade-off, he/she navigates over the efficient frontier (image of the efficient set in the mean–variance space). This, however, requires the derivation of an a priori unknown number of efficient portfolios during the decision making process. It may be problematic for large-scale instances of the CCMP, especially when their efficient portfolios have to be derived during the interactive decision making process on demand, and an effective search among potential decisions to such problems can be time consuming or even beyond allotted limits.

For a large-scale bi-objective optimization problem, the cost of the derivation of a subset of its efficient set cannot be ignored during the decision making process. I want to emphasize that in the interactive multiple criteria decision making (MCDM) methods (see, e.g., [27, 32, 38]), efficient solutions are determined by solving a number of single-objective optimization problems using the so-called scalarization techniques. Such (exact) computations may be time consuming. The DM should take this into account in the case of large-scale problems, especially when he/she wishes to evaluate many efficient solutions during the interactive decision making process.

An alternative way to determine (exact) efficient solutions in interactive MCDM methods is to use approximate (metaheuristic) methods, e.g., evolutionary single-objective optimization (see, e.g., [31]). However, they produce, in general, only approximate solutions. This is the main drawback of these methods—one is never sure how far from the efficient solution its approximation lies. Even if they work well for a set of test problems (benchmarks), there is no guarantee that they give a good approximation of the efficient solution to a given problem. In other words, the DM may reveal his/her preferences during the decision making process, evaluating only the possibly rough approximations of efficient solutions found by means of the metaheuristic method. This may, however, result in making a bad (i.e., suboptimal) decision (the decision making process is biased).

The approximation of the whole efficient set of the CCMP can be found using metaheuristics (see, e.g., [3, 41]). However, when making use of metaheuristic-based multiobjective optimization methods, efficiency of derived solutions is also not guaranteed. Evolutionary multiobjective optimization [5, 6] is just an example. The review of other methods of approximating the efficient set can be found in [36]. Some of them are dedicated to a specific class of the bi-objective optimization problem (e.g., linear problems).

The CCMP can be modelled as the bi-objective mixed-integer quadratic programming (MIQP) problem. With the use of either the linear scalarization technique or \(\epsilon \)-constraint method (see, e.g., [32]), commercial or open-source MIQP solvers can be applied to derive efficient solutions to the CCMP. However, for large-scale instances of the CCMP, even commercial top-class MIQP solvers (e.g., CPLEX, Gurobi) may be unable to find some efficient solutions within a reasonable time limit on optimization. The existence of this time limit is the rational assumption, as the DM may wish to evaluate a possibly numerous set of efficient portfolios during the decision making process.

To account for this, when the MIQP solver is not able to derive an efficient solution within the assumed time limit on optimization (computational budget), I propose to navigate over the efficient frontier of the CCMP with the use of lower bounds and upper bounds on values of objective functions of implicit efficient solutions. In the decision making process, such bounds serve as replacements for the exact values of the objective functions [26]. Formulas for calculating lower and upper bounds are relatively simple—they contain only arithmetic operators and operators of deriving minimal and maximal elements in a set of numbers [18, 24]. The sources of such bounds are two finite sets. I shall call them lower shells and upper shells. Images of these two sets in the mean–variance space form (in a sense) finite two-sided efficient frontier approximations.

There are also other ideas for two-sided efficient frontier approximations in the literature, e.g., bound sets for bi-objective combinatorial optimization problems [11]. Some methods are dedicated to a specific type of the bi-objective optimization problem, e.g., inner and outer approximations of the efficient frontier for linear bi-objective optimization problems [37]. Inner and outer approximations can also be derived for convex efficient sets by so-called sandwich algorithms (see, e.g., [35]). However, in the current article I make use of lower and upper shells, whose images in the objective space are local (dependent on the DM’s preferences) two-sided efficient frontier approximations. I use them to calculate lower and upper bounds on components of implicitly given efficient solution outcomes being the DM’s focus. By doing so, unnecessary calculations focused on determining the two-sided approximation of the whole efficient frontier can be avoided. I show how to find lower and upper shells controlled by the DM’s preferences with the use of purely technical information provided by a top-class MIQP solver solving computationally demanding instances of the parametrized single-objective optimization problem, which is Chebyshev scalarization (see, e.g., [39]) of the CCMP, under time limit on optimization. I investigate experimentally the accuracy of lower and upper bounds with an instance of the CCMP from my own large-scale data set based upon actual data.

It is worth noting here that inventive methods (which fully exploit properties of MIQP problems) to find efficient solutions to large-scale instances of the CCMP have been proposed in recent years (see, e.g., [2, 4, 7, 9, 13, 14]). However, none of these methods use Chebyshev scalarization to derive efficient solutions. For example, in [4], an efficient portfolio is derived by minimizing the portfolio variance with a given expected return, and in [2], the weighted sum of the portfolio variance and portfolio expected return is used.

Navigating over the efficient frontier with the help of Chebyshev scalarization is a special case of the well-known Wierzbicki’s reference point method for interactive-iterative MCDM frameworks [40]. In the navigation method based on Chebyshev scalarization, the DM must make concessions to the so-called ideal (or: reference) point representing the ideal portfolio, which usually does not exist. This trade-off guided method of unveiling the DM’s preferences is an alternative to other methods and it is worth considering when solving the CCMP.

The outline of the article is as follows. In Sect. 2, I recall the bi-objective problem formulation in its most general form and recall a method for the derivation of efficient solutions which is instrumental for the subsequent development. In Sect. 3, the CCMP is formulated and some of its properties that are my motivation to apply lower and upper bounds are shown. In Sect. 4, I show how to calculate lower and upper bounds on objective function values of implicitly given efficient solutions, as well as a method of populating lower and upper shells to the CCMP. In Sects. 5 and 6, I illustrate how the bounds work on a large-scale instance of the CCMP when a time limit on optimization is assumed. Section 7 contains my conclusions.

2 Bi-objective optimization

2.1 Preliminaries

Let x denote a solution, X a space of solutions, \(X \subseteq {\mathbb {R}}^n\), \(X_0\) a set of feasible solutions, \(X_0 \subseteq X\). Then the general bi-objective optimization problem is defined as:

$$\begin{aligned} \begin{array}{c} vmax f(x) \\ \mathbf{s.t. }\\ x \in X_0 , \end{array} \end{aligned}$$
(1)

where \(f : X \rightarrow {\mathbb {R}}^2\), \(f = (f_1,f_2)\), \(f_l : X \rightarrow {\mathbb {R}}, \ l=1,2\), are objective functions, and vmax denotes the operator of deriving all efficient solutions in \(X_0\). \({\mathbb {R}}^2\) is called the objective space (or: outcome space).

Solution \({\bar{x}}\) is efficient if \(f_l(x) \ge f_l({\bar{x}}), \ l = 1,2\), implies \(f(x) = f({\bar{x}})\). If \(f_l(x) \ge f_l({\bar{x}}), \ l = 1,2\), and \(f(x) \not = f({\bar{x}})\), then it is said that x dominates \({\bar{x}}\), which is written \({\bar{x}} \prec x\). Solution \({\bar{x}}\) is weakly efficient (or: weakly Pareto optimal) if there is no such x that \(f_l(x)>f_l({\bar{x}}), \ l=1,2\). Element f(x), \(x \in X_{0}\), is the outcome of x. Below, I shall denote the set of efficient solutions to (1) by N. Set f(N) is called the efficient frontier (EF) or the set of efficient outcomes.

2.2 Chebyshev scalarization

It is a well-established result (cf. [10, 18, 32]) that solution x is efficient if and only if it solves the augmented Chebyshev weighted optimization problem

$$\begin{aligned} \begin{array}{c} \min \{\max _{l} \lambda _l ((y^*_l - f_l(x)) + \rho e^{\top }(y^* - f(x)))\}\\ \mathbf{s.t. } \\ x \in X_0 , \end{array} \end{aligned}$$
(2)

where weights \(\lambda _l > 0, \ l=1,2\), e is the all-ones vector, \(y^*_l = {\hat{y}}_l + \varepsilon \), \({\hat{y}}_l = \max _{x \in X_0} f_l(x), \ l=1,2\), \(\varepsilon > 0\), and \(\rho \) is a positive “sufficiently small” number. Actually, with the use of (2) no the so-called improperly efficient solution [15] can be derived (see, e.g., [18, 32]). This, however, is not a barrier when solving practical decision making problems [18]. By solving problem (2) with \(\rho =0\), weakly efficient solutions are derived (cf., e.g., [32]).

By the “only if” part of this result, no efficient solution is a priori excluded from being derived by solving an instance of optimization problem (2). In contrast to that, maximization of a weighted sum of objective functions over \(X_0\) does not, in general (and especially in the case of problems with discrete variables), possess this property (cf., e.g., [10, 18, 27, 32]).

At first glance the objective function in (2) seems to be difficult to handle. However, problem (2) is equivalent to

$$\begin{aligned} \begin{array}{c} \min s \\ \mathbf{s.t. } \\ s \ge \lambda _l ((y^*_l - f_l(x)) + \rho e^{\top }(y^* - f(x))), \ \ l=1,2 , \\ x \in X_0 . \end{array} \end{aligned}$$
(3)

In the sequel, I will assume that efficient solutions are derived by solving problem (2) with varying \(\lambda \).

2.3 Chebyshev scalarization for interactive MCDM methods

In interactive MCDM methods, the DM navigates over the set of efficient outcomes unveiling his/her preferences gradually, step by step (see, e.g., [18, 32]). The decision making process stops when the DM points out the most preferred efficient outcome. Of the many existing MCDM methods, interactive ones seem to be the most reasonable. In these methods, there is no formal stopping rule of the decision making process—the DM is a sovereign actor in it. The process stops when the DM’s preferences are firmly set or the DM no longer wishes to continue it. An example of an interactive MCDM method is the well-known Wierzbicki’s reference point method [40].

The Chebyshev scalarization technique can be used in interactive MCDM methods (see, e.g., [38]). In [18], the preference-driven navigation method (valid for the number of objective functions greater than or equal to two) over the set of efficient outcomes is proposed. This method relies on the notion of the vector of concessions serving the DM as the preference carrier. In practical decision making problems, element \(y^{*}\) is usually unattainable. Hence, to get an efficient outcome, the DM has to compromise on \(y^{*}\). In the case of two objective functions, he/she can do this by selecting a vector of concessions \(\tau , \tau _{1}>0, \tau _{2}>0\). Vector \(\tau \) defines proportions in which the DM agrees to sacrifice unattainable values of components of \(y^{*}\) in a quest for an element of the efficient frontier. The DM can explicitly define vector \(\tau \) by indicating its components. The DM can also do this implicitly by indicating a base point \(y^{b} \in \{y \, | \, y_1 \in y^{*}_1-\mathbb {R}^2_+, y_2 \in y^{*}_2-\mathbb {R}^2_+ \}\) (\(\mathbb {R}^2_+\) is the positive orthant) which defines \(\tau \) as \(\tau _1=y^{*}_1 - y^{b}_1,\tau _2=y^{*}_2 - y^{b}_2\). It is shown in [18] that \(\lambda _1=\frac{1}{\tau _1}, \lambda _2=\frac{1}{\tau _2}\). Hence, translation from \(\tau \) or \(y^{b}\) to \(\lambda \) is straightforward. Vector \(\lambda \) (a parameter of the objective function of problem (2)) determines the so-called search direction in the objective space (Fig. 1). The DM can express his/her preferences using \(\lambda \) vectors explicitly.

The trade-off guided method of unveiling the DM’s preferences presented above can be used to solve practical decision making problems (see, e.g., [17, 26, 33]). The benefit of using Chebyshev scalarization is that it can be applied in the user-friendly process of unveiling the DM’s preferences [19], which can be expressed by vectors of concessions, weight vectors (the atomistic manner), or base points (the holistic manner).

3 The CCMP

In the case of “the more, the better” shown in the previous section, the CCMP is formulated as follows.

$$\begin{aligned} \begin{array}{c} vmax \, \left\{ \begin{array}{l} f_1(x):=-x^{\top }Qx \\ f_2(x):=r^{\top }x \end{array} \right. \\ \mathbf{s.t. }\\ x \in X_0, \end{array} \end{aligned}$$
(4)

where \(f_1(x)\) (\(-VARIANCE\)) is the negative value of the portfolio x variance (maximizing the negative value of the portfolio variance is equivalent to minimizing the portfolio variance), \(f_2(x)\) (\(EXP.\, RETURN\)) is the expected return (mean) of portfolio x, \(X_0 := \{ x \, | \, e^{\top }x=1, card(x) \le C,x \ge 0 \}\), \(x:=(x_i) \in {\mathbb {R}}^n\), and \(x_i\) is the fraction of the portfolio invested in the i-th asset. \(Q \in {\mathbb {R}}^{n \times n}\) is the covariance matrix, \(r \in {\mathbb {R}}^n\) is the vector of expected returns, \(card(x):=\sum _{i=1}^{n}sgn(x_i)\), where \(sgn(\cdot )\) is the signum function, \(C, C>0\), is the upper bound on a number of assets in the portfolio, and \(card(x) \le C\) is the cardinality constraint.

By introducing n binary variables \(z_i\) (\(z_i=1\) if the i-th asset is selected; \(z_i=0\), otherwise), as well as additional constraints coupling continuous variables \(x_i\) with binary ones, problem (4) can be formulated as the bi-objective MIQP problem in the following way.

$$\begin{aligned} \begin{array}{c} vmax \, \left\{ \begin{array}{c} f_1(x) \\ f_2(x) \end{array} \right. \\ \mathbf{s.t. } \\ x \in X_0 := \{ x \, | \, e^{\top }x=1, e^{\top }z \le C, \forall _{i=1,\ldots ,n} (-x_i+Mz_i \ge 0), x \ge 0 \}, \end{array} \end{aligned}$$
(5)

where M is a “sufficiently big number”, and \(z=(z_i)\).

In the general case, the efficient frontier of this problem is not a continuous curve (see, e.g., [3]). It may also contain elements which cannot be derived by linear scalarization (the so-called unsupported elements). With the help of scalarization (2) and taking into account (3), each efficient solution to (5) can be derived by solving an instance of the MIQP problem (in fact, the instance with the linear objective function subject to linear and quadratic constraints).

As it is shown in Sect. 2.3, the DM can navigate over the efficient frontier using \(\lambda \) parameters of the scalarization function in problem (2) as preference carriers. In this article, it is assumed that the DM acts in this way. Further on, I assume that \(\lambda _1 + \lambda _2 = 1\).

It is well known that the derivation of low-risk efficient portfolios is much more difficult than high-risk ones (see, e.g., [2, 13]).

4 Lower and upper bounds on objective function values of efficient solutions

Given \(\lambda \), let \(x^{\mathrm {ef}}(\lambda )\) denote the efficient solution to problem (2), which would be derived if this problem were solved to optimality (the implicit efficient solution designated by \(\lambda \)). \(f(x^{\mathrm {ef}}(\lambda ))\) denotes the implicit efficient outcome designated by \(\lambda \). In this section, I briefly present the theory of generalFootnote 1 lower and upper bounds on components of implicit efficient outcomes I developed earlier [20,21,22].

4.1 Lower bounds

Lower shell to problem (1) is a finite nonempty set \(S_L \subseteq X_0\) whose elements satisfy

$$\begin{aligned} \forall \, x \in S_L \ \ \not \exists \, x' \in S_L \ \ x \prec x' . \end{aligned}$$
(6)

\(S_L\) can be a singleton.

For the given \(y^*\) and \(\rho \), when deriving efficient solutions to (1) with the use of problem (2), the formulas for lower bounds are

$$\begin{aligned}&f_1(x^{\mathrm {ef}}(\lambda )) \ge L_1(S_L,\lambda ) \nonumber \\&\quad := \max \left\{ y^*_1 - (\lambda _1 (1 + \rho ))^{-1} \min _{x \in S_L} [ \max _{j=1,2} \ \lambda _j((y^*_j - f_j(x)) \right. \nonumber \\&\qquad \left. + \rho e^{\top }(y^* - f(x))) ] + \frac{\rho }{1 + \rho }(y^*_2 - U_2(\lambda )), {\bar{L}}_1 \right\} , \end{aligned}$$
(7)
$$\begin{aligned}&f_2(x^{\mathrm {ef}}(\lambda )) \ge L_2(S_L,\lambda ) \nonumber \\&\quad := \max \left\{ y^*_2 - (\lambda _2 (1 + \rho ))^{-1} \min _{x \in S_L} [ \max _{j=1,2} \ \lambda _j((y^*_j - f_j(x)) \right. \nonumber \\&\qquad \left. + \rho e^{\top }(y^* - f(x))) ] + \frac{\rho }{1 + \rho }(y^*_1 - U_1(\lambda )), {\bar{L}}_2 \right\} , \end{aligned}$$
(8)

where \({\bar{L}}_l\), \(l=1,2\), are static lower bounds implied by some a priori information (e.g., when all objective functions are non-negative) on \(f_l(x^{\mathrm {ef}}(\lambda ))\). If static lower bounds are not known, then it is possible to simply set \({\bar{L}}_l:=-\infty \). \(U_l(\lambda )\), \(l=1,2\), are known upper bounds on \(f_l(x^{\mathrm {ef}}(\lambda ))\) (e.g., when one can infer these bounds based on properties of problem (1)). For details, see [18, 24, 25]. If \(U_l(\lambda )\) are not known, then it is possible to simply set \(U_l(\lambda ):=y^{*}_l\). If this is the case, in formulas (7) and (8), elements with factor \(\frac{\rho }{1 + \rho }\) vanish.

Fig. 1
figure 1

The idea of the derivation of formulas for lower bounds with \(\rho =0\): \(\square \)—image of lower shell \(\{{\bar{x}}\}\) in the objective space, \(\blacktriangle \)—vector of lower bounds on components of \(f(x^{\mathrm {ef}}(\lambda ))\)

Given \(\lambda \), the idea of the derivation of formulas (7) and (8) for a simpler case with \(\rho =0\) and a lower shell \(\{{\bar{x}}\}\) is shown in Fig. 1. Apexes of displaced cones (the cones correspond to contours of the augmented Chebyshev metric used in (2)) lie on the half line (determined by \(\lambda \)) emanating from element \(y^*\). The apex, being the interception point of the half line with straight line \(f_1(x)=f_1({\bar{x}})\), determines the position of the cone most distant from \(y^*\) (border cone) on which \(f(x^{\mathrm {ef}}(\lambda ))\) would lie. Thus, this point determines vector of lower bounds \(L(\{{\bar{x}}\},\lambda )\). If \(f(x^{\mathrm {ef}}(\lambda ))\) lay on the border of a cone which is farther from \(y^*\) than the border cone, \(f(x^{\mathrm {ef}}(\lambda ))\) would not be efficient. Therefore, element \(f(x^{\mathrm {ef}}(\lambda ))\) is located somewhere in the dashed rectangle in Fig. 1. When taking into account lower shell \(S_L, |S_L|>1\), one has to consider the best lower bound on \(f_l(x^{\mathrm {ef}}(\lambda )), l=1,2\). Hence, the “\(\min _{x \in S_L} [\ldots ]\)” appears in formulas (7) and (8). If \(\rho >0\), then displaced cones are open, and terms with \(\rho \) appear in the formulas. For details see, e.g., [18, 24].

A lower shell is simply any finite approximation (composed of feasible elements only) of the efficient set containing non-dominated elements only (see (6)). Given two lower shells \(S_L\) and \(S'_L\), set \(S''_L:=S_L \cup S'_L\) is a lower shell after removing dominated elements in this set.

In case of the CCMP, an element of a lower shell can be derived by solving, within a given time limit T, problem (2) (being scalarization of problem (5)) with a given \(\lambda \). In that case, either the exact solution or incumbent (approximate solution) can be obtained.

4.2 Upper bounds

Upper shell to problem (1) is a finite nonempty set \(S_U \subseteq {\mathbb {R}}^n\), elements of which satisfy

$$\begin{aligned}&\forall \, x \in S_U \ \ \not \exists \, x' \in S_U \ \ x' \prec x , \end{aligned}$$
(9)
$$\begin{aligned}&\forall \, x \in S_U \ \ \not \exists \, x' \in N \ \ x \prec x' . \end{aligned}$$
(10)

\(S_U\) can be a singleton.

Elements of an upper shell may be infeasible. If feasible, they are efficient. By (10) they are not dominated by any efficient solution to problem (1). Outcomes of elements of an upper shell are located either on or (in a sense) above the efficient frontier of problem (1).

Given \(\lambda \) and \(S_L\), element x of the upper shell can be a source of the valid upper bound on \(f_l(x^{\mathrm {ef}}(\lambda ))\) for some l, when f(x) is appropriately located with respect to the vector of lower bounds \(L(S_L,\lambda ):=(L_1(S_L,\lambda ),L_2(S_L,\lambda ))\). This is specified by the following lemma (the proof of this lemma for more than two objective functions is found in [22]).

Lemma 1

Given lower shell \(S_L\) and upper shell \(S_U\). Suppose \(x \in S_U\) and \(L_{\,{\bar{l}}\,}(S_L, \lambda ) \le f_{\,{\bar{l}}\,}(x)\) for some \({\bar{l}}\) and \(L_l(S_L, \lambda ) \ge f_l(x)\) for all \(l=1,2, \ l \ne {\bar{l}}\). Then x provides an upper bound for \(f_{\,{\bar{l}}\,}(x^{\mathrm {ef}}(\lambda ))\), namely \(f_{\,{\bar{l}}\,}(x^{\mathrm {ef}}(\lambda )) \le f_{\,{\bar{l}}\,}(x)\).

Given \(\lambda \), if for upper shell \(S_U\) its elements provide upper bounds \(U_l(S_U,\lambda )\) only on \(f_{l}(x^{\mathrm {ef}}(\lambda ))\), \(l \in I, I \subset \{1,2\}, I \ne \emptyset \), then one can set \(U_l(S_U,\lambda ):={{\hat{y}}}_l\) (or \(U_l(S_U,\lambda ):=y^{*}_l\), when \({{\hat{y}}}_l\) is unknown, and \(y^{*}_l, {{\hat{y}}}_l \le y^{*}_l\), is set a priori), \(l \in \{1,2\} {\setminus } I\). Since many elements of \(S_U\) may provide upper bounds on \(f_{l}(x^{\mathrm {ef}}(\lambda ))\), I take the smallest upper bound, namely \(U_l(S_U,\lambda )=\min _{x \in S_U} U_l(\{x\}, \lambda ),\,l=1,2\). I call \(U(S_U,\lambda ):=(U_1(S_U,\lambda ),U_2(S_U,\lambda ))\) the vector of upper bounds.

Fig. 2
figure 2

The illustration to the idea of general lower and upper bounds: \(\square \)—image of lower shell \(S_L\) in the objective space, \(\circ \)—image of upper shell \(S_U\) in the objective space, \(\blacktriangle \)—vector of lower bounds, \(\blacksquare \)—vector of upper bounds

The idea of general lower and upper bounds is shown in Fig. 2. I assume here \(\rho =0\). Given the lower shell \(S_L\), upper shell \(S_U\) and vector \(\lambda \) (determining the search direction in the objective space), the vector of lower bounds \(L(S_L, \lambda )\) and vector of upper bounds \(U(S_U, \lambda )\) determine the region in the objective space, where efficient outcome \(f(x^{\mathrm {ef}}(\lambda ))\) is located. Amongst all elements of \(S_L\), element \({{\bar{x}}}\) provides the best lower bounds on values of \(f_l(x^{\mathrm {ef}}(\lambda )),\,l=1,2\). Element \(x'\in S_U\) is the source of upper bound \(U_2(S_U, \lambda )=U_2(\{x'\},\lambda )=f_2(x')\), and element \(x'' \in S_U\)—the source of upper bound \(U_1(S_U, \lambda )=U_1(\{x''\},\lambda )=f_1(x'')\). These two elements fulfil conditions of Lemma 1. Elements of set \(S_U\) with their images in the objective space to the left of \(f(x')\) also are sources of valid upper bounds on \(f_2(x^{\mathrm {ef}}(\lambda ))\); however, these bounds are greater than the upper bound determined by \(f_2(x')\). And similarly, elements of set \(S_U\) with their images in the objective space to the right of element \(f(x'')\) are also sources of valid upper bounds on \(f_1(x^{\mathrm {ef}}(\lambda ))\); however, these bounds are greater than the upper bound determined by \(f_1(x'')\). Elements of \(S_U\) with their images inside the rectangle are not sources of valid upper bounds on \(f_l(x^{\mathrm {ef}}(\lambda )),\,l=1,2\), as they do not fulfil conditions of Lemma 1 (are not properly located with regards to vector \(L(S_L, \lambda )\)).

4.3 Derivation of upper shells in case of the CCMP

At first glance, it seems difficult to derive upper shells when the efficient set (N) is unknown. However, in case of the CCMP in the form of problem (5), it can be done as follows.

When an MIQP solver provides no solution to problem (2) for some \(\lambda \) within a given time limit T, we are left with incumbent \(INC(\lambda )\) and the (mixed-integer programming) best bound \(B(\lambda )\) on values of the objective function of problem (2). By solving the following set of equations

$$\begin{aligned} \begin{array}{c} B(\lambda )=\lambda _1 [(y^{*}_1- f^{B(\lambda )}_1) + \rho e^{\top }(y^*-f^{B(\lambda )})] \\ B(\lambda )=\lambda _2 [(y^{*}_2- f^{B(\lambda )}_2) + \rho e^{\top }(y^*-f^{B(\lambda )})] \end{array} \end{aligned}$$
(11)

we can derive element \(f^{B(\lambda )}:=(f^{B(\lambda )}_1, f^{B(\lambda )}_2)\) belonging to the objective space.

Lemma 2

If for \(x^{B(\lambda )} \in {\mathbb {R}}^n\) \((f_1(x^{B(\lambda )}), f_2(x^{B(\lambda )}))=(f^{B(\lambda )}_1, f^{B(\lambda )}_2)\) holds, then set \(\{x^{B(\lambda )}\}\) is the upper shell.

Proof

If efficient solution \({\tilde{x}} \) to (5) dominated \(x^{B(\lambda )}\), then \({\tilde{x}}\) would provide a smaller value of the objective function in problem (2) (s in (3)) with \(\lambda \) than bound \(B(\lambda )\), a contradiction to \(x^{B(\lambda )}\) defining the best (in this case, lower) bound on values of this function. \(\square \)

If element \(x^{B(\lambda )}\) is unknown, then I say that it is a virtual element of upper shell \(\{x^{B(\lambda )}\}\). By Lemma 1, one actually needs \(f_1(x^{B(\lambda )})\) and \(f_2(x^{B(\lambda )})\) to calculate upper bounds on components of an implicit efficient outcome.

Let us assume that \(S_L:=\{INC(\lambda )\}\) and \(S_U:=\{x^{B(\lambda )}\}\) are the lower shell and upper shell, respectively. The following remark arises from the derivation of formulas (7) and (8) [24].

Remark 1

Element \(x^{B(\lambda )}\) is not a valid source for upper bounds \(U_1(S_U,\lambda )\), \(U_2(S_U,\lambda )\) because \(f_1(x^{B(\lambda )}) \ge L_1(S_L,\lambda )\) and \(f_2(x^{B(\lambda )}) \ge L_2(S_L,\lambda )\) hold (see Lemma 1).

According to Remark 1, element \(f^{B(\lambda )}\) is not appropriately located with respect to vector of lower bounds \(L(S_L,\lambda )\). However, in order to find an upper shell whose element can be a source of a valid upper bound for some \(l, l=1,2\), problem (2) can be solved with other \({\tilde{\lambda }}\), \({\tilde{\lambda }}\) is close to \(\lambda \). The following two cases are possible.

Case 1. When problem (2) with \({\tilde{\lambda }}\), \({\tilde{\lambda }} \ne \lambda \), is solved to optimality within time limit \(T^U\), its solution x belongs to upper shell \(S_U:=\{x\}\). x might be a valid source of either \(U_1(S_U,\lambda )\) or \(U_2(S_U,\lambda )\). (As x is feasible, it can even be an element of a lower shell, e.g., \(\{x\}\).)

Case 2. When problem (2) with \({\tilde{\lambda }}\), \({\tilde{\lambda }} \ne \lambda \), is not solved to optimality within time limit \(T^U\), by solving set of equations (11) with the best bound \(B({\tilde{\lambda }})\), one can provide the outcome \(f^{B(\tilde{\lambda )}}\) of element \(x^{B(\tilde{\lambda )}}, f^{B(\tilde{\lambda )}}=f(x^{B(\tilde{\lambda )}})\). By Lemma 2, element \(x^{B(\tilde{\lambda )}}\) belongs to upper shell \(S_U:=\{x^{B(\tilde{\lambda )}}\}\).

However, in both cases, in order to find upper shells composed of elements suitable for providing valid upper bounds (see Lemma 1) on values of both objective functions, it may be necessary to select more than one \({\tilde{\lambda }}\) vectors being close to \(\lambda \).

The time of solving set of equations (11) is negligible, so I will assume that \(T^U\) is the time limit on optimization when deriving an upper shell which is a singleton.

The method of deriving upper shells presented here is based on fact that the best bound \(B(\lambda )\) is the result of solving a certain (implicit) relaxation of problem (2) by an MIQP solver. A method of deriving an upper shell by solving an explicit relaxation of the multiobjective optimization problem is proposed by Kaliszewski and Miroforidis in [21]. In this subsection, I presented the method with the implicit relaxation first shown in [23] and applied to bi-objective multidimensional 0–1 knapsack problems.

5 Numerical experiments

5.1 Experimental settings

In order to illustrate the presented idea, I applied the development of Sect. 4 to an instance of the CCMP with a real-world data set with 600 assets. There is a description of this data set in Appendix A.

I set: \(C=5\), \(\rho = 0.001\). I also assumed that \(y^{*}:=(0, 0.00911)\) not deriving element \({\hat{y}}\). 0.00911 is the highest expected return among all assets—the portfolio composed only of the asset with the highest expected return belongs to the efficient set of the CCMP. 0 is my arbitrarily selected upper bound on negative values of the portfolio variance. As \({{\hat{y}}}_l \le y^*_l, l=1,2\), the use of \(y^*\) was legitimate.

I selected Gurobi version 8.1.1 for Windows 10 (x64) as the MIQP solver. The optimizer was installed on the Intel Core i7-7700HQ based laptop with 16 GB of RAM.

In all experiments below (after conducting some preliminary experiments), I used arbitrarily selected \(\lambda \) vectors. These vectors designate relatively risky portfolios.

5.2 Experiment 1

In the first experiment, I assumed that \(\lambda :=(0.95,0.05)\). I set time limits as follows. \(T:=300\) s, \(T^U:=300\) s. There were 6 selected \(\lambda ^i\) vectors I used to derive upper shells \(S^i_U\) (see Table 1). The optimization time to derive lower shell \(S^A_L:=\{INC(\lambda )\}\) as well as 6 upper shells \(S^1_U,\ldots ,S^6_U\) was \(300+6\times 300=2100\) s. As all elements in set \(S^A_U:={\bigcup }^6_{i=1}S^i_U\) are non-dominated in this set (see Fig. 3), \(S^A_U\) is an upper shell as well. By calculating lower and upper bounds on values of objective functions of \(x^{\mathrm {ef}}(\lambda )\), I obtained:

  • \(-\,0.0002467 \le f_1(x^{\mathrm {ef}}(\lambda )) \le -0.0002001\),

  • \(0.0044222 \le f_2(x^{\mathrm {ef}}(\lambda )) \le 0.0047897\).

Table 1 The set of \(\lambda \) vectors I used to derive upper shells \(S^i_U \) in Experiment 1
Fig. 3
figure 3

Experiment 1: \(\blacktriangle \)—vector of lower bounds, \(\blacksquare \)—vector of upper bounds, \(\square , \circ \)—images, respectively, of lower shell \(S_L^{A}\) and upper shell \(S_{U}^A\) in the “expected return–variance” space, \(\bullet \)\(y^{*}\), dashed line—search direction determined by \(\lambda \) in the “expected return–variance” space

5.3 Experiment 2

In the second experiment, I assumed that \(\lambda :=(0.98,0.02)\). This vector designates a less risky portfolio than one designated by vector \(\lambda \) used in the previous experiment. I set time limits as follows. \(T:=1200\) s, \(T^U:=600\) s. There were 5 selected \(\lambda ^i\) vectors I used to derive upper shells (see Table 2). The optimization time to derive lower shell \(S^B_L:=\{INC(\lambda )\}\) as well as 5 upper shells \(S^1_U,\ldots , S^5_U\) was \(1200+5\times 600=4200\) s. As all elements in set \(S^B_U:={\bigcup }^5_{i=1}S^i_U\) are non-dominated in this set (see Fig. 4), \(S^B_U\) is an upper shell as well. By calculating lower and upper bounds on values of objective functions of \(x^{\mathrm {ef}}(\lambda )\), I obtained:

  • \(-\,0.0001686 \le f_1(x^{\mathrm {ef}}(\lambda )) \le -0.0001112\),

  • \(0.0008468 \le f_2(x^{\mathrm {ef}}(\lambda )) \le 0.0034285\).

Table 2 The set of \(\lambda \) vectors I used to derive upper shells \(S^i_U \) in Experiment 2
Fig. 4
figure 4

Experiment 2: \(\blacktriangle \)—vector of lower bounds, \(\blacksquare \)—vector of upper bounds, \(\square , \circ \)—images, respectively, of lower shell \(S_L^B\) and upper shell \(S_U^B\) in the “expected return–variance” space, \(\bullet \)\(y^{*}\), dashed line—search direction determined by \(\lambda \) in the “expected return–variance” space

5.4 Experiment 3

In the third experiment, I assumed that \(\lambda :=(0.97,0.03)\). I set time limits as follows. \(T:=1200\) s, \(T^U:=600\) s. There were 7 selected \(\lambda ^i\) vectors I used to derive upper shells (see Table 3). The optimization time to derive lower shell \(S^C_L:=\{INC(\lambda )\}\) as well as 7 upper shells \(S^1_U,\ldots , S^7_U\) was \(1200+7\times 600=5400\) s. As all elements in set \(S^C_U:={\bigcup }^7_{i=1}S^i_U\) are non-dominated in this set (see Fig. 5), \(S^C_U\) is an upper shell as well. By calculating lower and upper bounds on values of objective functions of \(x^{\mathrm {ef}}(\lambda )\), I obtained:

  • \(-\,0.0001939 \le f_1(x^{\mathrm {ef}}(\lambda )) \le -0.0001313\),

  • \(0.0028390 \le f_2(x^{\mathrm {ef}}(\lambda )) \le 0.0040999\).

Table 3 The set of \(\lambda \) vectors I used to derive upper shells \(S^i_U \) in Experiment 3
Fig. 5
figure 5

Experiment 3: \(\blacktriangle \)—vector of lower bounds, \(\blacksquare \)—vector of upper bounds, \(\square , \circ \)—images, respectively, of lower shell \(S_L^C\) and upper shell \(S_U^C\) in the “expected return–variance” space, \(\bullet \)\(y^{*}\), dashed line—search direction determined by \(\lambda \) in the “expected return–variance” space

5.5 Discussion

In Figs. 3, 4 and 5, the triangle represents the vector of lower bounds on components of implicit efficient outcome \(f(x^{\mathrm {ef}}(\lambda ))\) in the “expected return–variance” space. The filled rectangle represents the vector of upper bounds.

For vector \(\lambda \) used in Experiment 1, the (a priori unknown) optimization time for finding the exact efficient solution \(x^{\mathrm {ef}}(\lambda )\) was \({\sim }\,733\) s (I checked this a posteriori). However, the optimization time to derive lower and upper shell was 2100 s. So, in this experiment, I could get the exact solution, instead of only the bounds, in less than 2100 s.

However, for vector \(\lambda \) used in Experiment 2, I tried to find the efficient solution \(x^{\mathrm {ef}}(\lambda )\). Gurobi reached the relative mixed-integer programming gap (\(MIP_{gap}\)) equal to 5.78% within 7476 s. The optimization time to derive the lower shell and upper shells (thus, lower and upper bounds) was 4200 s. Within this time, I could provide the DM with the bounds on components of \(f(x^{\mathrm {ef}}(\lambda ))\). Please note that even though I know the \(MIP_{gap}>0\) (related to the single-objective optimization problem (2)), I cannot infer the gaps related to components of \(f(x^{\mathrm {ef}}(\lambda ))\).

For vector \(\lambda \) used in Experiment 3, I tried to find efficient solution \(x^{\mathrm {ef}}(\lambda )\) setting the time limit on optimization to 10,000 s. Gurobi reached the \(MIP_{gap}\) equal to 1.1828% within this time limit.

For each \(\lambda \) vector used in Experiments 1–3, portfolio \(INC(\lambda )\), as well as its outcome can be shown the DM. Furthermore, lower and upper bounds on components of \(f(x^{\mathrm {ef}}(\lambda ))\) can be shown as well. The DM evaluates a portfolio x on the basis of values of components of f(x). As \(MIP_{gap}\) value is purely technical information related to solving the single-objective optimization problem (2), presenting it to the DM is unreasonable.

The proposed approach requires a systematic scheme of selecting neighbouring \(\lambda ^i\) vectors to derive elements of upper shells which can provide upper bounds. In Experiments 1–3, those vectors were arbitrarily selected. Given \(\lambda \), tighter bounds on components of \(f(x^{\mathrm {ef}}(\lambda ))\) might be provided to the DM, e.g., by deriving extra upper shells or by deriving a new incumbent within another time limit—the extra computing effort is required then. There is a compromise between the tightness of lower and upper bounds and the time budget for optimization.

The lower and upper shells derived in Experiments 1–3 can be reused to navigate over the efficient frontier. This is demonstrated in the following section.

6 Navigating over the efficient frontier using pre-calculated lower and upper shells

By summing up lower shells \(S^A_L\), \(S^B_L\) and \(S^C_L\) obtained from Experiments 1–3 and by removing dominated elements in the resulting set, a new lower shell \(S_L\) can be obtained. In a similar way, by summing up upper shells \(S^A_U\), \(S^B_U\) and \(S^C_U\), as well as by removing dominating elements in the resulting set (since dominating elements are a source of either worse or equal upper bounds—see Lemma 1), a new upper shell \(S_U\) can be obtained. Let us recall that the total optimization time needed to determine \(S_L\) and \(S_U\) was 3 h and 15 min. I can treat this as a total computational budget on optimization in the decision making process. Images of these new lower and upper shells in the “expected return–variance” space are shown in Fig. 6.

Fig. 6
figure 6

\(\square , \circ \)—images of \(S_L\) and \(S_U\), respectively, used in Sect. 6 in the “expected return–variance” space

Taking this into account, one can use \(S_L\) and \(S_U\) to calculate lower and upper bounds on components of \(f(x^{\mathrm {ef}}(\lambda ))\) for other \(\lambda \) vectors. This means that the DM can navigate over the efficient frontier using pre-calculated lower shell and upper shell. When the DM is satisfied with the tightness of the bounds, there is no need to solve any new optimization problem.

In order to present the above idea, I selected three \(\lambda \) vectors: \(\lambda ^{a}:=(0.96,0.04)\), \(\lambda ^{b}:=(0.975,0.025)\), \(\lambda ^{c}:=(0.94,0.06)\) which are different than ones used in Experiments 1–3.

Lower and upper bounds on values of components of \(x^{\mathrm {ef}}(\lambda ^{\alpha }), \alpha \in \{a,b,c\}\), are as follows.

  • \(-\,0.0002467 \le f_1(x^{\mathrm {ef}}(\lambda ^{a})) \le -0.0001532\),

  • \(0.0031886 \le f_2(x^{\mathrm {ef}}(\lambda ^{a})) \le 0.0047897\),

  • \(-\,0.0001911 \le f_1(x^{\mathrm {ef}}(\lambda ^{b})) \le -0.0001157\),

  • \(0.0016580 \le f_2(x^{\mathrm {ef}}(\lambda ^{b})) \le 0.0040999\),

  • \(-\,0.0002989 \le f_1(x^{\mathrm {ef}}(\lambda ^{c})) \le -0.0002190\),

  • \(0.0044280 \le f_2(x^{\mathrm {ef}}(\lambda ^{c})) \le y^*_2\).

There is no element of \(S_U\) being a source of a valid upper bound on values of \(f_2(x^{\mathrm {ef}}(\lambda ^{c}))\). Hence, the only available upper bound on values of \(f_2(x^{\mathrm {ef}}(\lambda ^{c}))\) is equal to \(y^*_2\).

Thus, when developing an interactive decision-support system for navigating over the efficient frontier of large-scale instances of the CCMP with the help of the presented method, it seems reasonable to maintain (global) sets \(S_L\) and \(S_U\). E.g., by storing them in a database to reuse.

Also, please note that images of \(S_L\) and \(S_U\) in the “expected return–variance” space form a finite two-sided approximation of the efficient frontier. This approximation depends on \(\lambda \) vectors chosen by the DM during the decision making process. As for any given \(\lambda \) one can calculate lower and upper bounds on components of \(f(x^{\mathrm {ef}}(\lambda ))\) with the use of \(S_L\) and \(S_U\), I can say that (parametrized) lower and upper bounds form a continuous two-sided approximation of the efficient frontier induced on sets \(S_L\) and \(S_U\).

7 Final remarks

The derivation of some efficient solutions (portfolios) to the CCMP with a large number of assets might be difficult for commercial MIQP solvers, when there is a time limit on optimization. It is clear that this time limit would depend on number of assets in the CCMP as well on the right-hand side of the cardinality constraint. The time limit value can be set by the DM before the decision making process begins, but it also could be changed by him/her on demand during the decision making process.

When the time limit is reached by a solver, lower and upper bounds on components of an implicit efficient outcome can be calculated by making use of the data provided by it. When an interactive MCDM method based on Chebyshev scalarization is used to derive efficient solutions to the CCMP, the DM can use the bounds to evaluate implicit efficient portfolios when components of their images in the objective space are unknown due to the fixed time limit on optimization. It can be said that preference-driven two-sided efficient frontier approximations are sources of the bounds. The lower and upper bounds are calculated with the help of these approximations.

Any subset of efficient solutions to the CCMP can be used to calculate lower and upper bounds. To populate this subset (which is both a lower and an upper shell), sophisticated methods of finding efficient solutions, e.g., methods described in [2, 4, 7, 9, 13, 14], can be applied to large-scale instances of the CCMP. However, even for such sophisticated methods the derivation of a numerous subset of the efficient set (being its fine representation) may be time-consuming for large-scale instances. In this case (in particular, when there is a time limit on exact optimization), a smaller representation of the efficient set can be derived. If \(y^{*}\) is given, then each element of the image of this representation in the objective space corresponds to a search direction (direction of concessions) in the objective space [18]. If, without further optimization, the DM wishes to evaluate an efficient outcome corresponding to another direction of concessions (expressed by one of these ways: a vector of concessions, a base point, or a weight vector), bounds on components of this implicit efficient outcome can be calculated based on the representation and provided to him/her. In this mixed scheme, the DM evaluates either the explicit efficient outcomes using their components or the implicit ones using lower and upper bounds on the values of their components.

From a practical perspective, the advantage of the presented method is that the DM can use off-the-shelf MIQP solvers. The strength of the presented approach is that it uses purely technical (from the point of view of the DM) information provided by a commercial MIQP solver (or any solver which is able to provide the mixed-integer best bound when solving MIQP problems) to build upper shells and provide upper bounds. Its weakness is that it is general (it uses theory of lower and upper bounds which is valid for any kind of multiobjective optimization problem) and does not fully exploit the properties of the CCMP to populate these sets or provide tighter upper bounds.

The proposed approach based on MIQP solvers is valid for any extension of the CCMP (when other practical constraints, e.g., upper bounds on assets’ shares, the pre-assignment constraint [3, 8], the round lot constraint [16, 28], are introduced) if the extended model belongs to the MIQP class. Since the general theory of lower and upper bounds is valid for more than two objective functions [22], after some modifications the approach can also be used for the CCMP with, e.g., three objective functions.

In my future research, I plan to develop a rule-controlled method of populating lower and upper shells. In order to populate lower shells, I also plan to make use of metaheuristics.