www.gusucode.com > trading工具箱matlab源码程序 > trading/trading/@krg/priceAppreciation.m

    function pa = priceAppreciation(~,tradeData)
%PRICEAPPRECIATION Price movement alpha.
%   PA = PRICEAPPRECIATION(K,TRADEDATA) calculates the natural price 
%   movement of a stock.   It represents the stock price movement
%   over the day if the order was not entered into the market.   K is the
%   KRG object and TRADEDATA is entered as a table or structure.
%
%   For example,
%
%   tradeDataTable = 
%
%    Size     Shares         ADV        POV     TradeTime    Volatility    Price    Alpha_bp    
%    ____    _________    __________    ____    _________    __________    _____    ________    
%
%    0.10    100000.00    1000000.00    0.20    0.40         0.25          35.00    50.00      
%
%    pa = priceAppreciation(k,tradeDataTable)
%
%    returns
%
%    pa =
%
%        10.00
%
%   See also krg, iStar, marketImpact, timingRisk.

%   Copyright 2016 The MathWorks, Inc.

% Determine if Size or Shares/ADV and POV or TradeTime given
[sizeFlag,povFlag,timeFlag,tsvpFlag] = krg.krgDataFlags(tradeData);
      
if ~sizeFlag
  tradeData.Size = tradeData.Shares ./ tradeData.ADV;
end

if povFlag
  pa = 0.5 .* tradeData.Alpha_bp .* (tradeData.Size .* (1-tradeData.POV) ./ tradeData.POV);
elseif timeFlag
  pa = 0.5 .* tradeData.Alpha_bp .* tradeData.TradeTime;
elseif tsvpFlag
  ArrivalValue = sum(tradeData.TradeSchedule) .* tradeData.Price;
  DayTime = sum(tradeData.VolumeProfile) ./ tradeData.ADV;
  TradePeriods = length(tradeData.TradeSchedule);
  AlpaDpsPp = tradeData.Alpha_bp * DayTime/TradePeriods/10000 * tradeData.Price;
  TT = 1:TradePeriods;
  pa = AlpaDpsPp * sum(tradeData.TradeSchedule .* TT) ./ ArrivalValue * 10000;
end