analysis
介绍
单因子多维度分析.从因子ic,因子收益,选股潜在收益空间三个维度给出因子评价.新增模块
ic_stats
jaqs_fxdayu.research.signaldigger.analysis.ic_stats(signal_data)
简要描述:
- 因子ic分析表
- 对事件因子(数值为0/1/-1的因子)无法使用该方法
参数:
| 字段 | 必选 | 类型 | 说明 |
|---|---|---|---|
| signal_data | 是 | pandas.DataFrame | trade_date+symbol为MultiIndex,columns为signal(因子)、return(持有期相对/绝对收益,必须)、upside_ret(持有期潜在最大上涨收益,非必须)、downside_ret(持有期潜在最大下跌收益,非必须)、group(分组/行业分类,非必须)、quantile(按因子值分组,非必须) |
返回: 因子ic分析表 * 列: * return_ic/upside_ret_ic/downside_ret_ic * 持有期收益的ic/持有期最大向上空间的ic/持有期最大向下空间的ic
- 行:
- "IC Mean", "IC Std.", "t-stat(IC)", "p-value(IC)", "IC Skew", "IC Kurtosis", "Ann. IR"
- IC均值,IC标准差,IC的t统计量,对IC做0均值假设检验的p-value,IC偏度,IC峰度,iC的年化信息比率-mean/std
示例:
import warnings
warnings.filterwarnings('ignore')
from jaqs_fxdayu.data import DataView
from jaqs_fxdayu.research import SignalDigger
# 加载dataview数据集
dv = DataView()
dataview_folder = './data'
dv.load_dataview(dataview_folder)
# 计算signal_data(通过jaqs.research.signaldigger.digger.SignalDigger.process_signal_before_analysis(*args, **kwargs))
sd = SignalDigger()
sd.process_signal_before_analysis(signal=dv.get_ts("pe"),
price=dv.get_ts("close_adj"),
high=dv.get_ts("high_adj"),
low=dv.get_ts("low_adj"),
group=dv.get_ts("sw1"),
n_quantiles=5,
period=5,
benchmark_price=dv.data_benchmark,
)
signal_data = sd.signal_data
signal_data.head()
Dataview loaded successfully.
Nan Data Count (should be zero) : 0; Percentage of effective data: 99%
| signal | return | upside_ret | downside_ret | group | quantile | ||
|---|---|---|---|---|---|---|---|
| trade_date | symbol | ||||||
| 20170503 | 000001.SZ | 6.7925 | -0.005637 | -0.003045 | -0.042326 | 480000 | 1 |
| 000002.SZ | 10.0821 | 0.011225 | 0.016697 | -0.029432 | 430000 | 1 | |
| 000008.SZ | 42.9544 | -0.049408 | 0.000463 | -0.092972 | 640000 | 4 | |
| 000009.SZ | 79.4778 | -0.069822 | 0.009714 | -0.095426 | 510000 | 5 | |
| 000027.SZ | 20.4542 | -0.019517 | 0.009404 | -0.041616 | 410000 | 2 |
from jaqs_fxdayu.research.signaldigger.analysis import ic_stats
ic_stats(signal_data)
| return_ic | upside_ret_ic | downside_ret_ic | |
|---|---|---|---|
| IC Mean | -0.022805 | 0.031198 | -2.035376e-01 |
| IC Std. | 0.207325 | 0.159313 | 1.692702e-01 |
| t-stat(IC) | -1.105467 | 1.968055 | -1.208439e+01 |
| p-value(IC) | 0.271610 | 0.051831 | 2.894849e-21 |
| IC Skew | 0.009493 | -0.065715 | 4.407910e-01 |
| IC Kurtosis | -0.978744 | -0.639758 | -5.878823e-01 |
| Ann. IR | -0.109998 | 0.195829 | -1.202442e+00 |
return_stats
jaqs_fxdayu.research.signaldigger.analysis.return_stats(signal_data,is_event,period)
简要描述:
- 因子收益分析表--根据因子构建几种投资组合,通过组合表现分析因子的收益能力
参数:
| 字段 | 必选 | 类型 | 说明 |
|---|---|---|---|
| signal_data | 是 | pandas.DataFrame | trade_date+symbol为MultiIndex,columns为signal(因子)、return(持有期相对/绝对收益,必须)、upside_ret(持有期潜在最大上涨收益,非必须)、downside_ret(持有期潜在最大下跌收益,非必须)、group(分组/行业分类,非必须)、quantile(按因子值分组,非必须) |
| is_event | 是 | bool | 是否是事件因子(数值为0/1/-1的因子) |
| period | 是 | int | 换仓周期(天数),注意:必须与signal_data中收益的计算周期一致 |
返回:
收益分析表 * 列: * long_ret/short_ret/long_short_ret/top_quantile_ret/bottom_quantile_ret/tmb_ret/all_sample_ret * 多头组合收益/空头组合收益/多空组合收益/因子值最大组合收益/因子值最小组合收益/因子值最大组(构建多头)+因子值最小组(构建空头)收益/全样本(无论信号大小和方向)-基准组合收益
- 行:
- 't-stat', "p-value", "skewness", "kurtosis", "Ann. Ret", "Ann. Vol", "Ann. IR", "occurance"
- 持有期收益的t统计量,对持有期收益做0均值假设检验的p-value,偏度,峰度,持有期收益年化值,年化波动率,年化信息比率-年化收益/年化波动率,样本数量
示例:
from jaqs_fxdayu.research.signaldigger.analysis import return_stats
return_stats(signal_data,is_event=False,period=5)
| long_ret | long_short_ret | top_quantile_ret | bottom_quantile_ret | tmb_ret | all_sample_ret | |
|---|---|---|---|---|---|---|
| t-stat | -1.203846 | 0.411628 | -4.728619 | -2.714885 | -0.755901 | -12.043624 |
| p-value | 0.231360 | 0.681450 | 0.000000 | 0.006650 | 0.451400 | 0.000000 |
| skewness | -0.083057 | 0.373680 | 0.495042 | 1.348467 | -0.261998 | 0.546392 |
| kurtosis | -0.555038 | 0.042535 | 6.187667 | 9.207208 | -0.272022 | 6.241350 |
| Ann. Ret | -0.101735 | 0.021452 | -0.129940 | -0.051046 | -0.078894 | -0.120509 |
| Ann. Vol | 0.124471 | 0.076759 | 0.330355 | 0.226040 | 0.153727 | 0.268994 |
| Ann. IR | -0.817333 | 0.279469 | -0.393336 | -0.225829 | -0.513207 | -0.447998 |
| occurance | 106.000000 | 106.000000 | 6996.000000 | 6996.000000 | 106.000000 | 34980.000000 |
space_stats
jaqs_fxdayu.research.signaldigger.analysis.space_stats(signal_data,is_event)
简要描述:
- 因子潜在收益空间分析表--根据因子构建几种投资组合,通过组合在换仓周期内可能达到潜在最大上涨空间、潜在最大下跌空间来分析该因子选股收益的提升潜力,用于进一步辅助设计择时方案
参数:
| 字段 | 必选 | 类型 | 说明 |
|---|---|---|---|
| signal_data | 是 | pandas.DataFrame | trade_date+symbol为MultiIndex,columns为signal(因子)、return(持有期相对/绝对收益,必须)、upside_ret(持有期潜在最大上涨收益,非必须)、downside_ret(持有期潜在最大下跌收益,非必须)、group(分组/行业分类,非必须)、quantile(按因子值分组,非必须) |
| is_event | 是 | bool | 是否是事件因子(数值为0/1/-1的因子) |
返回:
因子潜在收益空间分析表 * 列: * long_space/short_space/long_short_space/top_quantile_space/bottom_quantile_space/tmb_space/all_sample_space * 多头组合空间/空头组合空间/多空组合空间/因子值最大组合空间/因子值最小组合空间/因子值最大组(构建多头)+因子值最小组(构建空头)空间/全样本(无论信号大小和方向)-基准组合空间
- 行:
- 'Up_sp Mean','Up_sp Std','Up_sp IR','Up_sp Pct5', 'Up_sp Pct25 ','Up_sp Pct50 ', 'Up_sp Pct75','Up_sp Pct95','Up_sp Occur','Down_sp Mean','Down_sp Std', 'Down_sp IR', 'Down_sp Pct5','Down_sp Pct25 ','Down_sp Pct50 ','Down_sp Pct75', 'Down_sp Pct95','Down_sp Occur'
- 组合持有个股的上行空间均值,上行空间标准差,上行空间信息比率-均值/标准差,上行空间5%分位数,..25%分位数,..中位数,..75%分位数,..95%分位数,上行空间样本数,下行空间...(同上行空间)
示例:
from jaqs_fxdayu.research.signaldigger.analysis import space_stats
space_stats(signal_data,is_event=False)
| long_space | top_quantile_space | bottom_quantile_space | tmb_space | all_sample_space | |
|---|---|---|---|---|---|
| Up_sp Mean | -0.091582 | -0.089756 | -0.016239 | -0.013714 | -0.026786 |
| Up_sp Std | 0.033321 | 0.343245 | 0.212997 | 0.017699 | 0.240319 |
| Up_sp IR | -2.748454 | -0.261492 | -0.076242 | -0.774819 | -0.111460 |
| Up_sp Pct5 | -0.127152 | -1.000800 | -0.005893 | -0.040333 | -1.000800 |
| Up_sp Pct25 | -0.117286 | 0.002457 | 0.004533 | -0.028591 | 0.005062 |
| Up_sp Pct50 | -0.101419 | 0.020756 | 0.017939 | -0.013746 | 0.019105 |
| Up_sp Pct75 | -0.076478 | 0.047980 | 0.039831 | -0.000051 | 0.041935 |
| Up_sp Pct95 | -0.031515 | 0.111557 | 0.090402 | 0.013496 | 0.098799 |
| Up_sp Occur | 106.000000 | 6996.000000 | 6996.000000 | 106.000000 | 34980.000000 |
| Down_sp Mean | -0.167327 | -0.171114 | -0.076042 | -0.154875 | -0.092512 |
| Down_sp Std | 0.046346 | 0.340002 | 0.224699 | 0.045501 | 0.245442 |
| Down_sp IR | -3.610429 | -0.503275 | -0.338419 | -3.403795 | -0.376919 |
| Down_sp Pct5 | -0.220840 | -1.000800 | -1.000800 | -0.208216 | -1.000800 |
| Down_sp Pct25 | -0.190647 | -0.067406 | -0.034329 | -0.183180 | -0.042842 |
| Down_sp Pct50 | -0.176590 | -0.029282 | -0.017467 | -0.162556 | -0.021792 |
| Down_sp Pct75 | -0.152016 | -0.012810 | -0.007824 | -0.139399 | -0.009769 |
| Down_sp Pct95 | -0.111972 | 0.000000 | 0.000000 | -0.086766 | 0.000000 |
| Down_sp Occur | 106.000000 | 6996.000000 | 6996.000000 | 106.000000 | 34980.000000 |
analysis
jaqs_fxdayu.research.signaldigger.analysis.analysis(signal_data,is_event,period)
简要描述:
- 同时获得因子ic分析表、收益分析表、潜在收益空间分析表——单独计算三张表的方法见上述api
参数:
| 字段 | 必选 | 类型 | 说明 |
|---|---|---|---|
| signal_data | 是 | pandas.DataFrame | trade_date+symbol为MultiIndex,columns为signal(因子)、return(持有期相对/绝对收益,必须)、upside_ret(持有期潜在最大上涨收益,非必须)、downside_ret(持有期潜在最大下跌收益,非必须)、group(分组/行业分类,非必须)、quantile(按因子值分组,非必须) |
| is_event | 是 | bool | 是否是事件因子(数值为0/1/-1的因子) |
| period | 是 | int | 换仓周期(天数),注意:必须与signal_data中收益的计算周期一致 |
返回:
由因子ic分析表、收益分析表、潜在收益空间分析表组成的字典(dict)
示例:
from jaqs_fxdayu.research.signaldigger.analysis import analysis
result = analysis(signal_data,is_event=False,period=5)
print(result.keys())
result["ic"]
dict_keys(['ic', 'ret', 'space'])
| return_ic | upside_ret_ic | downside_ret_ic | |
|---|---|---|---|
| IC Mean | -0.022805 | 0.031198 | -2.035376e-01 |
| IC Std. | 0.207325 | 0.159313 | 1.692702e-01 |
| t-stat(IC) | -1.105467 | 1.968055 | -1.208439e+01 |
| p-value(IC) | 0.271610 | 0.051831 | 2.894849e-21 |
| IC Skew | 0.009493 | -0.065715 | 4.407910e-01 |
| IC Kurtosis | -0.978744 | -0.639758 | -5.878823e-01 |
| Ann. IR | -0.109998 | 0.195829 | -1.202442e+00 |