最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

金融量化分析_2015_讲义_5_金融计算

来源:动视网 责编:小OO 时间:2025-09-23 06:42:11
文档

金融量化分析_2015_讲义_5_金融计算

5金融计算5.1如何计算现金流现值和终值?现金流现值(NetPresentValue,简称NPV)计算公式为:其中,CFi为第i期的净现金流,CF0为初始投资,r为贴现率,n为现金流期数。现金流终值(FutureValue,简称FV)计算公式为:NPV=∑CFi(1+r)ni=0,(5.1)其中,CFi为第i期的现金流入,r为贴现率,n为现金流期数,ExtraCF为最后一次非周期现金流(本金)。FV=∑CFi(1+r)ini=1+ExtraCF,(5.2)【示例5.1】(计算投资项目的现金流现
推荐度:
导读5金融计算5.1如何计算现金流现值和终值?现金流现值(NetPresentValue,简称NPV)计算公式为:其中,CFi为第i期的净现金流,CF0为初始投资,r为贴现率,n为现金流期数。现金流终值(FutureValue,简称FV)计算公式为:NPV=∑CFi(1+r)ni=0,(5.1)其中,CFi为第i期的现金流入,r为贴现率,n为现金流期数,ExtraCF为最后一次非周期现金流(本金)。FV=∑CFi(1+r)ini=1+ExtraCF,(5.2)【示例5.1】(计算投资项目的现金流现
5 金融计算

5.1 如何计算现金流现值和终值?

现金流现值(Net Present Value ,简称NPV )计算公式为:

其中,CF i 为第i 期的净现金流,CF 0为初始投资,r 为贴现率,n 为现金流期数。 现金流终值(Future Value ,简称FV )计算公式为:

NPV =∑CF i (1+r)n i=0, (5.1)

其中,CF i 为第i 期的现金流入,r 为贴现率,n 为现金流期数,ExtraCF 为最后一次非周期现金流(本金)。

F V =∑CF i (1+r)i n i=1+ExtraCF , (5.2) 【示例5.1】(计算投资项目的现金流现值和终值) =================================================================================== %%计算投资项目的现金流现值:

PresentVal = pvfix(0.06, 10, 50, 1000, 0); %面值为1000元的10年期国债,票面利率为5%,每年末支付一次利息,第10年末偿还本金1000元,贴现率为6%。

PresentVal = pvvar([-10000 2500 2000 3000 4000], 0.09, ['01/12/1987'; '02/14/1988';'03/03/1988';'06/14/1988';

'12/01/1988']); %初始投资为10000元,支付日期为01/12/1987,现金流入分别为2500、2000、3000、4000元,支付日期分别为02/14/1988、03/03/1988、06/14/1988、12/01/1988,年利率为9%。

%%计算投资项目的现金流终值:

FutureVal = fvfix(0.06, 10, 50, 1000, 0); %面值为1000元的10年期国债,票面利率为5%,每年末支付一次利息,第10年末偿还本金1000元,贴现率为6%。初值假定为1000元。

FutureVal = fvvar([-10000, 2500, 2000, 3000, 4000], 0.09, ['01/12/2000'; '02/14/2001'; '03/03/2001'; '06/14/2001';

'12/01/2001']); %初始投资为10000元,支付日期为01/12/2000,现金流入分别为2500、2000、3000、4000元,支付日期分别为02/14/2001、03/03/2001、06/14/2001,年利率为9%。

===================================================================================

5.2 如何计算投资项目的内部收益率?

投资项目可行性的评估除了计算净现值外还可计算该项目的内部收益率(Internal Rate of Return ,简称IRR ),通过比较其内部收益率与必要收益率的关系来判定该项目是否可行。内部收益率满足下式的r :

其中,CF i 为第i 期的净现金流,CF 0为初始投资,r 为贴现率,n 为现金流期数。 ∑CF i

(1+r)n i=0=0, (5.3)

【示例5.2】(计算投资项目内部收益率) =================================================================================== %%MATLAB 函数语法:

[Return, AllRates] = irr(CashFlow); %计算周期现金流的内部收益率Return 。%CashFlow 为变化的现金流向量。 ----------------------------------------------------------------------------------- %%实例(计算内部收益率):

Return = irr([-100000 10000 20000 30000 40000 50000]);

===================================================================================

5.3 如何计算持有期对数收益率和简单收益率?

对数收益(Log-Return )计算公式为:

rr tt ,∆=ll ll ii �

PP tt +D tt PP tt−∆�/∆, (5.4)

其中,rr tt ,∆表示对数收益,PP tt 为第t 期价格,DD tt 为第t 期支付红利,∆为期末与期初

的间隔期数,在通常情况下,设定∆=1,log (∙)为自然对数函数,通常将资产价格的自然对数记为p t =log (P t )。 简单净收益(Simple Net Return )计算公式为:

其中,RR tt ,∆表示简单净收益,PP tt 为第t 期价格,DD tt 为第t 期支付红利,∆为期末与期初的间隔期数,在通常情况下,设定∆=1。

RR tt ,∆=�PP tt +D tt PP tt−∆−1�/∆, (5.5)

【示例5.3】(计算股票指数对数收益序列) =================================================================================== %从Yahoo 获取日收盘价序列:

Name='上证指数'; Ticker='000001.SS'; %名称和代码。

temp = urlread(strcat('http://ichart.finance.yahoo.com/table.csv?s=', Ticker, '&a=', '11', '&b=', '19', '&c=', '1990', '&d=', '10', '&e=', '10', '&f=', '2014','&g=', 'd','&ignore=.csv'));

[date, open, high, low, close, volume, adj_close] = strread(temp(43:end),'%s%s%s%s%s%s%s','delimiter',','); %从Yahoo Finance 下载1990年11月19日至2014年10月10日期间的日交易数据集,包含日期、开盘价、最高价、最低价、收盘价、成交量和经过红利和股票分割等调整的收盘价。

ClosePrice = str2double(close(end:-1:1)); CloseDate=date; %获取上证指数的日收盘价序列。

%从Wind 获取日收盘价序列:

w=windmatlab;

[ClosePrice,~,~,CloseDate,~,~]= w.wsd('000001.SH', 'close', 'IPO', today); %获取上证指数的日收盘价序列。

%计算日对数收益率:

CloseLogReturn = price2ret(ClosePrice); %将收盘价序列转换为对数收益序列。在默认情况下,price2ret 计算对数收益。

%计算日简单收益率:

CloseSimpleReturn = tick2ret(ClosePrice); %将收盘价序列转换为对数收益序列。在默认情况下,tick2ret 计算简单收益。

%绘图比较日对数收益率和日简单收益率:

figure('Color','W')

plot(CloseDate(2:end), CloseSimpleReturn, CloseDate(2:end), CloseLogReturn,'r');

datetick('x','YYYY', 'keepticks') ; xlabel('日期'); title('日对数收益与日简单收益比较'); legend('日简单收益','日对数收益'); ===================================================================================

5.4 如何计算债券到期收益率?

债券到期收益率使所有未来现金流现值等于债券价格的贴现率,反映了债券持有期的平均回报率,即为:

其中,C t 为第t 期的净现金流,r t 为第t 期的贴现率,T 为现金流期数,y 为到期收益率。 ∑CC tt (1+rr tt )TT tt =1=∑CC tt (1+yy )TT tt =1。 (5.6)

【示例5.4】(计算债券到期收益率)

=================================================================================== %在自行设定参数下计算到期收益率:

BondPrice=1276.76; %债券价格。

CouponRate = 0.04; %票面利率为8.00%。

Settle = '02-Aug-1999'; %结算开始日期为1999年8月2日。

Maturity = '02-Aug-2029'; %到期日期为2029年8月2日。

Period = 2; %每年支付利息两次。

Basis = 0; %利息支付方式为(实际值/实际值)。

EndMonthRule = 1; IssueDate = '02-Aug-1999'; FirstCouponDate = '02-Aug-1999'; LastCouponDate= '02-Aug-2029'; StartDate = '02-Aug-1999'; Face = 1000; %面值为1000。

Yield = bndyield(BondPrice, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate, Face); %计算到期收益率。

%从Wind 读取参数下计算到期收益率:

w=windmatlab;

BondTicker='010004.IB'; %选择债券代码。

BondName = w.wss('010004.IB', 'fullname'); %读取债券名称。

SettleDate= today-3; %设定起息日。

BondPrice=w.wsd('010004.IB', 'close', SettleDate, SettleDate); %读取起息日债券交易价格。

CouponRate = w.wss('010004.IB', 'couponrate2')/100; %读取票面利率。

MaturityDate = w.wss('010004.IB', 'maturitydate'); %读取到期日期。

Period = w.wss('010004.IB', 'interestfrequency'); %读取付息频率。

Yield = bndyield(BondPrice, CouponRate, SettleDate, MaturityDate); %计算到期收益率。

===================================================================================

5.5 如何计算风险测度指标:β、D 、CX 、δδ、γγ、νν、θθ和ρρ?

股票的β系数为:

其中,σM 2为某资产组合收益的方差,Cov(r k ,r M )为 第k 项资产与资产组合的协方

差。 债券的麦考利久期(Macaulay’s Duration )和修正久期(Modified Duration )分别为: βk =Cov (r k ,r M )σM 2, (5.7)

DD =∑�CCCC tt (1+yy )tt ∙tt�TT tt =1/∑CCCC tt (1+yy )tt TT tt =1, (5.8)

期权的Delta 、Gamma 、Vega 、Theta 、Rho 分别衡量标的资产价格风险、凸性风险、波动性风险、时间缩减风险、折现率风险,其计算公式分别为:

DD ∗=DD 1+yy , (5.9)

其中,y 为债券到期收益率,T 为到期日。

δ=∂C ∂S =N(d 1), (5.10) γ=

∂2C ∂S =N ′(d 1)S σ√T , (5.11) ν=∂C ∂σ=S √TN ′(d 1), (5.12) θ=−

∂C ∂T =SN ′(d 1)σ2√T −rKe −rT N(d 2), (5.13)

【示例5.5】(计算灵敏度指标) ρ=∂C ∂r =KTe −rT N(d 2)。 (5.14) =================================================================================== %%计算股票的β系数:

clc; clear;

%从Wind 下载股票与市场日收盘价序列:

w=windmatlab; %创建windmatlab 对象。

Ticker='600000.SH'; %'601158.SH'

[MarketClosePrice,~,~, MarketDate]=w.wsd('000001.SH','close', today-1000, today-1);

[AssetClosePrice,~,~,AssetDate]=w.wsd(Ticker,'close', today-1000, today-1);

%处理数据(获取各个数据交易日期相同的收盘价):

sameDate=intersect(MarketDate, AssetDate);

ismemberTicker=ismember(MarketDate,sameDate); sameMarketClosePrice= MarketClosePrice (ismemberTicker,:); ismemberTicker=ismember(AssetDate,sameDate); sameAssetClosePrice= AssetClosePrice (ismemberTicker,:);

%计算个股β系数:

sameMarketCloseReturns=price2ret(sameMarketClosePrice); %计算市场对数收益。

sameAssetCloseReturns=price2ret(sameAssetClosePrice); %计算股票对数收益。

temp_cov=cov(sameAssetCloseReturns, sameMarketCloseReturns); %计算个股收益与市场收益之间的协方差。 beta= temp_cov(1,2)/ temp_cov(2,2); %计算β系数。

%或者,直接对原始数据(含缺失值)进行线性回归:

MarketCloseReturns=price2ret(MarketClosePrice); %计算市场对数收益。

AssetCloseReturns=price2ret(AssetClosePrice); %计算股票对数收益。

b=regress(AssetCloseReturns,[ones(size(AssetCloseReturns)),MarketCloseReturns]); beta=b(2); %剔除缺失值后进行回归。 ----------------------------------------------------------------------------------- %%计算债券久期:

Price = [106; 100; 98]; %净价分别为106、100、98的三种债券。

CouponRate = 0.055; %票面利率为5.50%。

Settle = '02-Aug-1999'; %结算日期为1999年8月2日。

Maturity = '15-Jun-2004'; %到期日期为2004年6月15日。

Period = 2; %每年支付利息两次。

Basis = 0; %利息支付方式为(实际值/实际值)。

[ModDuration, YearDuration, PerDuration] = bnddurp(Price,CouponRate, Settle, Maturity, Period, Basis); %计算久期。 ----------------------------------------------------------------------------------- %%计算期权的Delta 、Gamma 、Vega 、Theta 、Rho :

Price=100; %标的资产价格。

Strike = 95; %执行价格。

Rate = 0.10; %无风险利率(每年)。

Time = 0.25; %距离到期时间(3个月)。

Volatility = 0.5; %标的资产价格波动率(每年)。

[CallDelta, PutDelta] = blsdelta (Price, Strike, Rate, Time, Volatility);

Gamma = blsgamma(Price, Strike, Rate, Time, Volatility);

[CallEl, PutEl] = blslambda (Price, Strike, Rate, Time, Volatility);

Vega = blsvega (Price, Strike, Rate, Time, Volatility);

[CallTheta, PutTheta] = blstheta (Price, Strike, Rate, Time, Volatility);

[CallRho, PutRho] = blsrho (Price, Strike, Rate, Time, Volatility);

===================================================================================

5.6 如何计算投资组合的预期收益和方差-协方差?

假如投资组合由m 项风险资产构成,第i 项资产的期望收益、标准差和权数分别为E(r i )、σi 和w i ,其中,∑w i m i=1=1,第i 项资产和第j 资产收益之间的协方差和相关系数分别为σij 和ρij ,则组合期望收益和方差分别为:

EE�rr ee �=∑ww ii EE (rr ii )mm ii =1, (5.15) σσee 2=∑∑ww ii ww ii σσii ii mm ii =ii mm ii =1。 (5.16) 以矩阵形式表示,m 项资产的标准差矩阵和相关系数矩阵分别为:

而且,它们的权重向量为W =(w 1,w 2,⋯,w m ),投资额向量为X =(x 1,x 2⋯,x m ),那么m 项资产的方差-协方差矩阵和资产组合的方差分别为:

VV =�σσ100σσ2⋯⋯00⋮ ⋮⋱⋮00⋯σσmm �,CC =�1ρρ21ρρ121⋯⋯ρρ1mm ρρ2mm ⋮ ⋮⋱⋮ρρmm 1ρρmm 2⋯1

�, (5.17) ΣΣii =VVCCVV X T ,σPX 2=XVCVX T 。 (5.19)

ΣΣWW =VVCCVV ,σσPPWW 2=WWVVCCVVWW TT , (5.18)

或者, 【示例5.6】(计算投资组合的期望收益和方差)

=================================================================================== %%计算投资组合的期望收益和方差:

ExpReturn = [0.1 0.2 0.15]; %三项资产的预期收益。

STDs= [0.2 0.25 0.18]; %三项资产收益的标准差。

Correlations = [1 0.3 0.4; 0.3 1 0.3; 0.4 0.3 1]; %三项资产收益的相关系数。

PortWts=[0.4 0.2 0.4]; %三项资产的权重。

ExpCovariance = corr2cov(STDs, Correlations); %计算三项资产收益的方差-协方差矩阵。

[PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance, PortWts); %组合标准差和收益率。

===================================================================================

5.7 如何计算风险测度指标:VaR ?

资产(组合)的风险价值(Value at Risk ,简称VaR )为:

其中,V 0为资产(组合)初始投资,σR 为资产收益标准差,Z cc 为在置信水平c 下资产收益分布的c 分位数(比如,当c =95%时,Z c =−1.5)。 VaR =(μ+Z cc σR )V 0, (5.20)

【示例5.7】(计算VaR )

=================================================================================== %%计算资产(组合)的风险价值:

RiskThreshold = [0.01;0.05;0.10]; %三个置信水平。

PortValue = 1; %组合价值。

PortReturn=0.05; %组合期望收益。

PortRisk=0.1; %组合标准差。 ValueAtRisk = portvrisk(PortReturn, PortRisk, RiskThreshold, PortValue); %计算组合风险价值。

===================================================================================

5.8 如何计算风险测度指标:违约概率?

根据KMV 模型(或有期权法),企业违约概率(Probability of Default )为:

其中,Z T 为标准正态分布随机变量,V 0为企业初始价值,F 为企业违约临界值,σV 为企业价值的波动率,T 为企业债务期限,r 为无风险利率。V 0和σV 可通过方程组求解:E 0=VV 0NN (dd 1)−CCee −rrTT NN (dd )和σ=�V 0E 0�NN (dd 1)σV ,其中,d 1=ln (V 0/F )+�r+σV 2/2�T σ√T ,

d 2=d 1−σV √T =ln (V 0/F )+�r −σV 2/2�T σ√T ,E 0为企业当前股权价值。 PPrrllPP (DDeeff )=Prob {V T ≤F }=PPrrllPP �ZZ TT ≤ll ii ⁡(VV 0F

)+�rr−σV 2/2�TT σ√TT �=NN (−DD),(5.21) 【示例5.8】(MATLAB :计算基于KMV 的违约概率)

=================================================================================== %%计算基于KMV 的违约概率:

E0=1412727; %企业股权价值。

F=1e8+50000000/2; %企业负债面值。

T=1; %企业债务期限。

r=0.0225; %无风险利率。

Sigma_E0=0.23; %企业股权价值的波动率(年度)。

x_solve=fsolve(@(x) fun(E0, F, r,T, Sigma_E0, x), [1, 1]); %求解企业价值V 及其波动率。

DD= ( log(x_solve (1)* E0/ F)+(r-0.5* x_solve(2)^2)*T) / (x_solve(2)*sqrt(T)); %计算违约距离。

EDF=normcdf(-DD) %计算违约概率。

%%定义求解KMV 模型的目标函数。

function G=fun(E0, F, r,T, Sigma_E0, x)

d1=( log(x(1)* E0/ F)+(r+0.5*x(2)^2)*T) / (x(2)*sqrt(T));

d2=d1-x(2)*sqrt(T);

G=[x(1)*normcdf(d1)-exp(-r*T)*normcdf(d2)* F/ E0-1; normcdf(d1)*x(1)*x(2)-Sigma_E0];

===================================================================================

5.9 如何计算债券价格:现金流贴现模型?

根据现金流贴现模型,债券价格是未来预期现金流的现值,其定价公式为:

PP =∑CC tt (1+rr tt )tt TT tt =1

, (5.22) 其中,P 为债券现价,C t 为第t 期的现金流(最后一期的现金流还包含债券面值),r t 为

【示例5.9】(计算债券价格)

=================================================================================== %%计算普通债券价格:

Yield=[0.03; 0.04; 0.05]; %债券贴现率(半年)。

CouponRate = 0.04; %票面利率为8.00%。

Settle = '02-Aug-1999'; %结算开始日期为1999年8月2日。

Maturity = '02-Aug-2029'; %到期日期为2029年8月2日。

Period = 2; %每年支付利息两次。

Basis = 0; %利息支付方式为(实际值/实际值)。

EndMonthRule = 1; IssueDate = '02-Aug-1999'; FirstCouponDate = '02-Aug-1999'; LastCouponDate= '02-Aug-2029'; StartDate = '02-Aug-1999'; Face = 1000; %面值为1000。

[Price, AccruedInt] = bndprice(Yield, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate, Face); %计算价格。

=================================================================================== 5.10如何计算期权价格:Black-Scholes模型?

根据Black-Scholes定价理论,欧式看涨期权的定价公式为:

CC t=SS t NN(dd1)−iiee−rr(TT−tt)NN(dd2),(5.23)其中,C t为第t期期权价格,S t为第t期标的资产价格,X为期权执行价格,r为无风险利率,T-t为剩余期限,d1=ln(S t/X)+(r+σ2/2)(T−t)

σ√T−t,d2=d1−σ√T−t,N(∙)为累积标准正态分布函数,σ为标的资产收益率的标准差。

【示例5.10】(计算期权价格)

=================================================================================== Price=100; %当前标的资产价格。

Strike = 95; %执行价格。

Rate = 0.10; %无风险利率(每年)。

Time = 0.25; %距离到期时间(3个月)。

Volatility = 0.5; %标的资产价格波动率(每年)。

[Call, Put] = blsprice(Price, Strike, Rate, Time, Volatility); %计算看涨看跌期权价格。

=================================================================================== 5.11如何计算隐含波动率:Black-Scholes模型?

在Black-Scholes定价模型中,标的资产价格、期权执行价格、无风险利率、剩余期限、期权价格均可从市场中观察到或提前已知,而标的资产的波动率通常是未知的,因此,可从该模型中推导出标的资产的波动率,称为隐含波动率(Implied V olatility,简称IV)。

【示例5.11】(计算隐含波动率)

=================================================================================== Price=100; %当前标的资产价格。

Strike = 95; %执行价格。

Rate = 0.10; %无风险利率(每年)。

Time = 0.25; %距离到期时间(3个月)。

Value=13.6953; %期权价格。

Type={'call'}; %期权类型,取值为{'call'}、{'put'},默认为欧式看涨期权。

Volatility = blsimpv(Price, Strike, Rate, Time, Value); %标的资产价格波动率(每年)。计算期货期权隐含波动率的函数为blkimpv。

===================================================================================

5.12上机练习

[1] 面值为100元的5年期国债,票面利率为8%,每半年末支付一次利息,第5年末偿还本金100元。试计算该固定现金流的现值和终值。

[2] 期限10年,面值100美元,票面利率8%,半年支付一次利息,卖价127.76美元,则该债券到期收益率为多少?

[3] 从Yahoo Financ或Wind数据库中抽取上证综合指数2013年月1月1日至今的日交易数据集,包含日期、开盘价、最高价、最低价、收盘价、成交量和经过红利和股票分割等调整的收盘价。将价格序列转换成收益序列,并绘制走势图。

[4] 选择一家上市公司,下载其日价格数据(至少100个交易日),绘制交易价格走势图,要求标出标题、日期刻度,用醒目的符号标出最低点和最高点。

[5] 选择两家上市公司,下载它们的日价格数据,将它们的交易价格走势图绘制在同一图中,要求标出标题、日期刻度。

[6] A公司发行债券,净价为105、票面利率为6%、结算日期为2010年8月2日、到期日期为2014年8月2日,每年支付两次利息。试计算该债券的久期和凸度。

[7] 从Wind数据库中提取10只股票和上证综合指数2013年月1月1日至今的日交易数据集,包含日期、开盘价、最高价、最低价、收盘价、成交量和经过红利和股票分割等调整的收盘价。将价格序列转换成收益序列,并计算每只股票与上证综合指数收益率之间的β系数。

5.13推荐阅读

推荐阅读5-1:固定收益证券的久期与凸度计算

推荐阅读5-2:在险价值模型及其基本计算方法

推荐阅读5-3:风险价值VaR计算

推荐阅读5-4:金融衍生品计算

推荐阅读5-5:资产组合计算

37

文档

金融量化分析_2015_讲义_5_金融计算

5金融计算5.1如何计算现金流现值和终值?现金流现值(NetPresentValue,简称NPV)计算公式为:其中,CFi为第i期的净现金流,CF0为初始投资,r为贴现率,n为现金流期数。现金流终值(FutureValue,简称FV)计算公式为:NPV=∑CFi(1+r)ni=0,(5.1)其中,CFi为第i期的现金流入,r为贴现率,n为现金流期数,ExtraCF为最后一次非周期现金流(本金)。FV=∑CFi(1+r)ini=1+ExtraCF,(5.2)【示例5.1】(计算投资项目的现金流现
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top