www.gusucode.com > trading工具箱matlab源码程序 > trading/trading/@krg/timingRisk.m
function tr = timingRisk(k,tradeData) %TIMINGRISK Market impact cost estimate uncertainty. % TR = TIMINGRISK(K,TRADEDATA) calculates the uncertainty of the market % impact cost estimate. K is the KRG object and TRADEDATA % is the order data. % % For example, % % tradeData = % % Symbol Side Shares Size Price ADV Volatility POV % ______ ____ _______ ____ ______ ____________ __________ ____ % % 'IBM' 1 41742 0.01 162.72 4174150 0.196456 0.1 % 'MSFT' 1 1380889 0.05 48.19 2.761778e+07 0.195524 0.2 % 'AAPL' 1 4588737 0.1 115.5 4.588737e+07 0.219272 0.05 % 'HSNI' 1 49455 0.15 72.58 329700 0.23793 0.15 % 'GE' 1 5626336 0.2 26.371 2.813168e+07 0.150651 0.3 % % tr = timingRisk(k,tradeData) % % tr = % % 21.5207 % 31.9289 % 110.3645 % 80.0992 % 37.5790 % % See also krg, iStar, marketImpact, priceAppreciation. % Copyright 2016 The MathWorks, Inc. % Determine if Size or Shares/ADV and POV or TradeTime given [sizeFlag,povFlag,timeFlag,tsvpFlag] = krg.krgDataFlags(tradeData); % Use Size or derive from Shares/ADV if sizeFlag Size = tradeData.Size; else Size = tradeData.Shares ./ tradeData.ADV; end % Use POV, derive from Size and TradeTime or use TradeSchedule if povFlag POV = tradeData.POV; elseif timeFlag POV = Size ./ (tradeData.TradeTime + Size); elseif tsvpFlag Residuals = flip(cumsum(flip(tradeData.TradeSchedule(:)))); ArrivalValue = sum(tradeData.TradeSchedule) .* tradeData.Price; DayTime = sum(tradeData.VolumeProfile) ./ tradeData.ADV; TradePeriods = length(tradeData.TradeSchedule); % volatility is first defined in terms of variance expressed in dollars per share per trade period VarianceDpsPp = tradeData.Volatility.^2 * 1/k.TradeDaysInYear * DayTime * 1/TradePeriods * tradeData.Price^2; end % Timing Risk Calculation if tsvpFlag tr = sqrt(sum(Residuals.^2).* VarianceDpsPp) / ArrivalValue * 10000; else tr = tradeData.Volatility .* sqrt(1/3*1/k.TradeDaysInYear .* ... (Size.*(1-POV)./POV) ) .* 10000; end