实证资产定价(Empirical asset pricing)已经发布于Github和Pypi. 包的具体用法(Documentation)博主将会陆续在CSDN中详细介绍,也可以通过Pypi直接查看。
Pypi: pip install --upgrade EAP
Github: GitHub - whyecofiliter/EAP: empirical asset pricing
张成分析(spanning)用于分析新加入的资产或投资组合是否会使得资产配置更加有效,即是否可以使投资组合有效前沿向前移动,或者说使得在同等收益的情况下新加入的资产形成的投资组合可以带来更低的风险。
张成分析是一种基于回归的统计检验,它进行下面的回归
即用已有的资产对新加入的资产做回归。如果我们得到alpha=0,beta的总和等于1,那么说明新加入的资产可以通过已有资产的线性组合得到,并且在同等收益的情况下,新资产具有更高的风险,则新资产对投资组合的改善没有贡献。如果上述的原假设没有被满足,则说明新加入的资产对投资组合具有改善贡献,且以往的资产无法有效复制出新资产。
综上所述,张成分析的原假设为
针对原假设可以构建四个假设检验和相应的的统计量,统计量分别为三个渐进统计量和一个小样本统计量。三个渐进统计量的假设检验分别为似然比检验LR,Wald检验W,拉格朗日乘子检验LM, 这三个统计量都满足自由度为2N的卡方分布,N是新加入资产的个数。一个小样本统计检验为F检验。当N>1时,F分布的参数为(2N, 2(T-K-N));当N=1时, F分布的参数为(2, T-K-1)。T是时间序列长度,K是已有资产个数。
由于张成检验是基于投资组合有效前沿构建的,根据均值方差构建的投资组合有效前沿对于参数是极其敏感的,所以张成检验对于检验新资产是否更有效并不是一个很准确的检验,这反映在这个检验犯第一类错误的概率远大于理论值,即新资产并不是一个更有效的资产但被归为一个更有效的资产的概率远大于理论值,这时对新资产的判断需要结合回归的alpha值和计算的delta值。但是这种检验的第二类错误的概率(统计势)是可以得到保证的,即如果新资产是有效资产那么它被认为是无效资产的概率是非常低的,就是说将有效资产误判为无效资产的概率是非常低的。
综上所述,运用张成分析时是要针对具体问题判断是否适用的。
想要更进一步了解张成分析参考
R. Kan, G. Zhou, Test of Mean-Variance Spanning, Annals of Economics and Finance, 2012, 13-1, 145-193.
举例
# %% test Spanning test
def test_spanning_test():'''This function is for testing spanning test'''import numpy as npfrom portfolio_analysis import Spanning_test as spanfactor1 = np.random.normal(loc=0.1, scale=1.0, size=(240, 1))factor2 = np.random.normal(loc=0.2, scale=2.0, size=(240, 1))factor3 = np.random.normal(loc=0.5, scale=4.5, size=(240, 1))factor4 = 0.1 * factor1 + 0.5 * factor2 + 0.4 * factor3factor5 = -0.2 * factor1 - 0.1 * factor2 + 1.3 * factor3factor6 = 1.0 * factor1 - 0.5 * factor2 + 0.5 * factor3factor7 = 0.2 * factor1 + 0.1 * factor2 + 0.7 * factor3factor8 = -0.1 * factor1 -0.1 * factor2 + 1.2 * factor3factor9 = -0.3 * factor1 - 0.2 * factor2 + 1.5 * factor3factor10 = 0.9 * factor1 - 0.5 * factor2 + 0.6 * factor3factor11 = 0.2 * factor1 - 0.1 * factor2 + 0.9 * factor3factornew1 = np.random.normal(loc=0.3, scale=2.0, size=(240, 1))factork = np.block([factor1, factor2, factor3, factor4, factor5, factor6, factor7, factor8, factor9])factorn = np.block([factor10, factor11])model1 = span(factorn, factork)model1._regress()model1._build_statistics()model1.fit()model1.summary()model2 = span(factornew1, factork)model2._regress()model2._build_statistics()model2.fit()model2.summary()test_spanning_test()================================================================================================================================
+--------+----------+---------+----------+---------+-----------+----------+------------+----------+-----------+----------+------------+-----+---+---+
| asset | alpha | p-value | delta | F-test | p-value-F | LR | p-value-LR | W | p-value-W | LM | p-value-LM | T | N | K |
+--------+----------+---------+----------+---------+-----------+----------+------------+----------+-----------+----------+------------+-----+---+---+
| asset0 | -0.00000 | 0.13810 | -0.00000 | 3.10291 | 0.01543 | 12.83472 | 0.01211 | 13.14587 | 0.01058 | 12.53381 | 0.01379 | 240 | 2 | 9 |
| asset1 | -0.00000 | 0.97109 | -0.00000 | 3.10291 | 0.01543 | 12.83472 | 0.01211 | 13.14587 | 0.01058 | 12.53381 | 0.01379 | 240 | 2 | 9 |
+--------+----------+---------+----------+---------+-----------+----------+------------+----------+-----------+----------+------------+-----+---+---+
+--------+---------+---------+---------+----------+-----------+----------+------------+----------+-----------+----------+------------+-----+---+---+
| asset | alpha | p-value | delta | F-test | p-value-F | LR | p-value-LR | W | p-value-W | LM | p-value-LM | T | N | K |
+--------+---------+---------+---------+----------+-----------+----------+------------+----------+-----------+----------+------------+-----+---+---+
| asset0 | 0.47970 | 0.00029 | 1.04366 | 10.56632 | 0.00004 | 21.09647 | 0.00003 | 22.05146 | 0.00002 | 20.19584 | 0.00004 | 240 | 1 | 9 |
+--------+---------+---------+---------+----------+-----------+----------+------------+----------+-----------+----------+------------+-----+---+---+
本文链接:https://my.lmcjl.com/post/3428.html
4 评论