Skip to main content
Log in

Optimization of covered calls under uncertainty

  • Research Article
  • Published:
Optimization and Engineering Aims and scope Submit manuscript

Abstract

We present a two-stage stochastic program with recourse to construct covered call portfolios. To maximize the expected utility of a covered call portfolio, the model selects equity positions and call option overwriting weights for varying strike prices and expiry dates. Since the model has linear constraints and risk-averse utility functions are concave, the optimization problem is convex. The model is tested using 67 U.S. large-cap equities and optimizing the quadratic, negative exponential, and power utility functions. The expected utility is modeled as the average utility of the portfolio in a number of scenarios. Scenarios are first generated randomly then moment matching is employed, allowing the model to produce high quality results with a relatively small number of scenarios. To improve solution times we use a progressive hedging decomposition.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

References

  • Amazon Web Services (2019) EC2 instance pricing. https://aws.amazon.com/ec2/pricing/on-demand/. Accessed 11 April

  • Bertocchi M, Consigli G, Dempster MAH (2011) Stochastic optimization methods in finance and energy: new financial products and energy market strategies, vol 163. Springer, Berlin

    Book  MATH  Google Scholar 

  • Board J, Sutcliffe C, Patrinos E (2000) The performance of covered calls. Eur J Finance 6(1):1–17

    Article  Google Scholar 

  • Bollerslev T (1986) Generalized autoregressive conditional heteroskedasticity. J Econom 31(3):307–327

    Article  MathSciNet  MATH  Google Scholar 

  • Callan Associates (2006) An historical evaluation of the CBOE S&P 500 BuyWrite index strategy, October. www.cboe.com/micro/bxm/Callan_CBOE.pdf. Accessed 26 February 2020

  • Che SYS, Fung JKW (2011) The performance of alternative futures buy-write strategies. J Futures Mark 31(12):1202–1227

    Article  Google Scholar 

  • Cox JC, Ross SA, Rubinstein M (1979) Option pricing: a simplified approach. J Financ Econ 7(3):229–263

    Article  MathSciNet  MATH  Google Scholar 

  • Crainic TG, Hewitt M, Rei W (2014) Scenario grouping in a progressive hedging-based meta-heuristic for stochastic network design. Comput Oper Res 43:90–99

    Article  MathSciNet  MATH  Google Scholar 

  • Diaz M, Kwon RH (2017) Optimization of covered call strategies. Optim Lett 11(7):1303–1317

    Article  MathSciNet  MATH  Google Scholar 

  • Diaz M, Kwon RH (2019) Portfolio optimization with covered calls. J Asset Manag 20(1):38–53

    Article  Google Scholar 

  • Feldman BE, Roy D (2004) Passive options-based investment strategies: the case of the CBOE S&P 500 BuyWrite index. ETFs Index 1:72–89

    Google Scholar 

  • Figelman I (2008) Expected return and risk of covered call strategies. J Portf Manag 34(4):81–97

    Article  Google Scholar 

  • Figelman I (2009) Effect of non-normality dynamics on the expected return of options. J Portf Manag 35(2):110–117

    Article  Google Scholar 

  • Gade D, Hackebeil G, Ryan SM, Watson JP, Wets RJB, Woodruff DL (2016) Obtaining lower bounds from the progressive hedging algorithm for stochastic mixed-integer programs. Math Program 157(1):47–67

    Article  MathSciNet  MATH  Google Scholar 

  • Gatheral J (2006) The volatility surface: a practitioner’s guide. Wiley, Hoboken

    Google Scholar 

  • Hanoch G, Levy H (1970) Efficient portfolio selection with quadratic and cubic utility. J Bus 43(2):181–189

    Article  Google Scholar 

  • He DX, Hsu JC, Rue N (2015) Option-writing strategies in a low-volatility framework. J Invest 24(3):116–128

    Article  Google Scholar 

  • Hill JM, Balasubramanian V, Gregory K, Tierens I (2006) Finding alpha via covered index writing. Financ Anal J 62(5):29–46

    Article  Google Scholar 

  • Høyland K, Kaut M, Wallace SW (2003) A heuristic for moment-matching scenario generation. Comput Optim Appl 24(2–3):169–185

    Article  MathSciNet  MATH  Google Scholar 

  • Kapadia N, Szado E (2007) The risk and return characteristics of the buy-write strategy on the Russell 2000 Index. J Altern Invest 9(4):39–56

    Article  Google Scholar 

  • Maidel S, Sahlin K (2010) Capturing the volatility premium through call overwriting. Russell Research, December. www.cboe.com/micro/Buywrite/Russell-2010-12-VolatilityPremiumthroughCallOverwriting.pdf. Accessed 26 February 2020

  • Markowitz H (1952) Portfolio selection. J Finance 7(1):77–91

    Google Scholar 

  • McIntyre ML, Jackson D (2007) Great in practice, not in theory: an empirical examination of covered call writing. J Deriv Hedge Funds 13(1):66–79

    Article  Google Scholar 

  • Michaud RO, Michaud RO (2008) Efficient asset management: a practical guide to stock portfolio optimization and asset allocation. Oxford University Press, Oxford

    Google Scholar 

  • Mulvey JM, Ziemba WT (1998) Worldwide asset and liability modeling. Cambridge University Press, Cambridge

    MATH  Google Scholar 

  • Pratt JW (1964) Risk aversion in the small and in the large. Econometrica 32(1/2):122–136

    Article  MATH  Google Scholar 

  • Rockafellar RT, Wets RJB (1991) Scenarios and policy aggregation in optimization under uncertainty. Math Oper Res 16(1):119–147

    Article  MathSciNet  MATH  Google Scholar 

  • Werner R (2010) Scenario generation: Wiley encyclopedia of operations research and management science. Wiley, Hoboken

    Google Scholar 

  • Rothberg E (2013) Parallelism in linear and mixed integer programming. Parallel and distributed algorithms for inference and optimization, October. https://simons.berkeley.edu/talks/ed-rothberg-2013-10-24. Accessed 26 February 2020

  • Saliby E (1990) Descriptive sampling: a better approach to Monte Carlo simulation. J Oper Res Soc 41(12):1133–1142

    Article  Google Scholar 

  • Shapiro A, Dentcheva D, Ruszczyński AP (2009) Lectures on stochastic programming: modeling and theory. Society for Industrial and Applied Mathematics, Philadelphia

    Book  MATH  Google Scholar 

  • Watson JP, Woodruff DL (2011) Progressive hedging innovations for a class of stochastic mixed-integer resource allocation problems. CMS 8(4):355–370

    Article  MathSciNet  MATH  Google Scholar 

  • Whaley RE (2002) Return and risk of CBOE buy write monthly index. J Deriv 10(2):35–42

    Article  Google Scholar 

  • Zenios SA, Ziemba WT (2007) Handbook of asset and liability management: applications and case studies, vol 2. Elsevier, Amsterdam

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Roy H. Kwon.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendices

Appendix 1

Here we describe the production of scenario prices \(S_{1j}^i\) and \(S_{2j}^{im}\). We produce returns using geometric Brownian motion with GARCH volatilities, then we adjust the resulting log-returns so that the sample volatilities match the volatilities implied by the market prices of ATM options, and so that the sample average simple returns matches the historical simple return.

We first assume that daily log-returns are jointly distributed according to a multivariate normal distribution with a constant vector of drifts, a constant correlation matrix, and a vector of variances each following a GARCH(1, 1) process. For a single asset j:

$$\begin{aligned} r(j,t,i)=\left( \mu _j- \frac{1}{2} \;\sigma (j,t,i)^2\right) +\sigma (j,t,i)Z(j,t,i) \end{aligned}$$

where

  • r(jti) is the log-return of asset j on day t in scenario i.

  • \(\mu _j\) is the historical drift of the daily log-return of asset j, gross of dividends

  • \(\sigma (j,t,i)^2\) is the variance of the daily log-return of asset j on day t in scenario i, modeled as a GARCH(1,1) process.

  • Z(jti) are standard normal random variables which are jointly distributed across assets: corr(Z(jti), Z(kti))=corr\((r(j,t,i),r(k,t,i))=\rho _{j,k}\).

The drifts and correlations are estimated using historical data from November 2006 to November 2016 and are assumed to be constant. GARCH(1,1) processes are fitted on the daily log-return residuals over the same time period. From fitting the GARCH processes we have variance estimates for all assets at time \(t=1\), denoted by \(\sigma (j)\). We use these volatilities as the starting point of the GARCH processes in all scenarios, i.e. \(\sigma (j,t=1,i)=\sigma (j)\) for all scenarios i and all assets j. For each scenario i we can simulate \(Z(j,t=1,i)\) for all assets j from a multivariate normal distribution with means equal to zero, variances equal to one, and covariance matrix \(\rho =[\rho _{j,k}]\). Then, for all assets j in each scenario i, the log-return \(r(j, t=1, i)\) can be computed and the GARCH variances can be updated through the equation \(\sigma (j, t+1, i)^2 = \alpha ^0_j +\alpha _j \sigma (j,t,i)^2 Z(j, t, i)^2 + \beta _j \sigma (j,t,i)^2\), where \(\alpha ^0_j\), \(\alpha _j\), and \(\beta _j\) are the fitted GARCH(1,1) parameters for asset j. We can then proceed to \(t=2\). In this fashion log-returns are simulated one day at a time for \(t=1\) to \(T_1\).

For an asset j and a scenario i, the log-return during the first stage is given by:

$$\begin{aligned} r_{1j}^i=\sum _{t=1}^{T_1} r(j,t,i) \end{aligned}$$

Consider the sample expectation and variance of \(r_{1j}^i\) across the simulated scenarios:

$$\begin{aligned} \text {var}(r_{1j})&\equiv {\hat{\sigma }}_j^2 T_1 \\ {\mathbb {E}}(r_{1j})\equiv M_j&\equiv \left( {\hat{\mu }}_j - \frac{1}{2}{\hat{\sigma }}_j^2\right) T_1 \end{aligned}$$

Suppose that we would like to transform the values of \(r_{1j}^i\) so that the sample daily variance is equal to the daily variance implied by the market price of the ATM 2-week-to-maturity call option on asset j, \({\tilde{\sigma }}_j^2\), and so that the sample average simple return matches that implied by the historical rate \(\mu _j\). Furthermore we would like to preserve higher order moments and correlations present in the samples. We can do this by applying the transformation:

$$\begin{aligned} {\tilde{r}}_{1j}^i&=\tau (r_{1j}^i-M_j)+{\tilde{M}}_j \\ \tau&= \frac{{\tilde{\sigma }}_j}{{\hat{\sigma }}_j}, \quad {\tilde{M}}_j=\left( {\mu }_j-\frac{1}{2}{\tilde{\sigma }}_j^2\right) T_1 \end{aligned}$$

Under this transformation it is straightforward to show:

$$\begin{aligned} {\mathbb {E}}(\text {exp}({\tilde{r}}_{1j}))&\approx \text {exp}({\mu }_j T_1) \\ \text {var}({\tilde{r}}_{1j})&={\tilde{\sigma }}_j^2 T_1 \\ \text {corr}({\tilde{r}}_{1j},{\tilde{r}}_{1k})&=\text {corr}({r}_{1j},{r}_{1k}) \\ {\bar{\mu }}_v({\tilde{r}}_{1j})&= {\bar{\mu }}_v({r}_{1j}) \quad v\in {\mathbb {N}} \end{aligned}$$

where \({\bar{\mu }}_v\) is the standardized moment of degree v.

We compute the price of asset j in scenario i at the end of the first stage: \(S_{1j}^i=S_{0j}\text {exp}({\tilde{r}}_{1j}^i)-D_{1j}\), where if an ex-dividend date falls between \(t=1\) to \(T_1\) then \(D_{1j}\) is the value of that dividend, or zero otherwise.

Production of scenarios for the second stage is nearly identical. In the second stage the GARCH volatilities are initialized to their final realized value from the first stage simulations, i.e. \(\sigma (j,t=T_1+1,im)=\sigma (j,t=T_1+1,i)\) for all assets j and scenarios im. For the second stage the target variance \({\tilde{\sigma }}_j\) is set to be the inferred ATM implied volatility from \(t=T_1\) to \(t=T_1+T_2\) based on the daily volatilities implied by the ATM 4-week-to-maturity and 2-week-to-maturity options at time zero. This ensures that the volatility of log-returns from \(t=0\) to \(t=T_1+T_2\) matches the implied volatility of ATM 4-week-to-maturity options. The remainder of the procedure is unchanged, we set: \(S_{2j}^{im}=S_{1j}^i\text {exp}({\tilde{r}}_{2j}^{im})-D_{2j}\).

Appendix 2

Here we describe the procedure used to estimate the market prices of call options at the beginning of the second stage in each scenario i, i.e. \(C_{jl}^i\). Supposing that we have produced scenario prices \(S_{1j}^i\) for all assets at the end of the first stage, we then require some method for estimating the market prices of call options such that they are consistent with the scenario asset prices. The maturity date is in \(T_2\) days, i.e. at the end of the second stage. The risk-free rate is assumed to be known, and the assets’ spot prices are given by the scenario prices. From an option pricing perspective the only other parameters needed are the strike prices and volatilities.

We pick strike prices for each asset’s options by first assuming that the number of OTM options available for some asset is equal to the number of \(T_1\)-days-to-maturity OTM options which were available at the beginning of the first stage, i.e. \(n_j^i=n_j^0\) for all assets j in each scenario i. Strike prices for a particular asset are generally given by multiples of some number centered around the spot price, e.g. multiples of 1, 5, 10, etc. We observe this strike price multiplier for each asset using the \(n_j^0\) options available at time zero. We set the strike price of the ATM option on asset j at the beginning of the second stage in scenario i by rounding the spot price \(S_{1j}^i\) down to the closest strike price multiple. Subsequent OTM strikes are set by increasing the ATM strike by the observed multiplier until \(n_j^i=n_j^0\).

We require an estimate of the implied volatility curve where the expiry is in \(T_2\) days. A substantial amount of literature exists in modelling implied volatility surfaces, much of which is collected in Gatheral (2006). In our case we may view the entire volatility surface for each asset at time zero. Since there are only \(T_1\) days to the end of the first stage it is reasonable to assume that changes in the volatility surface over this time period ought to be small. We assume that for an asset j the implied volatility curve for \(T_2\)-days-to-maturity options at the beginning of the second stage, as a function of moneyness, is unchanged from that of time zero. This assumption is known as the ‘sticky delta’ rule. We estimate market prices by first computing implied volatilities of \(T_2\)-days-to-maturity options at time zero using a Cox-Ross-Rubinstein (CRR) binomial tree (see Cox et al. 1979 for details), then estimate options’ market prices at the beginning of the second stage using a CRR tree with the implied volatilities and the relevant strike prices. It is possible to apply sophisticated models if needed; since the scenario prices are exogenous inputs to the optimization model, prices generated using any model can easily be substituted.

Appendix 3

Here we prove that it is equivalent to optimize the expectation of two increasing utility functions which have the same Arrow–Pratt ARA coefficient.

Theorem

If two monotonically increasing functions \(f:{\mathbb {R}}\mapsto {\mathbb {R}}\) and \(g:{\mathbb {R}}\mapsto {\mathbb {R}}\) satisfy the condition \(f''(x)/f'(x) = g''(x)/g'(x)\) then \(\exists \; a,b \in {\mathbb {R}}\) such that \(f(x)=a+b\,g(x)\).

Proof

Note that \(f''(x)/f'(x) = \frac{\text {d}}{\text {d}x} \text {log}(f'(x))\). Then:

$$\begin{aligned} \frac{f''(x)}{f'(x)}&=\frac{g''(x)}{g'(x)} \\ \frac{\text {d}}{\text {d}x} \text {log}(f'(x))&= \frac{\text {d}}{\text {d}x} \text {log}(g'(x)) \\ \text {log}(f'(x))&= \text {log}(g'(x)) + c \\ f'(x)&= \text {e}^c \, g'(x) \\ f(x)&= a+b\, g(x) \end{aligned}$$

where \(c \in {\mathbb {R}}\) is a constant and defining \(b=\text {e}^c\). \(\square\)

Applying the theorem above, two monotonically increasing utility functions with the same ARA coefficients differ by only a linear transformation. Maximizing \({\mathbb {E}}(U(x))\) is equivalent to maximizing \({\mathbb {E}}(a+b\, U(x))\) given that \(b>0\) since both functions are increasing.

Appendix 4

Here we demonstrate that setting per element values of r in the progressive hedging algorithm is equivalent to using a single value of r for all variables and rescaling the decision variables.

Theorem

When using the progressive hedging algorithm with a penalty parameter r rescaling a decision variable \(x_k\) by multiplying it by a constant \(n_k\) is equivalent to using the variable specific penalty value \(r_k =r\, n_k^2\).

Proof

Consider the penalty associated with a single decision element \(x_k\) in iteration \(\nu\) of the progressive hedging algorithm for some particular subproblem:

$$\begin{aligned}&V_{\nu , k} x_k + 0.5 r (x_k - {\hat{x}}_{\nu , k})^2 \\&\quad = \left( \sum _2^\nu r(x_{\nu , k} - {\hat{x}}_{\nu , k}) \right) x_k + 0.5 r (x_k - {\hat{x}}_{\nu , k})^2 \end{aligned}$$

Consider replacing \(x_k\) with a rescaled variable \(y_k=n_k x_k\). The optimization problem is unchanged assuming we make the substition \(x_k = y_k / n_k\) in the subproblem’s constraints and original objective function. Consider the penalty that progressive hedging would impose on \(y_k\) in iteration \(\nu\):

$$\begin{aligned}&\left( \sum _2^\nu r(y_{\nu , k} - {\hat{y}}_{\nu , k}) \right) y_k + 0.5 r (y_k - {\hat{y}}_{\nu , k})^2 \end{aligned}$$

Transforming back to the original variable (assuming for now that \({y}_{\nu ,k}=n_k {x}_{\nu , k}\), which also implies \({\hat{y}}_{\nu ,k}=n_k {\hat{x}}_{\nu , k}\)):

$$\begin{aligned} =&\left( \sum _2^\nu r(n_k x_{\nu , k} - n_k {\hat{x}}_{\nu , k}) \right) n_k x_k + 0.5 r (n_k x_k - n_k {\hat{x}}_{\nu , k})^2 \\ =&\left( \sum _2^\nu r\, n_k^2(x_{\nu , k} - {\hat{x}}_{\nu , k}) \right) x_k + 0.5 r\,n_k^2 (x_k - {\hat{x}}_{\nu , k})^2 \\ =&\left( \sum _2^\nu r_k(x_{\nu , k} - {\hat{x}}_{\nu , k}) \right) x_k + 0.5 r_k (x_k - {\hat{x}}_{\nu , k})^2 \end{aligned}$$

where we defined \(r_k=r\, n_k^2\). This is identical to the original penalty for \(x_k\) except with r replaced by \(r_k\). It remains to show \({y}_{\nu ,k}=n_k {x}_{\nu , k}\). The first iteration is solved without penalties, thus for each subproblem \({y}_{2,k}=n_k {x}_{2, k}\) is true, and \({\hat{y}}_{2,k}=n_k {\hat{x}}_{2, k}\) is true. Suppose that we use the penalty parameter \(r_k=r\, n_k^2\) for element \(x_k\) in the original subproblems and the penalty r in the rescaled subproblems. Then the penalties are identical in the second iteration since \({y}_{2,k}=n_k {x}_{2, k}\), and the problems have the same solution, \({y}_{3,k}=n_k {x}_{3, k}\). By induction this is true for all subsequent iterations. Therefore, the progressive hedging algorithm with \(x_k\) rescaled by \(n_k\) is equivalent to performing progressive hedging using the value \(r_k=r\, n_k^2\) for element \(x_k\). \(\square\)

Since the progressive hedging penalty is separable across variables, the proof holds when multiple variables are rescaled.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Diaz, M., Kwon, R.H. Optimization of covered calls under uncertainty. Optim Eng 21, 1635–1663 (2020). https://doi.org/10.1007/s11081-020-09492-0

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11081-020-09492-0

Keywords

Navigation