Main Content

priceAppreciation

Estimate trading cost due to natural price movement

Description

alpha = priceAppreciation(k,trade) returns the trading cost due to the natural price movement of a stock, or price appreciation. priceAppreciation uses the Kissell Research Group (KRG) transaction cost object k and trade data trade.

example

Examples

collapse all

Retrieve the market impact data from the KRG 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');

miData = readtable('MI_Encrypted_Parameters.csv','delimiter', ...
    ',','ReadRowNames',false,'ReadVariableNames',true);

Create a Kissell Research Group transaction cost analysis object k.

k = krg(miData);

Load the example data from the file KRGExampleData.mat, which is included with the Datafeed Toolbox™.

load KRGExampleData

The variable TradeData appears in the MATLAB® workspace.

TradeData contains these variables:

  • Shares in the transaction, which is a percentage of average daily trading volume

  • Number of shares

  • Average daily volume

  • Percentage of volume

  • Trade time in percentage of the day

  • Volatility

  • Stock price

  • Alpha estimate

For a description of the example data, see Kissell Research Group Data Sets.

Estimate alpha using the Kissell Research Group transaction cost analysis object k. Display the first three alphas.

alpha = priceAppreciation(k,TradeData);

alpha(1:3)
ans =

         -9.49
          8.47
          0.93

Alphas display in basis points.

Input Arguments

collapse all

Transaction cost analysis, specified as a KRG object created using krg.

Trade data that describes the stocks in the transaction, specified as a table or structure. trade must contain these variable or field names.

Variable or Field NameDescription

Size

Shares in the transaction, which is a percentage of average daily trading volume

Shares

Number of shares

ADV

Average daily volume

POV

Percentage of volume

TradeTime

Trade time in percentage of the day

Volatility

Volatility

Price

Stock price

Alpha_bp

Alpha estimate in basis points

The trading cost varies with the trade strategy. priceAppreciation determines the trade strategy using these variables in this order:

  1. Percentage of volume

  2. Trade time

  3. Trade schedule

To change the trade strategy from percentage of volume to trade time, remove the variable POV in the table and add the variable TradeTime with trade time data. To use the trade schedule strategy, remove the variable TradeTime and add the TradeSchedule and VolumeProfile variables.

If you specify size in the trade data, priceAppreciation uses the Size variable. Otherwise, priceAppreciation uses the variables ADV and Shares to determine the size.

Example: trade = table(0.01,9300,860000,0.17,0.40,0.27,29.68,3,'VariableNames',{'Size' 'Shares' 'ADV' 'POV' 'TradeTime' 'Volatility' 'Price' 'Alpha_bp'})

Example: trade = struct('Size',0.01,'Shares',9300,'ADV',860000,'POV',0.17,'TradeTime',0.40,'Volatility',0.27,'Price',29.68,'Alpha_bp',3)

These examples do not represent real market data.

Data Types: struct | table

Output Arguments

collapse all

Alpha, returned as a vector. The units of alpha, or the natural price movement of the stock, are basis points.

More About

collapse all

Price Appreciation

Price appreciation (PA) estimates the trading cost due to the natural price movement of a stock.

The natural price movement commonly refers to expected return, alpha, price trend, drift, or momentum. This movement represents how the stock moves in a market without any uncertainty. PA represents the trading cost due to the underlying trading strategy. For example, buying passively in a rising market or selling passively in a falling market causes the fund to incur higher costs due to market movement. Conversely, buying in a falling market or selling in a rising market causes the fund to incur lower costs due to transacting at the better prices. PA is based on the alpha estimate you specify in the trade data. Funds and managers heavily guard their alpha estimates and expected returns. These expectations are highly proprietary and valued. This function lets you input alpha estimates directly into the model running on your desktop that prevents information leakage.

The PA model is represented as a linear trend. The PA model is

PA=0.5Alpha_bp(SharesADV)(1POVPOV).

Shares are the number of shares to trade. ADV is the average daily volume of a stock. POV is the percent of market volume, or participation fraction, for the order. Alpha_bp is the alpha estimate for the day in basis points. A positive value for the alpha estimate indicates adverse price movement for the order. A negative value for the alpha estimate indicates favorable price movement.

Tips

  • For details about the formula and calculations, contact the Kissell Research Group.

References

[1] Kissell, Robert. “A Practical Framework for Transaction Cost Analysis.” Journal of Trading. Vol. 3, Number 2, Summer 2008, pp. 29–37.

[2] Kissell, Robert. “Algorithmic Trading Strategies.” Ph.D. Thesis. Fordham University, May 2006.

[3] Kissell, Robert. “TCA in the Investment Process: An Overview.” Journal of Index Investing. Vol. 2, Number 1, Summer 2011, pp. 60–64.

[4] Kissell, Robert. The Science of Algorithmic Trading and Portfolio Management. Cambridge, MA: Elsevier/Academic Press, 2013.

[5] Kissell, Robert, and Morton Glantz. Optimal Trading Strategies. New York, NY: AMACOM, Inc., 2003.

Version History

Introduced in R2016a