This example shows how to determine the optimal portfolio weights for a specified dollar value using transaction cost analysis from the Kissell Research Group. The sample portfolio contains only long shares of stock. You can incorporate risk, return, and market-impact cost during implementation of the investment decision.
This example requires an Optimization Toolbox™ license. For background information, see Optimization Theory Overview (Optimization Toolbox).
The KRGPortfolioOptimizationExample
function,
which you can access by entering edit KRGPortfolioOptimizationExample.m
,
addresses three different optimization scenarios:
Maximize the trade off between net portfolio return and portfolio risk. The trade off maximization is expressed as
where:
R is the estimated return for each stock in the portfolio.
x denotes the weights for each stock in the portfolio.
MI is the market-impact cost for the specified dollar value and share quantities.
is the specified risk aversion parameter.
C is the covariance matrix of the stock data.
Minimize the portfolio risk subject to a minimum return target using
Maximize net portfolio return subject to a maximum risk exposure target using
Lower and upper bounds constrain x in each scenario. Each optimization finds a local optimum. For ways to search for the global optimum, see Local vs. Global Optima (Optimization Toolbox).
Retrieve the market-impact data from the Kissell Research Group
FTP site. Connect to the FTP site using the ftp
function
with a user name and password. Navigate to the MI_Parameters
folder
and retrieve the market-impact data in the MI_Encrypted_Parameters.csv
file. miData
contains
the encrypted market-impact date, code, and parameters.
f = ftp('ftp.kissellresearch.com','username','pwd'); mget(f,'MI_Encrypted_Parameters.csv'); close(f) miData = readtable('MI_Encrypted_Parameters.csv','delimiter', ... ',','ReadRowNames',false,'ReadVariableNames',true);
Create a Kissell Research Group transaction cost analysis object
k
. Specify initial settings for the date, market-impact
code, and number of trading days.
k = krg(miData,datetime('today'),1,250);
Load the example data TradeDataPortOpt
and
the covariance data CovarianceData
from the file KRGExampleData.mat
,
which is included with the Trading Toolbox™. Limit the data set
to the first 50 rows.
load KRGExampleData TradeDataPortOpt CovarianceData n = 50; TradeDataPortOpt = TradeDataPortOpt(1:n,:); CovarianceData = CovarianceData(1:n,1:n);
For a description of the example data, see Kissell Research Group Data Sets.
Run the optimization scenario using the example and covariance
data. To run the first optimization, specify 1
in
the last input argument.
[Weight,Shares,Value,MI] = KRGPortfolioOptimizationExample(TradeDataPortOpt, ...
CovarianceData,1);
KRGPortfolioOptimizationExample
returns
the optimized values for each stock in the portfolio:
Portfolio weight
Number of shares
Portfolio dollar value
Market-impact cost
To run the other two scenarios, specify 2
or 3
in
the last input argument of KRGPortfolioOptimizationExample
.
Display the portfolio weight for the first three stocks in the portfolio in decimal format.
format Weight(1:3)
ans = 0.0100 0.3198 0.1610
Display the number of shares using two decimal places for the first three stocks in the portfolio.
format bank
Shares(1:3)
ans = 24420.02 3249893.71 402364.47
Display the portfolio dollar value for the first three stocks in the portfolio.
Value(1:3)
ans = 1000000.00 31977654.17 16097274.50
Display the market-impact cost for the first three stocks in the portfolio in decimal format.
format MI(1:3)
ans = 1.0e-03 * 0.1250 0.7879 0.3729
[1] Kissell, Robert. “Creating Dynamic Pre-Trade Models: Beyond the Black Box.” Journal of Trading. Vol. 6, Number 4, Fall 2011, pp. 8–15.
[2] Kissell, Robert. “TCA in the Investment Process: An Overview.” Journal of Index Investing. Vol. 2, Number 1, Summer 2011, pp. 60–64.
[3] Kissell, Robert. The Science of Algorithmic Trading and Portfolio Management. Cambridge, MA: Elsevier/Academic Press, 2013.
[4] Chung, Grace and Robert Kissell. “An Application of Transaction Costs in the Portfolio Optimization Process.” Journal of Trading. Vol. 11, Number 2, Spring 2016, pp. 11–20.
krg
| marketImpact
| fmincon
(Optimization Toolbox) | optimoptions
(Optimization Toolbox)