这个例子演示了校准一个单因素模型的技术,该模型用于估计投资组合信贷损失creditDefaultCopula
或creditMigrationCopula
类。
本例使用权益回报数据作为信贷波动的代理。对于股票数据,对单一因素的敏感性被估计为股票和指数之间的相关性。数据集包含一系列股票的日回报率数据,但单因素模型需要按年进行校准。假设不存在自相关,那么股票与市场指数之间的日互相关等于年互相关。对于表现出自相关的股票,这个例子展示了如何计算包含自相关效应的隐含年度相关。
由于企业违约很少见,在校准违约模型时,通常会使用信用可靠性的代理。单因素联系模型使用一个潜在变量,一个:
在哪里X
是系统性信用因素,w
定义一个公司对一个因素的敏感性的权重是和吗
是特殊因素。w
和
均值为0,方差为1,通常假设是高斯分布或t分布。
计算X和一个:
自X和一个有方差1
通过建设和
是不相关的X,那么:
如果你用股票回报作为代理一个而市场指数回报是X,则是权重参数,w,即股票和指数之间的相关性。
用道琼斯工业平均指数(DJIA)的回报作为市场整体信贷运动的信号。30家成分股公司的回报被用来校准每家公司对系统性信贷运动的敏感性。股票市场上其他公司的权重也是用同样的方法估算的。
%阅读道琼斯指数一年的价格数据t = readtable (“dowPortfolio.xlsx”);表格包含日期和每个公司在市场收盘时的价格%以及道琼斯工业指数。disp(头(t (: 1:7)))
日期收AA AIG AXP英航C _________ _____ _____ _____ _____ _____ _____ 1/3/2006 10847 28.72 68.41 51.53 68.63 45.26 1/4/2006 10880 28.89 68.51 51.03 69.34 44.42 1/5/2006 10882 29.12 68.6 51.57 68.53 44.65 1/6/2006 10959 29.02 68.89 51.75 67.57 44.65 1/9/2006 11012 29.37 68.57 53.04 28.44 69.18 - 52.88 67.33 - 44.57 67.01 - 44.43 1/10/2006 110121/11/2006 11043 28.05 69.6 52.59 68.3 44.98 1/12/2006 10962 27.68 69.04 52.6 67.9 45.02
%我们将日期和索引从表中分离出来,并使用% tick2ret。日期= t){2:最终,1};index_adj_close = t {: 2};stocks_adj_close = t{: 3:结束};index_returns = tick2ret (index_adj_close);stocks_returns = tick2ret (stocks_adj_close);
从指数回报和每个公司的股票回报之间的相关系数计算单因素权重。
[C,daily_pval] = corr([index_returns stocks_returns]);w_daily = C(2:结束,1);
当使用单因子时,可以直接使用这些值creditDefaultCopula
或creditMigrationCopula
.
线性回归通常用于因素模型。对于单因素模型,利用相关系数与决定系数的平方根相匹配的事实,使用股票市场收益的线性回归(R-平方)的线性回归。
w_daily_regress = 0(30日1);为I = 1:30 lm = fitlm(index_returns,stocks_returns(:, I));w_daily_regress (i) =√lm.Rsquared.Ordinary);结束%回归的R值等于指数相互关系流('Max Abs Diff: %e\n'马克斯(abs (w_daily_regress(:)——w_daily (:))))
Max Abs Diff: 7.771561e-16
这种线性回归符合这种形式的模型 ,它通常不符合单因素模型规范。例如, 和 不要让平均值为零,标准差为1。一般来说,系数之间没有关系 和误差项的标准差 .上面线性回归只是作为一种工具来得到由的平方根给出的变量之间的相关系数R平方值。
对于单因素模型校准,一个有用的替代方法是使用标准化的股票和市场回报数据拟合线性回归 和 .“标准化”在这里的意思是减去平均值,然后除以标准差。模型是 .然而,因为 和 均值为零,截距为零 总是零,因为两者都是 和 标准差为1,误差项的标准差满足吗 .这与单因素模型的系数的规格完全匹配。单因素参数 为系数 ,与前面直接通过相关性找到的值相同。
w_regress_std = 0(30日1);index_returns_std = zscore (index_returns);stocks_returns_std = zscore (stocks_returns);为I = 1:30 lm = fitlm(index_returns_std,stocks_returns_std(:, I));w_regress_std (i) = lm。系数{x1的,“估计”};结束%回归的R值等于指数相互关系流('Max Abs Diff: %e\n'马克斯(abs (w_regress_std(:)——w_daily (:))))
最大Abs差:5.551115e-16
这种方法使探索变量的分布假设变得很自然。的creditDefaultCopula
和creditMigrationCopula
对象支持正常分布金宝app或t底层变量的分布。例如,使用时normplot
市场回报有重尾,因此at-copula更符合数据。
normplot (index_returns_std)
权重是根据股票和指数之间的每日相关性计算的。然而,通常的目标是估计未来某个时候(通常是一年之后)信贷违约的潜在损失。
为此,有必要对权重进行校准,使其与一年期相关性相对应。由于数据点的稀疏性,任何合理的数据集都没有足够的数据在统计上具有显著性,因此直接根据历史年收益数据进行校准是不实际的。
然后,你要面对的问题是,如何从更频繁的抽样数据集(例如,日收益率)计算年收益率相关性。解决这个问题的一种方法是使用重叠窗口。通过这种方式,您可以考虑给定长度的所有重叠周期的集合。
%作为一个例子,考虑一个重叠的1周窗口。index_overapping_returns = index_adj_close(6:end) ./ index_adj_close(1:end-5) - 1;stocks_overapping_returns = stocks_adj_close(6:end,:) ./ stocks_adj_close(1:end-5,:) - 1;C = corr([index_overapping_returns stocks_overapping_returns]); / /返回w_weekly_overlapping = C(2:结束,1);%将相关性与每日相关性进行比较。显示每日与重叠的每周相关性barh([w_daily w_weekly_重叠])yticks(1:30) yticklabels(t.Properties.VariableNames(3:end)) title(“与指数的相关性”);传奇(“每天”,“重叠周刊”);
最大互相关p-值的日回报显示出很强的统计意义。
maxdailypvalue = max (daily_pval(2:最终,1));disp(表(maxdailypvalue...“VariableNames”, {“每天”},...“rownames”, {“最大的假定值”}))
每日__________ p-value最大值1.5383e-08
切换到重叠滚动窗口样式的每周相关性提供了稍微不同的相关性。这是一种从每日数据估计较长时期相关性的简便方法。然而,相邻重叠窗口的返回值是相关的,因此对应的p的重叠周返回值无效,因为p的-value计算相关系数
函数不考虑重叠窗口数据集。例如,相邻的重叠窗口返回值由许多相同的数据点组成。这种权衡是必要的,因为移动到非重叠窗口可能会导致一个不可接受的稀疏样本。
%比较不重叠的周回报周五= weekday(dates) == 6;index_weekly_close = index_adj_close(星期五);: stocks_weekly_close = stocks_adj_close(星期五);index_weekly_returns = tick2ret (index_weekly_close);stocks_weekly_returns = tick2ret (stocks_weekly_close);[C,weekly_pval] = corr([index_weekly_returns stocks_weekly_returns]); / /每个星期返回一个星期w_weekly_nonoverlapping = C(2:结束,1);maxweeklypvalue = max (weekly_pval(2:最终,1));%对比日与重叠的相关性。barh([w_daily w_weekly_overlap w_weekly_nonoverlap]) yticks(1:30) yticklabels(t.Properties.VariableNames(3:end)) title(“与指数的相关性”);传奇(“每天”,“重叠周刊”,“重叠周刊”);
的p-非重叠周相关性的值要高得多,表明统计意义的损失。
%计算每个系列的样本数量numDaily =元素个数(index_returns);numOverlapping =元素个数(index_overlapping_returns);numWeekly =元素个数(index_weekly_returns);disp(表([maxdailypvalue; numDaily],[南;numOverlapping], [maxweeklypvalue; numWeekly],...“VariableNames”, {“每天”,“重叠”,“Non_Overlapping”},...“rownames”, {“最大的假定值”,“样本”}))
每日重叠Non_Overlapping __________ ___________ _______________ 最大样本量假定值1.5383 e-08南0.66625 250 246 50
对金融数据的一个常见假设是,资产回报在时间上是不相关的。也就是某一时期的资产回报T是否与之前的收益不相关T-1.在这种假设下,年互相关与日互相关完全相等。
让 为当日市场指数的日日志收益率t和 为相关资产的日收益率。利用CAPM,将关系建模为:
单因素模型是这种关系的一个特例。
假设资产收益和指数收益与各自的过去不相关,则:
y,
将每一系列的年度(日志)收益合计为
在哪里T可能是252
这取决于基本的每日数据。
让 和 为日方差,由日收益数据估计。
日协方差 和 是:
每天的相关性 和 是:
考虑一年的总收益的方差和协方差。在无自相关假设下:
资产与指数的年度相关性为:
在没有自相关的假设下,请注意每天的互相关实际上是平等的到年度互相关。您可以在单因素模型中直接使用这个假设,方法是将单因素权重设置为每日的相互关系。
如果放松资产没有自相关性的假设,那么资产之间从日相互关系到年相互关系的转换就不那么简单了。的 现在有了附加条款。
首先考虑计算的方差的最简单的情况
当T等于2
.
自 ,那么:
考虑T=3.
.指出日回报率之间的相关性
天分开
.
在一般情况下,对于一个集合的方差T日收益率与跟踪自相关k天,有:
这也是同样的资产方差公式:
之间的协方差 和 如前面所示等于 .
因此,指标与资产之间的相互关系具有自相关性,从一个跟踪1
通过k天是:
请注意, 为无自相关假设下的权重。平方根项提供了用于解释序列中的自相关的调整。调整更多地取决于指数自相关和股票自相关之间的差异,而不是这些自相关的大小。因此,自相关调整后的年度单因素权重为:
寻找每只股票与前一天回报的自相关性,并调整权重,以纳入一天的自相关性的影响。
corr1 = 0(30日1);pv = 0(30日1);为stockkidx = 1:30 [corr1(stockkidx),pv1(stockkidx)] = corr(stocks_returns(2:end, stockkidx),stocks_returns(1:end-1, stockkidx));结束auto斗牛= find(pv1 < 0.05)
autocorrIdx =4×110 18 26 27
有四支股票处于低位p-可能指示存在自相关的值。在此模型下,考虑到一天的自相关,估计与指数的年度互相关。
%基于年互相关的权重等于日互相关%相关系数乘以另外一个因子。T = 252;w_yearly = w_daily;[rho_index, pval_index] = corr(index_returns(1:end-1),index_returns(2:end)); / /返回结果%检查我们的索引是否有任何显著的自相关性流('指数p-value中的一天自相关:%f\n', pval_index);
指数的一天自相关系数p-value: 0.670196
如果pval_index < 0.05%如果p-值表明指数中没有显著的自相关,%设置其为0。rho_index = 0;结束w_yearx (auto斗牛线)= w_yearx (auto斗牛线).*...√(T / 2 + (T - 1)。* rho_index)。/ (T / 2 + (T - 1)。* corr1 (autocorrIdx)));%将调整后的年互相关值与日互相关值进行比较barh ([w_daily (autocorrIdx) w_yearly (autocorrIdx)]) yticks (1:4);allNames = t.Properties.VariableNames(3:结束);yticklabels (allNames (autocorrIdx)标题(“年度单因素权重”);传奇(“不相关”,与自相关的,“位置”,“东南”);
creditDefaultCopula
|模拟
|portfolioRisk
|riskContribution
|confidenceBands
|getScenarios