Commit d6bb6e38 authored by Dr.李's avatar Dr.李

update example

parent 459abdd1
......@@ -9,6 +9,7 @@ from alphamind.data.engines.sqlengine import SqlEngine
from alphamind.analysis.factoranalysis import factor_analysis
from alphamind.analysis.factoranalysis import er_portfolio_analysis
from alphamind.analysis.quantileanalysis import quantile_analysis
from alphamind.analysis.quantileanalysis import er_quantile_analysis
from alphamind.data.engines.universe import Universe
from alphamind.data.processing import factor_processing
from alphamind.portfolio.constraints import Constraints
......@@ -16,6 +17,9 @@ from alphamind.portfolio.constraints import Constraints
from alphamind.data.engines.sqlengine import risk_styles
from alphamind.data.engines.sqlengine import industry_styles
from alphamind.data.engines.sqlengine import macro_styles
from alphamind.data.winsorize import winsorize_normal
from alphamind.data.standardize import standardize
from alphamind.data.neutralize import neutralize
__all__ = [
......@@ -23,10 +27,14 @@ __all__ = [
'factor_analysis',
'er_portfolio_analysis',
'quantile_analysis',
'er_quantile_analysis',
'Universe',
'factor_processing',
'Constraints',
'risk_styles',
'industry_styles',
'macro_styles'
'macro_styles',
'winsorize_normal',
'standardize',
'neutralize'
]
\ No newline at end of file
......@@ -66,11 +66,13 @@ for i, value in enumerate(factor_groups):
f_data = total_data[[alpha_factor_name]]
try:
res = quantile_analysis(f_data,
[1.],
dx_return,
risk_exp=risk_exp,
er = factor_processing(total_data[[alpha_factor_name]].values,
pre_process=[winsorize_normal, standardize],
risk_factors=risk_exp,
post_process=[standardize])
res = er_quantile_analysis(er,
n_bins=n_bins,
dx_return=dx_return,
benchmark=benchmark)
except Exception as e:
print(e)
......
# Alpha - Mind Work Flow (version 0.1.0)
## 数据表说明
* ``factors``:因子数据表;
* ``halt_list``:停牌信息;
* ``index_components``:指数成分信息;
* ``market``:行情数据;
* ``risk_exposure``:风险因子暴露;
* ``risk_cov_day``:风险模型协方差矩阵,``day``模型;
* ``risk_cov_short``:风险模型协方差矩阵,``short``模型;
* ``risk_cov_long``:风险模型协方差矩阵,``long``模型;
* ``specific_risk_day``:风险模型特质收益,``day``模型;
* ``specific_risk_short``:风险模型特质收益,``short``模型;
* ``specific_risk_long``:风险模型特质收益,``long``模型;
* ``risk_return``:风险因子收益;
* ``specific_return``:特质收益;
* ``universe``:股票池。
## 输入
### a. 测试已入库因子
* 交易日(``date``): 类型为``str``,格式:``YYYY-MM-DD``
* 交易证券代码(``codes``):类型为``list``,大小 $n \times 1$;
* 因子名称(``factor_names``): 类型为``list``, 大小为 $k \times 1$;
* 风险模型(``risk_model``):类型为``str``,可选为:``day````short``以及``long``
* 基准指数(``benchmark``):用于计算超额收益,类型为``str``,例如:``zz500``代表中证500指数;
* 延迟(``delay``):使用多少天以后的收益计算,默认为1;
* 期限(``horizon``):在延迟``delay``天后,使用累积多少天的收益,默认为1。
### b. 测试新因子
* 交易证券代码(``codes``):类型为``list``,大小 $n \times 1$;
* 因子数据(``factor_data``):类型为二维数组,大小 $n \times k$;
* 风险模型(``risk_model``):类型为``str``,可选为:``day````short``以及``long``;
* 基准指数(``benchmark``):用于计算超额收益,类型为``str``,例如:``zz500``代表中证500指数;
* 延迟(``delay``):使用多少天以后的收益计算,默认为1;
* 期限(``horizon``):在延迟``delay``天后,使用累积多少天的收益,默认为1。
## 获取因子数据
### a. 测试已入库因子
按照``factor_names````factors``获取因子数据$Y$。
### b. 测试新因子
使用``factor_data``组成因子数据$Y$。
## 风险中性化
``risk_exposure``中取出对应的风险因子暴露,对$Y$做中性化,得到$\bar Y$
## 计算预期收益
根据$\bar Y$计算得到预期收益$r$。
## 计算股票协方差矩阵
根据对应的``risk_model``,从``risk_cov_*``表中取出对应的风险因子协方差矩阵,根据对应的``risk_exposure``以及``specific_risk_*``计算得到股票协方差矩阵$C$:
$$ C = E^T \times RC \times E + SR $$
其中:
* $E$为股票的``risk_exposure``;
* $RC$为风险因子的协方差矩阵;
* $SR$为股票的``specific_risk``
## 计算组合
根据预期收益$r$和预期协方差矩阵$C$,计算最优组合$\omega$
# 策略描述
## 当前策略概述
概述:目前,我们的Alpha策略基于多因子模型框架,以线性模型为基础,以少数近期内表现优秀的基本面或技术面因子作为选股因子,多维度中性化,并经过优化处理后,产生持股权重,以买入持有的方式,以一固定周期进行调整操作;在买入股票的同时,对冲基准所对应的股指期货,以期获得较稳定的超额收益;
表现基准:中证500指数;
选股范围:中证500指数成分股;
选股数量:100只股票左右;
单只股票最大权重:约为1%;
调仓频率:2周;
中性化维度:行业中性化,市值中性化,市场中性化;
策略起始时间:2016年12月;
## 策略改进记录
2017年5月中旬,我们对Alpha策略的进行了较大的升级和变更,为了平稳过渡策略升级以及提升超额收益稳定性,我们将原有的“大股票池子”(约为2000只股票)变更为指数成分股(500只股票)。此次升级的效果比较符合预期,升级后的策略减少了在部分风险因子上的暴露度,降低了超额收益的波动;
这次改动产生的副作用是在5月中下旬的一次调仓中,产生了较高的换手。但是我们估计,这种副作用是一次性的,不会持续,对业绩表现的影响不大。从我们后期跟踪来看,之后的调仓,双边换手都控制在20%左右,不会造成很大的交易难度。
# 业绩回顾
自2016年12月开始策略,截至2017年6月9日,Alpha策略相对于中证500指数的超额收益率约为4.61%,策略的月胜率为71.4%。其中,自2017年5月中旬策略升级以来,实现超额收益约1.97%,
![累积超额收益](累积超额收益.png)
# 未来计划
我们计划在未来进一步目前的多因子模型进行改进,包括但不限于以下列举内容:
- 增加风险因子,改进风险模型,以期更好地控制风险;
现阶段,风险因子中风格因子偏少,不利于超额收益预测的精细化。未来我们将引入更多的风格因子作为风险刻画的手段。
- 扩展选股范围,争取对于单位风险,实现更大的超额收益;
5月份升级策略以来,新的择股标准确实起到了降低超额收益波动的作用,这符合我们的预期。同时我们在回测中观察到,如果将新择股方案施加到“大股票池子”中,在并不显著增加波动的情况下,超额收益相对于当前方案更有优势。我们将持续跟踪这一现象,待时机成熟时,将考虑重新回归“大股票池子”轨道。
- 不断开发研究新的因子,更快更准确地捕捉市场信号;
我们仍然在扩大在库因子的规模,同时做到因子表现的日级监控,月级回顾,力争更加快速准确的捕捉到市场风格的切换。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment