实证资产定价(Empirical asset pricing)已经发布于Github和Pypi. 包的具体用法(Documentation)博主将会陆续在CSDN中详细介绍,也可以通过Pypi直接查看。

Pypi: pip install --upgrade EAP

Github: GitHub - whyecofiliter/EAP: empirical asset pricing

投资组合的超额收益的主要来源有两种:承担风险因子和错误定价。对投资组合的超额收益进行风险因子调整是排除已知主要风险因子对超额收益的影响。主要的风险因子模型包括几个经典的定价模型(asset pricing model),CAPM、Fama-French 3 factors model、Cohart 4 factors model、 Fama-French 5 factors model. 如果经过这些定价模型调整后,投资组合的依然具有显著的超额收益,那么这说明投资组合超额收益的来源排除了通过承担这几个主要风险因子带来的风险回报。

这个Demo对诸多投资组合进行了风险因子调整,并且只报告因子调整前后投资组合超额收益的情况,具体的数据预处理可以参考之前的因子Demo。

投资组合:价值因子(HML)

# Independent-sort Bivariate Analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
===============================================================
+-------+--------+--------+--------+--------+--------+--------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff  |
+-------+--------+--------+--------+--------+--------+--------+
|   1   | 0.019  | 0.017  | 0.013  | 0.013  |  0.01  | -0.009 |
|       | 3.024  | 2.693  | 2.003  |  1.89  | 1.472  | -3.551 |
|   2   | 0.014  | 0.015  | 0.011  | 0.011  | 0.009  | -0.005 |
|       |  2.25  | 2.415  | 1.779  | 1.658  | 1.374  | -1.947 |
|   3   | 0.014  |  0.01  | 0.009  | 0.009  | 0.005  | -0.009 |
|       | 2.298  | 1.648  | 1.478  |  1.36  | 0.778  | -3.19  |
|   4   | 0.011  | 0.011  | 0.009  | 0.009  | 0.005  | -0.006 |
|       | 1.901  | 1.871  | 1.507  | 1.431  | 0.799  | -1.98  |
|   5   | 0.013  | 0.009  | 0.007  | 0.006  | 0.002  | -0.011 |
|       | 2.204  | 1.678  | 1.258  | 0.988  | 0.331  | -2.984 |
|  Diff | -0.007 | -0.008 | -0.006 | -0.007 | -0.008 | -0.001 |
|       | -1.876 | -2.628 | -1.819 | -2.117 | -2.389 | -0.446 |
+-------+--------+--------+--------+--------+--------+--------+# Risk-adjustment Using Market factor
risk_model = risk_premium['MKT']
risk_model = risk_model['2000':'2019']
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
===============================================================
+-------+--------+--------+--------+--------+--------+--------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff  |
+-------+--------+--------+--------+--------+--------+--------+
|   1   | 0.019  | 0.017  | 0.013  | 0.013  |  0.01  | -0.009 |
|       | 3.024  | 2.693  | 2.003  |  1.89  | 1.472  | -3.551 |
| alpha | 0.017  | 0.015  | 0.011  |  0.01  | 0.008  | -0.009 |
|       |  2.53  | 2.294  | 1.723  | 1.579  | 1.064  | -3.467 |
|   2   | 0.014  | 0.015  | 0.011  | 0.011  | 0.009  | -0.005 |
|       |  2.25  | 2.415  | 1.779  | 1.658  | 1.374  | -1.947 |
| alpha | 0.012  | 0.013  | 0.009  | 0.009  | 0.007  | -0.004 |
|       | 1.888  | 1.955  | 1.356  | 1.358  | 1.031  | -2.071 |
|   3   | 0.014  |  0.01  | 0.009  | 0.009  | 0.005  | -0.009 |
|       | 2.298  | 1.648  | 1.478  |  1.36  | 0.778  | -3.19  |
| alpha | 0.012  | 0.008  | 0.007  | 0.006  | 0.003  | -0.009 |
|       | 1.824  | 1.293  | 1.145  | 1.044  | 0.444  | -3.508 |
|   4   | 0.011  | 0.011  | 0.009  | 0.009  | 0.005  | -0.006 |
|       | 1.901  | 1.871  | 1.507  | 1.431  | 0.799  | -1.98  |
| alpha |  0.01  | 0.009  | 0.007  | 0.007  | 0.004  | -0.006 |
|       | 1.476  | 1.421  | 1.124  | 1.067  | 0.599  | -2.197 |
|   5   | 0.013  | 0.009  | 0.007  | 0.006  | 0.002  | -0.011 |
|       | 2.204  | 1.678  | 1.258  | 0.988  | 0.331  | -2.984 |
| alpha | 0.011  | 0.008  | 0.005  | 0.004  |  0.0   | -0.011 |
|       | 1.726  | 1.252  | 0.873  |  0.68  | 0.042  | -3.074 |
|  Diff | -0.007 | -0.008 | -0.006 | -0.007 | -0.008 | -0.001 |
|       | -1.876 | -2.628 | -1.819 | -2.117 | -2.389 | -0.446 |
| alpha | -0.005 | -0.007 | -0.005 | -0.006 | -0.007 | -0.002 |
|       | -1.847 | -2.257 | -1.383 | -1.603 | -1.851 | -0.792 |
+-------+--------+--------+--------+--------+--------+--------+
===============================================================

投资组合:盈利因子(RMW)

# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
===============================================================
+-------+--------+--------+--------+--------+--------+-------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff |
+-------+--------+--------+--------+--------+--------+-------+
|   1   | 0.014  | 0.017  | 0.021  | 0.023  |  0.02  | 0.006 |
|       | 1.683  | 2.197  | 2.712  | 3.026  | 2.519  | 2.308 |
|   2   | 0.014  | 0.015  | 0.017  | 0.018  | 0.019  | 0.005 |
|       | 1.702  | 1.895  | 2.228  | 2.604  | 2.567  | 1.699 |
|   3   | 0.008  | 0.011  | 0.012  | 0.016  | 0.018  |  0.01 |
|       | 1.091  | 1.373  | 1.712  | 2.246  | 2.624  | 3.775 |
|   4   | 0.008  | 0.011  |  0.01  | 0.014  | 0.016  | 0.008 |
|       | 1.002  | 1.442  | 1.468  | 2.109  | 2.305  |  2.41 |
|   5   | 0.004  | 0.009  | 0.008  |  0.01  | 0.016  | 0.012 |
|       | 0.565  | 1.271  | 1.257  | 1.613  | 2.417  | 3.234 |
|  Diff | -0.009 | -0.008 | -0.012 | -0.013 | -0.004 | 0.005 |
|       | -2.446 | -2.151 | -3.025 | -3.231 | -0.917 | 1.502 |
+-------+--------+--------+--------+--------+--------+-------+
===============================================================# Risk adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2004':'2019']
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
==============================================================
+-------+--------+--------+--------+--------+--------+-------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff |
+-------+--------+--------+--------+--------+--------+-------+
|   1   | 0.014  | 0.017  | 0.021  | 0.023  |  0.02  | 0.006 |
|       | 1.683  | 2.197  | 2.712  | 3.026  | 2.519  | 2.308 |
| alpha | 0.013  | 0.016  | 0.019  | 0.022  |  0.02  | 0.007 |
|       | 1.546  | 2.033  | 2.438  | 2.492  | 2.237  | 2.902 |
|   2   | 0.014  | 0.015  | 0.017  | 0.018  | 0.019  | 0.005 |
|       | 1.702  | 1.895  | 2.228  | 2.604  | 2.567  | 1.699 |
| alpha | 0.013  | 0.014  | 0.017  | 0.018  | 0.018  | 0.004 |
|       | 1.517  | 1.709  | 2.014  | 2.326  |  2.36  | 1.449 |
|   3   | 0.008  | 0.011  | 0.012  | 0.016  | 0.018  |  0.01 |
|       | 1.091  | 1.373  | 1.712  | 2.246  | 2.624  | 3.775 |
| alpha | 0.008  |  0.01  | 0.012  | 0.015  | 0.017  | 0.009 |
|       | 0.958  |  1.19  | 1.461  | 1.997  | 2.162  | 3.132 |
|   4   | 0.008  | 0.011  |  0.01  | 0.014  | 0.016  | 0.008 |
|       | 1.002  | 1.442  | 1.468  | 2.109  | 2.305  |  2.41 |
| alpha | 0.009  |  0.01  | 0.009  | 0.015  | 0.015  | 0.006 |
|       | 0.913  | 1.339  | 1.162  | 1.937  | 1.833  | 2.256 |
|   5   | 0.004  | 0.009  | 0.008  |  0.01  | 0.016  | 0.012 |
|       | 0.565  | 1.271  | 1.257  | 1.613  | 2.417  | 3.234 |
| alpha | 0.004  | 0.008  | 0.009  | 0.009  | 0.015  | 0.011 |
|       | 0.444  | 0.909  | 1.106  | 1.215  | 1.803  | 2.872 |
|  Diff | -0.009 | -0.008 | -0.012 | -0.013 | -0.004 | 0.005 |
|       | -2.446 | -2.151 | -3.025 | -3.231 | -0.917 | 1.502 |
| alpha | -0.008 | -0.008 | -0.01  | -0.012 | -0.005 | 0.004 |
|       | -1.86  | -2.15  | -2.315 | -2.652 | -0.856 |  0.91 |
+-------+--------+--------+--------+--------+--------+-------+
==============================================================

投资组合:投资因子(CMA)

# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
==============================================================
+-------+--------+--------+--------+--------+--------+-------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff |
+-------+--------+--------+--------+--------+--------+-------+
|   1   | 0.015  | 0.017  | 0.018  | 0.018  |  0.02  | 0.005 |
|       | 1.848  | 2.119  | 2.336  | 2.404  | 2.482  | 1.985 |
|   2   | 0.012  | 0.014  | 0.017  | 0.015  | 0.019  | 0.007 |
|       | 1.509  | 1.784  | 2.301  | 1.984  | 2.434  |  2.8  |
|   3   |  0.01  | 0.012  | 0.015  | 0.014  | 0.014  | 0.004 |
|       | 1.314  | 1.695  | 2.026  | 1.884  | 1.912  | 1.862 |
|   4   | 0.009  |  0.01  | 0.011  | 0.013  | 0.015  | 0.006 |
|       | 1.194  | 1.507  | 1.579  | 1.831  | 2.009  |  2.45 |
|   5   | 0.007  |  0.01  | 0.011  | 0.014  | 0.012  | 0.005 |
|       |  1.03  | 1.517  | 1.685  | 2.106  | 1.749  |  1.7  |
|  Diff | -0.008 | -0.007 | -0.008 | -0.005 | -0.007 |  0.0  |
|       | -1.902 | -1.646 | -1.897 | -1.213 | -1.771 | 0.088 |
+-------+--------+--------+--------+--------+--------+-------+
==============================================================# Factor adjustment
# Fama French 3 factors model adjust
# risk factor model
risk_model = risk_factor['2004':'2019'][['MKT', 'SMB','HML']]
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
=============================================================================================================================
+----------+--------------------+--------------------+--------------------+--------------------+--------------------+-------+
|  Group   | asset_growth_rate1 | asset_growth_rate2 | asset_growth_rate3 | asset_growth_rate4 | asset_growth_rate5 |  Diff |
+----------+--------------------+--------------------+--------------------+--------------------+--------------------+-------+
| Msmvttl1 |       0.015        |       0.017        |       0.018        |       0.018        |        0.02        | 0.005 |
|          |       1.848        |       2.119        |       2.336        |       2.404        |       2.482        | 1.985 |
|  alpha   |       0.014        |       0.016        |       0.017        |       0.017        |       0.019        | 0.005 |
|          |       1.655        |       1.951        |       2.203        |       2.159        |       2.157        | 1.959 |
| Msmvttl2 |       0.012        |       0.014        |       0.017        |       0.015        |       0.019        | 0.007 |
|          |       1.509        |       1.784        |       2.301        |       1.984        |       2.434        |  2.8  |
|  alpha   |       0.011        |       0.014        |       0.017        |       0.015        |       0.017        | 0.006 |
|          |       1.309        |       1.671        |       2.117        |       1.902        |       1.996        | 3.213 |
| Msmvttl3 |        0.01        |       0.012        |       0.015        |       0.014        |       0.014        | 0.004 |
|          |       1.314        |       1.695        |       2.026        |       1.884        |       1.912        | 1.862 |
|  alpha   |       0.009        |       0.011        |       0.015        |       0.013        |       0.013        | 0.004 |
|          |       1.134        |       1.451        |       1.814        |       1.713        |        1.54        | 1.349 |
| Msmvttl4 |       0.009        |        0.01        |       0.011        |       0.013        |       0.015        | 0.006 |
|          |       1.194        |       1.507        |       1.579        |       1.831        |       2.009        |  2.45 |
|  alpha   |       0.009        |        0.01        |        0.01        |       0.012        |       0.014        | 0.005 |
|          |       1.097        |        1.37        |       1.327        |       1.512        |       1.674        | 3.089 |
| Msmvttl5 |       0.007        |        0.01        |       0.011        |       0.014        |       0.012        | 0.005 |
|          |        1.03        |       1.517        |       1.685        |       2.106        |       1.749        |  1.7  |
|  alpha   |       0.007        |       0.009        |        0.01        |       0.013        |       0.012        | 0.005 |
|          |       0.871        |       1.241        |       1.281        |       1.599        |       1.382        | 1.714 |
|   Diff   |       -0.008       |       -0.007       |       -0.008       |       -0.005       |       -0.007       |  0.0  |
|          |       -1.902       |       -1.646       |       -1.897       |       -1.213       |       -1.771       | 0.088 |
|  alpha   |       -0.007       |       -0.006       |       -0.007       |       -0.004       |       -0.007       |  0.0  |
|          |       -1.97        |       -1.449       |       -1.592       |       -0.834       |       -1.414       |  0.12 |
+----------+--------------------+--------------------+--------------------+--------------------+--------------------+-------+
=============================================================================================================================
# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
==============================================================
+-------+--------+--------+--------+--------+--------+-------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff |
+-------+--------+--------+--------+--------+--------+-------+
|   1   | 0.015  | 0.017  | 0.018  | 0.018  |  0.02  | 0.005 |
|       | 1.848  | 2.119  | 2.336  | 2.404  | 2.482  | 1.985 |
|   2   | 0.012  | 0.014  | 0.017  | 0.015  | 0.019  | 0.007 |
|       | 1.509  | 1.784  | 2.301  | 1.984  | 2.434  |  2.8  |
|   3   |  0.01  | 0.012  | 0.015  | 0.014  | 0.014  | 0.004 |
|       | 1.314  | 1.695  | 2.026  | 1.884  | 1.912  | 1.862 |
|   4   | 0.009  |  0.01  | 0.011  | 0.013  | 0.015  | 0.006 |
|       | 1.194  | 1.507  | 1.579  | 1.831  | 2.009  |  2.45 |
|   5   | 0.007  |  0.01  | 0.011  | 0.014  | 0.012  | 0.005 |
|       |  1.03  | 1.517  | 1.685  | 2.106  | 1.749  |  1.7  |
|  Diff | -0.008 | -0.007 | -0.008 | -0.005 | -0.007 |  0.0  |
|       | -1.902 | -1.646 | -1.897 | -1.213 | -1.771 | 0.088 |
+-------+--------+--------+--------+--------+--------+-------+
==============================================================# Factor adjustment
# Fama French 3 factors model adjust
# risk factor model
risk_model = risk_factor['2004':'2019'][['MKT', 'SMB','HML']]
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
=============================================================================================================================
+----------+--------------------+--------------------+--------------------+--------------------+--------------------+-------+
|  Group   | asset_growth_rate1 | asset_growth_rate2 | asset_growth_rate3 | asset_growth_rate4 | asset_growth_rate5 |  Diff |
+----------+--------------------+--------------------+--------------------+--------------------+--------------------+-------+
| Msmvttl1 |       0.015        |       0.017        |       0.018        |       0.018        |        0.02        | 0.005 |
|          |       1.848        |       2.119        |       2.336        |       2.404        |       2.482        | 1.985 |
|  alpha   |       0.014        |       0.016        |       0.017        |       0.017        |       0.019        | 0.005 |
|          |       1.655        |       1.951        |       2.203        |       2.159        |       2.157        | 1.959 |
| Msmvttl2 |       0.012        |       0.014        |       0.017        |       0.015        |       0.019        | 0.007 |
|          |       1.509        |       1.784        |       2.301        |       1.984        |       2.434        |  2.8  |
|  alpha   |       0.011        |       0.014        |       0.017        |       0.015        |       0.017        | 0.006 |
|          |       1.309        |       1.671        |       2.117        |       1.902        |       1.996        | 3.213 |
| Msmvttl3 |        0.01        |       0.012        |       0.015        |       0.014        |       0.014        | 0.004 |
|          |       1.314        |       1.695        |       2.026        |       1.884        |       1.912        | 1.862 |
|  alpha   |       0.009        |       0.011        |       0.015        |       0.013        |       0.013        | 0.004 |
|          |       1.134        |       1.451        |       1.814        |       1.713        |        1.54        | 1.349 |
| Msmvttl4 |       0.009        |        0.01        |       0.011        |       0.013        |       0.015        | 0.006 |
|          |       1.194        |       1.507        |       1.579        |       1.831        |       2.009        |  2.45 |
|  alpha   |       0.009        |        0.01        |        0.01        |       0.012        |       0.014        | 0.005 |
|          |       1.097        |        1.37        |       1.327        |       1.512        |       1.674        | 3.089 |
| Msmvttl5 |       0.007        |        0.01        |       0.011        |       0.014        |       0.012        | 0.005 |
|          |        1.03        |       1.517        |       1.685        |       2.106        |       1.749        |  1.7  |
|  alpha   |       0.007        |       0.009        |        0.01        |       0.013        |       0.012        | 0.005 |
|          |       0.871        |       1.241        |       1.281        |       1.599        |       1.382        | 1.714 |
|   Diff   |       -0.008       |       -0.007       |       -0.008       |       -0.005       |       -0.007       |  0.0  |
|          |       -1.902       |       -1.646       |       -1.897       |       -1.213       |       -1.771       | 0.088 |
|  alpha   |       -0.007       |       -0.006       |       -0.007       |       -0.004       |       -0.007       |  0.0  |
|          |       -1.97        |       -1.449       |       -1.592       |       -0.834       |       -1.414       |  0.12 |
+----------+--------------------+--------------------+--------------------+--------------------+--------------------+-------+
=============================================================================================================================

投资组合:动量因子(MOM)

# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
==============================================================
+-------+--------+--------+--------+--------+--------+-------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff |
+-------+--------+--------+--------+--------+--------+-------+
|   1   | 0.012  | 0.015  | 0.014  | 0.015  | 0.013  | 0.001 |
|       | 1.781  | 2.256  |  2.24  | 2.234  | 1.916  | 0.467 |
|   2   |  0.01  | 0.013  | 0.012  | 0.012  | 0.011  |  0.0  |
|       | 1.599  | 2.074  | 1.873  | 1.836  | 1.613  |  0.14 |
|   3   | 0.009  | 0.009  | 0.009  | 0.011  |  0.01  | 0.001 |
|       |  1.42  | 1.514  | 1.447  | 1.711  |  1.58  | 0.329 |
|   4   | 0.007  | 0.008  |  0.01  | 0.011  | 0.008  | 0.002 |
|       | 1.064  | 1.401  | 1.735  | 1.831  | 1.378  | 0.492 |
|   5   | 0.006  | 0.008  | 0.009  | 0.008  | 0.009  | 0.003 |
|       | 1.002  | 1.395  |  1.58  | 1.403  |  1.67  |  0.99 |
|  Diff | -0.006 | -0.007 | -0.006 | -0.007 | -0.004 | 0.002 |
|       | -1.875 | -2.071 | -1.829 | -1.895 | -1.016 | 0.584 |
+-------+--------+--------+--------+--------+--------+-------+# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2000':'2019']
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
===============================================================
+-------+--------+--------+--------+--------+--------+--------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff  |
+-------+--------+--------+--------+--------+--------+--------+
|   1   | 0.012  | 0.015  | 0.014  | 0.015  | 0.013  | 0.001  |
|       | 1.781  | 2.256  |  2.24  | 2.234  | 1.916  | 0.467  |
| alpha | 0.012  | 0.014  | 0.013  | 0.014  | 0.013  | 0.002  |
|       | 1.645  | 1.907  | 2.051  | 1.991  | 1.656  | 0.512  |
|   2   |  0.01  | 0.013  | 0.012  | 0.012  | 0.011  |  0.0   |
|       | 1.599  | 2.074  | 1.873  | 1.836  | 1.613  |  0.14  |
| alpha |  0.01  | 0.013  | 0.012  | 0.011  |  0.01  |  -0.0  |
|       | 1.478  | 1.773  | 1.736  | 1.543  | 1.372  | -0.108 |
|   3   | 0.009  | 0.009  | 0.009  | 0.011  |  0.01  | 0.001  |
|       |  1.42  | 1.514  | 1.447  | 1.711  |  1.58  | 0.329  |
| alpha | 0.009  | 0.008  | 0.008  |  0.01  |  0.01  | 0.001  |
|       | 1.302  | 1.236  | 1.192  |  1.47  | 1.511  |  0.44  |
|   4   | 0.007  | 0.008  |  0.01  | 0.011  | 0.008  | 0.002  |
|       | 1.064  | 1.401  | 1.735  | 1.831  | 1.378  | 0.492  |
| alpha | 0.006  | 0.008  |  0.01  | 0.011  | 0.009  | 0.003  |
|       | 0.942  | 1.168  | 1.419  | 1.536  | 1.395  |  1.01  |
|   5   | 0.006  | 0.008  | 0.009  | 0.008  | 0.009  | 0.003  |
|       | 1.002  | 1.395  |  1.58  | 1.403  |  1.67  |  0.99  |
| alpha | 0.005  | 0.007  | 0.009  | 0.008  |  0.01  | 0.005  |
|       | 0.659  | 1.022  | 1.388  | 1.152  | 1.573  |  1.39  |
|  Diff | -0.006 | -0.007 | -0.006 | -0.007 | -0.004 | 0.002  |
|       | -1.875 | -2.071 | -1.829 | -1.895 | -1.016 | 0.584  |
| alpha | -0.007 | -0.006 | -0.004 | -0.007 | -0.003 | 0.004  |
|       | -2.139 | -1.876 | -1.244 | -1.586 | -0.629 | 0.993  |
+-------+--------+--------+--------+--------+--------+--------+

投资组合:换手率因子(Turnover)

# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
================================================================
+-------+--------+--------+--------+--------+--------+--------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff  |
+-------+--------+--------+--------+--------+--------+--------+
|   1   | 0.014  | 0.016  | 0.015  | 0.014  | 0.009  | -0.004 |
|       | 2.153  | 2.447  | 2.307  | 2.139  | 1.412  | -1.827 |
|   2   | 0.011  | 0.013  | 0.013  | 0.011  | 0.009  | -0.002 |
|       | 1.878  | 2.081  | 2.029  | 1.661  | 1.364  | -0.882 |
|   3   |  0.01  |  0.01  | 0.011  |  0.01  | 0.005  | -0.005 |
|       | 1.732  | 1.628  | 1.768  | 1.665  | 0.842  | -1.928 |
|   4   | 0.009  | 0.011  |  0.01  | 0.009  | 0.007  | -0.002 |
|       | 1.656  | 1.857  | 1.679  | 1.587  |  1.13  | -0.723 |
|   5   | 0.008  | 0.011  |  0.01  | 0.009  | 0.005  | -0.003 |
|       | 1.515  | 2.045  | 1.935  |  1.63  | 0.854  | -1.275 |
|  Diff | -0.005 | -0.005 | -0.004 | -0.005 | -0.005 | 0.001  |
|       | -1.561 | -1.536 | -1.264 | -1.361 | -1.333 | 0.367  |
+-------+--------+--------+--------+--------+--------+--------+
================================================================# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2000':'2019']
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
===============================================================
+-------+--------+--------+--------+--------+--------+--------+
| Group |   1    |   2    |   3    |   4    |   5    |  Diff  |
+-------+--------+--------+--------+--------+--------+--------+
|   1   | 0.014  | 0.016  | 0.015  | 0.014  | 0.009  | -0.004 |
|       | 2.153  | 2.447  | 2.307  | 2.139  | 1.412  | -1.827 |
| alpha | 0.013  | 0.016  | 0.014  | 0.014  | 0.008  | -0.005 |
|       | 1.947  | 2.153  | 1.983  | 2.019  | 1.183  | -2.608 |
|   2   | 0.011  | 0.013  | 0.013  | 0.011  | 0.009  | -0.002 |
|       | 1.878  | 2.081  | 2.029  | 1.661  | 1.364  | -0.882 |
| alpha | 0.012  | 0.013  | 0.012  |  0.01  | 0.009  | -0.003 |
|       | 1.597  | 1.925  | 1.849  | 1.531  | 1.173  | -1.764 |
|   3   |  0.01  |  0.01  | 0.011  |  0.01  | 0.005  | -0.005 |
|       | 1.732  | 1.628  | 1.768  | 1.665  | 0.842  | -1.928 |
| alpha | 0.011  | 0.009  |  0.01  | 0.009  | 0.004  | -0.006 |
|       |  1.56  | 1.429  | 1.591  | 1.475  | 0.634  | -3.213 |
|   4   | 0.009  | 0.011  |  0.01  | 0.009  | 0.007  | -0.002 |
|       | 1.656  | 1.857  | 1.679  | 1.587  |  1.13  | -0.723 |
| alpha |  0.01  | 0.011  | 0.009  | 0.008  | 0.007  | -0.003 |
|       | 1.404  | 1.606  | 1.458  | 1.334  | 0.964  | -1.437 |
|   5   | 0.008  | 0.011  |  0.01  | 0.009  | 0.005  | -0.003 |
|       | 1.515  | 2.045  | 1.935  |  1.63  | 0.854  | -1.275 |
| alpha | 0.009  | 0.011  | 0.011  | 0.009  | 0.005  | -0.004 |
|       |  1.23  | 1.704  | 1.651  | 1.361  | 0.713  | -1.914 |
|  Diff | -0.005 | -0.005 | -0.004 | -0.005 | -0.005 | 0.001  |
|       | -1.561 | -1.536 | -1.264 | -1.361 | -1.333 | 0.367  |
| alpha | -0.004 | -0.005 | -0.004 | -0.005 | -0.003 | 0.001  |
|       | -1.057 | -1.349 | -0.986 | -1.143 | -0.832 | 0.537  |
+-------+--------+--------+--------+--------+--------+--------+
===============================================================

投资组合:流动性因子(Liquidity)

# Independent-sort Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=3)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
====================================================
+-------+-------+-------+--------+--------+--------+
| Group |   1   |   2   |   3    |   4    |  Diff  |
+-------+-------+-------+--------+--------+--------+
|   1   | 0.004 | 0.007 | 0.011  | 0.018  | 0.013  |
|       | 0.675 |  1.12 | 1.609  |  2.66  | 5.671  |
|   2   | 0.006 | 0.008 |  0.01  | 0.014  | 0.008  |
|       | 0.926 | 1.188 | 1.627  | 2.386  | 3.765  |
|   3   | 0.004 | 0.008 | 0.011  | 0.012  | 0.007  |
|       | 0.711 | 1.318 | 1.805  | 2.079  | 3.194  |
|   4   | 0.008 |  0.01 |  0.01  |  0.01  | 0.002  |
|       | 1.459 | 1.711 |  1.83  | 1.644  | 0.484  |
|  Diff | 0.003 | 0.002 | -0.001 | -0.008 | -0.012 |
|       | 1.026 | 0.715 | -0.26  | -2.397 | -3.497 |
+-------+-------+-------+--------+--------+--------+
====================================================# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2000':'2019']
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
====================================================
+-------+-------+-------+--------+--------+--------+
| Group |   1   |   2   |   3    |   4    |  Diff  |
+-------+-------+-------+--------+--------+--------+
|   1   | 0.004 | 0.007 | 0.011  | 0.018  | 0.013  |
|       | 0.675 |  1.12 | 1.609  |  2.66  | 5.671  |
| alpha | 0.003 | 0.006 |  0.01  | 0.018  | 0.015  |
|       | 0.385 | 0.852 | 1.387  | 2.499  |  7.72  |
|   2   | 0.006 | 0.008 |  0.01  | 0.014  | 0.008  |
|       | 0.926 | 1.188 | 1.627  | 2.386  | 3.765  |
| alpha | 0.004 | 0.007 |  0.01  | 0.015  | 0.011  |
|       | 0.608 | 0.947 | 1.482  | 2.198  | 6.722  |
|   3   | 0.004 | 0.008 | 0.011  | 0.012  | 0.007  |
|       | 0.711 | 1.318 | 1.805  | 2.079  | 3.194  |
| alpha | 0.004 | 0.007 |  0.01  | 0.013  | 0.009  |
|       | 0.572 | 1.119 |  1.53  | 1.959  | 4.325  |
|   4   | 0.008 |  0.01 |  0.01  |  0.01  | 0.002  |
|       | 1.459 | 1.711 |  1.83  | 1.644  | 0.484  |
| alpha | 0.008 | 0.009 |  0.01  | 0.011  | 0.003  |
|       | 1.179 | 1.393 | 1.622  | 1.569  | 0.865  |
|  Diff | 0.003 | 0.002 | -0.001 | -0.008 | -0.012 |
|       | 1.026 | 0.715 | -0.26  | -2.397 | -3.497 |
| alpha | 0.005 | 0.003 | 0.001  | -0.006 | -0.011 |
|       | 1.404 | 1.009 | 0.164  | -1.97  | -3.135 |
+-------+-------+-------+--------+--------+--------+
====================================================

投资组合:偏度因子(skewness)

Total Skewness

# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
====================================================================
+-------+---------+---------+---------+---------+---------+--------+
| Group |    1    |    2    |    3    |    4    |    5    |  Diff  |
+-------+---------+---------+---------+---------+---------+--------+
|   1   |  0.024  |  0.022  |  0.021  |  0.023  |  0.025  | 0.001  |
|       |  14.565 |  13.84  |  13.484 |  14.584 |  14.149 | 0.323  |
|   2   |  0.008  |  0.013  |   0.01  |  0.012  |  0.012  | 0.004  |
|       |  5.627  |  9.234  |  6.737  |  8.375  |  7.731  | 1.911  |
|   3   |  0.007  |  0.006  |  0.007  |  0.009  |  0.008  |  0.0   |
|       |  4.488  |  4.209  |  4.475  |  6.156  |  5.395  | 0.111  |
|   4   |  0.004  |  0.006  |  0.006  |  0.004  |  0.006  | 0.001  |
|       |  2.697  |  3.714  |  3.905  |  2.497  |   3.58  | 0.535  |
|   5   |  -0.003 |  -0.004 |  -0.003 |  -0.003 |  -0.002 |  0.0   |
|       |  -1.843 |  -2.713 |  -1.823 |  -2.029 |  -1.567 | 0.228  |
|  Diff |  -0.027 |  -0.026 |  -0.024 |  -0.026 |  -0.027 |  -0.0  |
|       | -11.849 | -11.725 | -10.724 | -11.715 | -12.268 | -0.094 |
+-------+---------+---------+---------+---------+---------+--------+
====================================================================# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2000':'2019']
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
===================================================================
+-------+---------+---------+--------+---------+---------+--------+
| Group |    1    |    2    |   3    |    4    |    5    |  Diff  |
+-------+---------+---------+--------+---------+---------+--------+
|   1   |  0.026  |  0.023  | 0.022  |  0.026  |  0.026  |  0.0   |
|       |  12.803 |  14.141 | 13.638 |  16.104 |  15.155 | 0.183  |
| alpha |  0.026  |  0.023  | 0.022  |  0.025  |  0.026  |  0.0   |
|       |  10.87  |  10.593 | 10.481 |  11.664 |  11.215 | 0.099  |
|   2   |   0.01  |  0.013  | 0.011  |  0.012  |  0.013  | 0.003  |
|       |  6.505  |  9.595  | 6.935  |  8.557  |  8.474  |  1.51  |
| alpha |   0.01  |  0.013  | 0.011  |  0.012  |  0.013  | 0.003  |
|       |  5.658  |  8.328  |  6.28  |  8.797  |  7.819  | 1.078  |
|   3   |  0.008  |  0.007  | 0.007  |   0.01  |  0.008  |  0.0   |
|       |  4.625  |  4.855  | 4.591  |  6.799  |  5.666  | 0.123  |
| alpha |  0.007  |  0.007  | 0.007  |  0.009  |  0.008  | 0.001  |
|       |  4.946  |   4.67  | 6.211  |  5.793  |  6.825  | 0.448  |
|   4   |  0.004  |  0.006  | 0.007  |  0.003  |  0.005  | 0.001  |
|       |  2.596  |  4.007  | 4.413  |  2.268  |  3.239  | 0.413  |
| alpha |  0.004  |  0.007  | 0.007  |  0.004  |  0.006  | 0.002  |
|       |  2.351  |  4.104  | 3.081  |   2.18  |  3.105  | 0.781  |
|   5   |  -0.003 |  -0.005 | -0.003 |  -0.003 |  -0.003 |  0.0   |
|       |  -1.882 |  -3.172 | -1.897 |  -2.287 |  -2.015 | 0.007  |
| alpha |  -0.003 |  -0.005 | -0.003 |  -0.004 |  -0.003 |  -0.0  |
|       |  -1.799 |  -2.836 | -1.467 |  -3.032 |  -1.838 | -0.008 |
|  Diff |  -0.029 |  -0.028 | -0.025 |  -0.029 |  -0.029 |  -0.0  |
|       | -11.138 | -12.246 | -10.82 | -13.018 | -13.407 | -0.142 |
| alpha |  -0.029 |  -0.028 | -0.025 |  -0.029 |  -0.029 |  -0.0  |
|       | -10.215 | -10.218 | -7.54  | -12.935 |  -9.892 | -0.111 |
+-------+---------+---------+--------+---------+---------+--------+
===================================================================

Coskewness

# Bivariate analysis
bi_2 = Bivariate(np.array(test_data_2), number=4)
bi_2.average_by_time()
bi_2.summary_and_test()
bi_2.print_summary_by_time()
bi_2.print_summary()
==================================================================
+-------+---------+---------+--------+--------+---------+--------+
| Group |    1    |    2    |   3    |   4    |    5    |  Diff  |
+-------+---------+---------+--------+--------+---------+--------+
|   1   |  0.022  |  0.022  | 0.023  | 0.022  |  0.025  | 0.003  |
|       |  14.748 |  13.599 | 15.127 | 13.191 |  13.98  | 1.465  |
|   2   |  0.009  |  0.012  | 0.009  | 0.011  |  0.013  | 0.004  |
|       |  6.551  |  8.696  | 5.983  | 7.881  |  9.526  | 1.958  |
|   3   |  0.007  |  0.008  | 0.007  | 0.008  |  0.006  | -0.001 |
|       |  4.559  |  4.966  | 4.612  | 5.373  |  4.528  | -0.26  |
|   4   |  0.006  |  0.005  | 0.004  | 0.005  |  0.006  |  0.0   |
|       |  3.778  |  2.985  | 2.629  | 3.513  |  3.853  |  0.02  |
|   5   |  -0.002 |  -0.004 | -0.002 | -0.004 |  -0.002 |  0.0   |
|       |  -1.129 |  -2.603 | -1.222 | -2.493 |  -1.143 | 0.011  |
|  Diff |  -0.024 |  -0.026 | -0.025 | -0.026 |  -0.027 | -0.003 |
|       | -11.291 | -11.861 | -11.57 | -11.34 | -11.015 | -1.08  |
+-------+---------+---------+--------+--------+---------+--------+
==================================================================# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2000':'2019']
bi_2.factor_adjustment(risk_model)
bi_2.print_summary()
==================================================================
+-------+---------+---------+--------+--------+---------+--------+
| Group |    1    |    2    |   3    |   4    |    5    |  Diff  |
+-------+---------+---------+--------+--------+---------+--------+
|   1   |  0.022  |  0.022  | 0.023  | 0.022  |  0.025  | 0.003  |
|       |  14.748 |  13.599 | 15.127 | 13.191 |  13.98  | 1.465  |
| alpha |  0.022  |  0.022  | 0.023  | 0.022  |  0.026  | 0.003  |
|       |  11.225 |  11.137 | 10.08  | 9.801  |  9.568  | 1.311  |
|   2   |  0.009  |  0.012  | 0.009  | 0.011  |  0.013  | 0.004  |
|       |  6.551  |  8.696  | 5.983  | 7.881  |  9.526  | 1.958  |
| alpha |   0.01  |  0.012  | 0.009  |  0.01  |  0.013  | 0.003  |
|       |  7.241  |  8.351  | 5.363  | 8.371  |  8.967  |  1.73  |
|   3   |  0.007  |  0.008  | 0.007  | 0.008  |  0.006  | -0.001 |
|       |  4.559  |  4.966  | 4.612  | 5.373  |  4.528  | -0.26  |
| alpha |  0.008  |  0.007  | 0.006  | 0.007  |  0.007  | -0.001 |
|       |  4.378  |  5.254  | 4.569  | 4.778  |  3.691  | -0.335 |
|   4   |  0.006  |  0.005  | 0.004  | 0.005  |  0.006  |  0.0   |
|       |  3.778  |  2.985  | 2.629  | 3.513  |  3.853  |  0.02  |
| alpha |  0.007  |  0.005  | 0.004  | 0.004  |  0.007  | 0.001  |
|       |   3.74  |  2.782  | 2.635  | 3.258  |  3.772  | 0.382  |
|   5   |  -0.002 |  -0.004 | -0.002 | -0.004 |  -0.002 |  0.0   |
|       |  -1.129 |  -2.603 | -1.222 | -2.493 |  -1.143 | 0.011  |
| alpha |  -0.001 |  -0.004 | -0.002 | -0.005 |  -0.001 |  0.0   |
|       |  -0.81  |  -2.895 | -1.374 | -2.329 |  -0.753 | 0.099  |
|  Diff |  -0.024 |  -0.026 | -0.025 | -0.026 |  -0.027 | -0.003 |
|       | -11.291 | -11.861 | -11.57 | -11.34 | -11.015 | -1.08  |
| alpha |  -0.023 |  -0.026 | -0.025 | -0.027 |  -0.027 | -0.003 |
|       |  -8.296 | -11.797 | -8.175 | -9.631 |  -8.631 | -1.096 |
+-------+---------+---------+--------+--------+---------+--------+
==================================================================

Idiosycratic Skewness

# Bivariate analysis
bi_3 = Bivariate(np.array(test_data_3), number=4)
bi_3.average_by_time()
bi_3.summary_and_test()
bi_3.print_summary_by_time()
bi_3.print_summary()
=====================================================================
+-------+---------+---------+---------+---------+---------+--------+
| Group |    1    |    2    |    3    |    4    |    5    |  Diff  |
+-------+---------+---------+---------+---------+---------+--------+
|   1   |  0.023  |  0.021  |  0.026  |   0.02  |  0.026  | 0.003  |
|       |  12.798 |  13.936 |  15.498 |  13.077 |  13.947 |  1.32  |
|   2   |  0.012  |  0.011  |  0.012  |   0.01  |   0.01  | -0.002 |
|       |  7.916  |  7.402  |  8.251  |  7.194  |  6.609  | -1.04  |
|   3   |  0.008  |  0.009  |  0.008  |  0.004  |  0.008  |  -0.0  |
|       |  5.345  |  6.356  |  4.972  |  2.965  |  5.339  | -0.032 |
|   4   |  0.005  |  0.003  |  0.006  |  0.007  |  0.005  |  0.0   |
|       |  3.067  |  2.279  |  3.414  |  4.156  |  3.488  | 0.205  |
|   5   |  -0.003 |  -0.002 |  -0.002 |  -0.003 |  -0.003 |  -0.0  |
|       |  -2.029 |  -1.535 |  -1.256 |  -1.865 |  -2.183 | -0.138 |
|  Diff |  -0.026 |  -0.023 |  -0.028 |  -0.023 |  -0.029 | -0.003 |
|       | -10.992 | -10.301 | -12.114 | -10.841 | -12.072 | -1.123 |
+-------+---------+---------+---------+---------+---------+--------+# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model['2000':'2019']
bi_3.factor_adjustment(risk_model)
bi_3.print_summary()
====================================================================
+-------+---------+---------+---------+---------+---------+--------+
| Group |    1    |    2    |    3    |    4    |    5    |  Diff  |
+-------+---------+---------+---------+---------+---------+--------+
|   1   |  0.023  |  0.021  |  0.026  |   0.02  |  0.026  | 0.003  |
|       |  12.798 |  13.936 |  15.498 |  13.077 |  13.947 |  1.32  |
| alpha |  0.023  |   0.02  |  0.026  |   0.02  |  0.026  | 0.003  |
|       |  9.487  |  13.54  |  12.17  |  10.378 |   8.92  | 1.256  |
|   2   |  0.012  |  0.011  |  0.012  |   0.01  |   0.01  | -0.002 |
|       |  7.916  |  7.402  |  8.251  |  7.194  |  6.609  | -1.04  |
| alpha |  0.012  |  0.011  |  0.012  |  0.011  |  0.009  | -0.002 |
|       |  7.981  |  6.271  |  7.674  |  5.908  |  6.248  | -1.234 |
|   3   |  0.008  |  0.009  |  0.008  |  0.004  |  0.008  |  -0.0  |
|       |  5.345  |  6.356  |  4.972  |  2.965  |  5.339  | -0.032 |
| alpha |  0.008  |  0.009  |  0.007  |  0.005  |  0.007  | -0.001 |
|       |   4.75  |  6.149  |  4.293  |  3.236  |  5.673  | -0.338 |
|   4   |  0.005  |  0.003  |  0.006  |  0.007  |  0.005  |  0.0   |
|       |  3.067  |  2.279  |  3.414  |  4.156  |  3.488  | 0.205  |
| alpha |  0.005  |  0.004  |  0.006  |  0.006  |  0.006  | 0.001  |
|       |  2.598  |   2.4   |  3.689  |  2.833  |  4.091  | 0.538  |
|   5   |  -0.003 |  -0.002 |  -0.002 |  -0.003 |  -0.003 |  -0.0  |
|       |  -2.029 |  -1.535 |  -1.256 |  -1.865 |  -2.183 | -0.138 |
| alpha |  -0.004 |  -0.002 |  -0.002 |  -0.003 |  -0.003 |  0.0   |
|       |  -2.699 |  -1.615 |  -1.436 |  -1.45  |  -2.196 | 0.156  |
|  Diff |  -0.026 |  -0.023 |  -0.028 |  -0.023 |  -0.029 | -0.003 |
|       | -10.992 | -10.301 | -12.114 | -10.841 | -12.072 | -1.123 |
| alpha |  -0.027 |  -0.023 |  -0.028 |  -0.023 |  -0.029 | -0.002 |
|       |  -9.37  |  -9.835 | -11.551 |  -8.126 |  -7.987 | -0.823 |
+-------+---------+---------+---------+---------+---------+--------+
====================================================================

投资组合:波动率因子(volatility)

Total volatility

# Bivariate analysis
bi_1 = Bivariate(np.array(test_data_1), number=4)
bi_1.average_by_time()
bi_1.summary_and_test()
bi_1.print_summary_by_time()
bi_1.print_summary()
=================================================================
+-------+--------+--------+---------+--------+---------+--------+
| Group |   1    |   2    |    3    |   4    |    5    |  Diff  |
+-------+--------+--------+---------+--------+---------+--------+
|   1   | 0.024  | 0.026  |  0.021  | 0.022  |  0.024  |  -0.0  |
|       | 13.854 | 14.019 |  13.417 | 13.479 |  14.148 | -0.181 |
|   2   |  0.01  |  0.01  |  0.013  | 0.011  |  0.011  | 0.001  |
|       | 7.093  | 6.576  |  9.397  | 7.681  |  7.068  | 0.416  |
|   3   | 0.006  | 0.009  |  0.008  | 0.005  |  0.007  | 0.001  |
|       | 4.114  | 6.551  |  5.156  | 3.951  |   5.56  | 0.411  |
|   4   | 0.004  | 0.003  |  0.005  | 0.006  |  0.008  | 0.004  |
|       | 2.283  | 2.044  |  3.007  | 3.804  |  4.639  | 1.377  |
|   5   | -0.001 | -0.006 |  -0.005 |  -0.0  |  -0.003 | -0.002 |
|       | -0.501 | -3.827 |  -3.517 | -0.287 |  -1.802 | -0.884 |
|  Diff | -0.025 | -0.032 |  -0.026 | -0.022 |  -0.026 | -0.001 |
|       | -10.79 | -13.72 | -12.341 | -9.892 | -12.785 | -0.487 |
+-------+--------+--------+---------+--------+---------+--------+
=================================================================# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model.loc[test_data_1['Date_merge'].unique()]
bi_1.factor_adjustment(risk_model)
bi_1.print_summary()
==================================================================
+-------+--------+---------+---------+--------+---------+--------+
| Group |   1    |    2    |    3    |   4    |    5    |  Diff  |
+-------+--------+---------+---------+--------+---------+--------+
|   1   | 0.024  |  0.026  |  0.021  | 0.022  |  0.024  |  -0.0  |
|       | 13.854 |  14.019 |  13.417 | 13.479 |  14.148 | -0.181 |
| alpha | 0.024  |  0.025  |  0.021  | 0.022  |  0.024  |  -0.0  |
|       | 10.259 |  8.958  |  9.653  | 11.34  |  12.171 | -0.189 |
|   2   |  0.01  |   0.01  |  0.013  | 0.011  |  0.011  | 0.001  |
|       | 7.093  |  6.576  |  9.397  | 7.681  |  7.068  | 0.416  |
| alpha | 0.009  |   0.01  |  0.013  | 0.011  |  0.011  | 0.001  |
|       | 6.632  |  5.461  |  7.061  | 6.417  |  6.671  | 0.537  |
|   3   | 0.006  |  0.009  |  0.008  | 0.005  |  0.007  | 0.001  |
|       | 4.114  |  6.551  |  5.156  | 3.951  |   5.56  | 0.411  |
| alpha | 0.006  |  0.009  |  0.007  | 0.006  |  0.007  | 0.001  |
|       |  3.57  |  7.651  |  4.941  | 4.278  |  4.117  | 0.355  |
|   4   | 0.004  |  0.003  |  0.005  | 0.006  |  0.008  | 0.004  |
|       | 2.283  |  2.044  |  3.007  | 3.804  |  4.639  | 1.377  |
| alpha | 0.005  |  0.003  |  0.005  | 0.006  |  0.008  | 0.003  |
|       |  2.02  |  2.316  |  2.984  | 3.791  |  3.951  | 1.399  |
|   5   | -0.001 |  -0.006 |  -0.005 |  -0.0  |  -0.003 | -0.002 |
|       | -0.501 |  -3.827 |  -3.517 | -0.287 |  -1.802 | -0.884 |
| alpha | -0.001 |  -0.007 |  -0.005 |  0.0   |  -0.003 | -0.002 |
|       | -0.542 |  -3.953 |  -3.285 | 0.046  |  -2.47  | -1.071 |
|  Diff | -0.025 |  -0.032 |  -0.026 | -0.022 |  -0.026 | -0.001 |
|       | -10.79 |  -13.72 | -12.341 | -9.892 | -12.785 | -0.487 |
| alpha | -0.025 |  -0.032 |  -0.026 | -0.022 |  -0.026 | -0.001 |
|       | -8.186 | -10.372 |  -8.567 | -8.355 | -12.049 | -0.471 |
+-------+--------+---------+---------+--------+---------+--------+
==================================================================

Idiosycratic Voaltility

# Bivariate analysis
bi_2 = Bivariate(np.array(test_data_2), number=4)
bi_2.average_by_time()
bi_2.summary_and_test()
bi_2.print_summary_by_time()
bi_2.print_summary()
==================================================================
+-------+---------+--------+---------+--------+---------+--------+
| Group |    1    |   2    |    3    |   4    |    5    |  Diff  |
+-------+---------+--------+---------+--------+---------+--------+
|   1   |  0.025  | 0.021  |  0.023  | 0.022  |  0.025  | -0.001 |
|       |  13.38  | 12.289 |  12.749 | 12.311 |  15.666 | -0.34  |
|   2   |   0.01  | 0.009  |  0.012  | 0.011  |  0.011  | 0.001  |
|       |  7.286  | 6.693  |  8.082  | 8.541  |  8.022  | 0.514  |
|   3   |  0.006  | 0.006  |  0.007  | 0.008  |  0.008  | 0.002  |
|       |  4.009  | 4.115  |  5.047  | 5.496  |  5.562  | 0.928  |
|   4   |  0.005  | 0.008  |  0.005  | 0.003  |  0.006  | 0.002  |
|       |  3.072  | 4.216  |  2.919  | 1.984  |  4.165  | 0.852  |
|   5   |  -0.003 | -0.003 |  -0.004 | -0.001 |  -0.003 |  -0.0  |
|       |  -2.12  | -1.627 |  -2.343 | -0.898 |  -2.162 | -0.012 |
|  Diff |  -0.028 | -0.024 |  -0.027 | -0.023 |  -0.028 | 0.001  |
|       | -11.514 | -9.464 | -11.654 | -9.987 | -13.271 |  0.25  |
+-------+---------+--------+---------+--------+---------+--------+
==================================================================# Risk Adjustment
risk_model = risk_premium[['MKT', 'SMB', 'HML']]
risk_model = risk_model.loc[test_data_2['Date_merge'].unique()]
bi_2.factor_adjustment(risk_model)
bi_2.print_summary()
==================================================================
+-------+---------+--------+---------+--------+---------+--------+
| Group |    1    |   2    |    3    |   4    |    5    |  Diff  |
+-------+---------+--------+---------+--------+---------+--------+
|   1   |  0.025  | 0.021  |  0.023  | 0.022  |  0.025  | -0.001 |
|       |  13.38  | 12.289 |  12.749 | 12.311 |  15.666 | -0.34  |
| alpha |  0.025  | 0.022  |  0.023  | 0.021  |  0.025  |  -0.0  |
|       |  9.763  | 9.203  |  8.447  | 11.555 |  10.599 | -0.056 |
|   2   |   0.01  | 0.009  |  0.012  | 0.011  |  0.011  | 0.001  |
|       |  7.286  | 6.693  |  8.082  | 8.541  |  8.022  | 0.514  |
| alpha |  0.009  | 0.009  |  0.013  | 0.011  |  0.011  | 0.002  |
|       |  6.647  | 5.971  |  7.189  | 8.442  |  10.108 | 1.312  |
|   3   |  0.006  | 0.006  |  0.007  | 0.008  |  0.008  | 0.002  |
|       |  4.009  | 4.115  |  5.047  | 5.496  |  5.562  | 0.928  |
| alpha |  0.006  | 0.005  |  0.007  | 0.009  |  0.008  | 0.002  |
|       |  4.377  | 4.991  |  4.854  | 6.411  |   5.54  | 1.084  |
|   4   |  0.005  | 0.008  |  0.005  | 0.003  |  0.006  | 0.002  |
|       |  3.072  | 4.216  |  2.919  | 1.984  |  4.165  | 0.852  |
| alpha |  0.005  | 0.008  |  0.004  | 0.003  |  0.007  | 0.002  |
|       |  2.796  | 3.946  |  2.612  | 1.684  |  3.852  | 1.027  |
|   5   |  -0.003 | -0.003 |  -0.004 | -0.001 |  -0.003 |  -0.0  |
|       |  -2.12  | -1.627 |  -2.343 | -0.898 |  -2.162 | -0.012 |
| alpha |  -0.003 | -0.003 |  -0.003 | -0.001 |  -0.004 |  -0.0  |
|       |  -2.782 | -1.515 |  -1.966 | -0.759 |  -2.726 | -0.234 |
|  Diff |  -0.028 | -0.024 |  -0.027 | -0.023 |  -0.028 | 0.001  |
|       | -11.514 | -9.464 | -11.654 | -9.987 | -13.271 |  0.25  |
| alpha |  -0.028 | -0.025 |  -0.026 | -0.023 |  -0.029 |  -0.0  |
|       |  -9.507 | -6.88  |  -8.776 | -11.24 | -10.372 | -0.069 |
+-------+---------+--------+---------+--------+---------+--------+
==================================================================

投资组合的风险因子调整——投资组合分析(EAP.portfolio_analysis)相关推荐

  1. 市场因子(Market Factor)——投资组合分析(EAP.portfolio_analysis)

    实证资产定价(Empirical asset pricing)已经发布于Github. 包的具体用法(Documentation)博主将会陆续在CSDN中详细介绍. Github: GitHub - ...

  2. 投资组合分析:portfolio_analysis.Tangenvy_portfolio(切点组合)

    实证资产定价(Empirical asset pricing)已经发布于Github和Pypi. 包的具体用法(Documentation)博主将会陆续在CSDN中详细介绍,也可以通过Pypi直接查看 ...

  3. 投资组合风险收益率公式_投资组合分析的基础收益和亏损

    投资组合风险收益率公式 In this story, we are going to do some basic portfolio returns analysis in python. 在这个故事 ...

  4. 盈利因子(Profitability factor)——投资组合分析(EAP.portfolio_analysis)

    本文根据Bail et al.的著作Empirical Asset Pricing编写相关程序,投资组合分析的模块是EAP.portfolio_analysis.本文的Package已发布于Githu ...

  5. 投资组合分析:EAP.portfolio_analysis

    投资组合分析是实证资产定价中最常用的工具之一.它的主要用途是研究因子对资产价格的影响,主要方法是通过构建投资组合(portfolios)和投资组合差分(differenced portfolios), ...

  6. 使用Python进行交易策略和投资组合分析

    我们将在本文中衡量交易策略的表现.并将开发一个简单的动量交易策略,它将使用四种资产类别:债券.股票和房地产.这些资产类别的相关性很低,这使得它们成为了极佳的风险平衡选择. 动量交易策略 这个策略是基于 ...

  7. Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)

    最近我们被客户要求撰写关于风险价值(VaR)的研究报告,包括一些图形和统计输出. 如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险. 金融和投资组合风险管理中 ...

  8. VaR模型中的风险因子和估值框架

    在一个大型的组合中,有成千上万只不同的证券,但不同证券的价格可能受到同样的因素所驱动,比如同一个国家的债券几乎都受到该国的基准利率所影响. 为了简化VaR的计算,通常将那些最根本的因素挑选出来,这些因 ...

  9. 有效前沿和最优投资组合matlab,matlab 实验名称:投资组合分析 实验性质:综合性和研究探索性 实 联合开发网 - pudn.com...

    matlab 所属分类:matlab例程 开发工具:matlab 文件大小:5918KB 下载次数:30 上传日期:2017-12-27 13:31:24 上 传 者:waffle 说明:  实验名称 ...

最新文章

  1. LeetCode--495
  2. Verilog 中的 ^ 的用法
  3. 基于MATLAB的SUI信道模型的理论分析与仿真
  4. F#基础教程 大纲
  5. 工业以太网交换机:核心优点解析
  6. Lovesource博士:或者我是如何学会不再担心和热爱开放的
  7. php简化URL路径,thinkphp框架实现路由重定义简化url访问地址的方法分析
  8. 中冠百年|到了30岁应该如何增加收入?
  9. 当年发明“熊猫烧香”病毒的天才,如今怎么样了?
  10. linux系统运行3dmax,Linux下3D桌面的效果的实现
  11. PROFINET通信基础知识
  12. 工字型钢弹性截面模量计算公式_截面模量计算方法
  13. 1分钟让你的App 适配 锤子OneStep
  14. UI自动化辅助工具Inspect
  15. FTP上传文件提示550错误原因分析。
  16. mysql 查询最多的_MySQL中用通用查询日志找出查询次数最多的语句的教程
  17. execjs安装及相关问题解决
  18. JAVA中Object转String
  19. python关于re模块(正则表达式)
  20. C++如何实现猜数游戏

热门文章

  1. scroll滚动性能优化
  2. 利用python求解规划问题
  3. 高人气笔记本电脑推荐,购机必看
  4. Win7下,Office 2010和Adobe Acrobat Professional 8.1不兼容:PDFMaker文件遗失
  5. 教师节漫画,戳中泪点!老师们节日快乐
  6. C语言编程验证卡布列克,C趣味程序百例(26)卡布列克常数
  7. C语言编程验证卡布列克,C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...
  8. 超实用CSS技巧总结(1)——背景和边框
  9. 三年级计算机课教案,三年级微机课教案
  10. element ui 的引入