# 请直接使用pip install quantfactortest安装。
安装的时候有一个额外的包叫做baostock,它是用来获取指数收益率的(只有日频才有),其目的是用来计算超额收益率(在后面会有详细的说明)。
本单因子测试分为分钟级别(可以是1分钟、5分钟、10分钟不等)以及日级别(每天)。 首先对日级别的做出参数上的解释。
## 日级别: 使用的时候请先传入必要的参数:
使用far=analyze_daily_factor(factor,price,quantiles=5,periods=[1],neutralize=0,demeaned=False,show_IC_line=True,show_IC_heat=True,show_test_line=True,show_test_heat=True)
factor、price
factor以及price是一个n*m的DataFrame的格式,请保持二者的index为datatime格式(或者为时间的str格式,程序会自动转换成datatime的格式);请保持二者的columns一致,比如000001.sh在factor里面是第一列,那么请让它在price里面也是第一列。factor是用来传递每一个标的在每一日的因子值,price是用来传递每一个标的在每一日的价值,这个价值由你来确定,可以是开盘价,收盘价、平均价等等。
那么我们为什么要传入price而不是直接的收益率呢?是为了得到不同收益周期的收益率,详情请参照periods的解释。
quantiles
默认值为5,为分组回测时分组的组数。
periods
默认值为[1]。表示我们的收益率的计算周期是1天,也就是用次日的价值/当日的价值-1。如果是[1,2,3,5,10],那么程序会依次得到这不同收益周期的全部结果。
在这里需要额外阐述清楚一个重要的概念。在进行分组回测的时候,假如我们选择的是收益周期为2,如果周一该标的价值10元,周三价值11元,涨幅为10%,但是我们分组回测的收益其实为10%/2=5%。为什么会这样?因为我们还要分一半的资金给到周二时候的股票,周三时候的资金就用的是周一的另一半资金(此时假设已经拿了回来)。
neutralize
默认值为0,其实就是不做中性化,也就是不减去指数的超额收益。
指数的数据来源于baostock,链接为:http://baostock.com/baostock/index.php/%E6%8C%87%E6%95%B0%E6%95%B0%E6%8D%AE
如果想要减去某一具体的指数,请把neutralize=某指数的代码,如neutralize=’sh.000001’
综合指数,例如:sh.000001 上证指数,sz.399106 深证综指 等;
规模指数,例如:sh.000016 上证50,sh.000300 沪深300,sh.000905 中证500,sz.399001 深证成指等;
一级行业指数,例如:sh.000037 上证医药,sz.399433 国证交运 等;
二级行业指数,例如:sh.000952 300地产,sz.399951 300银行 等;
策略指数,例如:sh.000050 50等权,sh.000982 500等权 等;
成长指数,例如:sz.399376 小盘成长 等;
价值指数,例如:sh.000029 180价值 等;
主题指数,例如:sh.000015 红利指数,sh.000063 上证周期 等;
基金指数,例如:sh.000011 上证基金指数 等;
债券指数,例如:sh.000012 上证国债指数 等;
demeaned
默认值为False,就是是否减去每一日的所有股票的平均收益(不是根据市值加权平均)。
如在周一的三只股票的收益为1%,2%,3%,如果demeaned=True,那么最后的结果将会为-1%,0%,1%。
show_IC_line,show_IC_heat,show_test_line,show_test_heat
默认值均为True。 show_IC_line:是否展示IC值的折线图,数据量过大的时候(尤其是分钟级别)画图缓慢,不作折线图可以节省时间。 show_IC_heat:是否展示IC值的月度图。 show_test_line:是否展示分组回测结果的折线图。 show_test_heat:是否展示分组回测结果的热力月度图,因为该结果图片太多,设置忽略可以净化荧幕。 设置为True是展示,设置为False是不展示。
- ## 接下来将会解释结果:
请使用far.get_all(percentiles=[0.2,0.4,0.6,0.8],buy=[5],sell=[1],gap=10)
这里有额外的四个参数,我们将会在涉及到它们的结果中具体阐述用法。
首先会输出一个有关于因子描述的dataframe,它会包含每一个分位的因子的情况。percentiles的参数就是为了更具体地展示某一个位置因子的大小。
接下来会展示IC(以及RankIC)的值以及IC(以及RankIC)的变化折线图以及月度的IC值,帮助我们来判断是否近期失效以及因子在各个月之间的稳定性;gap就是在作图的时候画的时间滚动平均线的周期,默认为10(2周)。
分组回测的相关情况。
然后会展示复利收益率各分组的折线图、累加收益率各分组的折线图;
某一组的复利(以及累加)月度收益图,其目的是为了判断时间轮动(季节轮动)等。
然后就和buy以及sell有关,buy=[5]和sell=[1]意味着我们做多第五分位和做空第一分位,资金的分配都是平均的。默认值是做多最大分位和做空最小分位。
然后是该策略的复利收益率的折线图
各分位以及各个周期的换手率,帮助我们判断策略的实现难度以及各种手续费。
因子的自相关性系数,辅助判断第四条。
## 以上就是日级别的回测,分钟级别的回测仅有稍微的变动,我将只阐述不一样的变化。 far=analyze_minute_factor(factor,price,minute,quantiles=5,periods=[240],demeaned=False,trade_day=[],trade_time=[],show_IC_line=True,show_IC_heat=True,show_test_line=True,)
minute,请输入您的时间间隔。假如是5分钟,那么请输入5。
periods,默认值为240。假设您的时间间隔为5,那么建议不要将交易周期低于240/5=48,因为240分钟=4小时是A股日内的交易时间,A股日内不允许买卖,所以请将periods设置的间隔大于240/minute
因为baostock没有分钟级别的指数数据,所以我在此删掉了neutralize。
trade_day和trade_time是用来计算收益率的。我要详细地表明它和periods的区别。如果我的minute是5,periods为48,那么我在周一的9:35的股票将会在周二的9:35再次交易,周一的9:40的股票将会在周二的9:40再次交易……
如果trade_day为[1],trade_time为[‘15:00’],这意味着我统一在次日的15:00进行交易。也就是不管我是在周一的9:35买的还是10:00买的,我都会统一在周二的15:00进行交易来计算收益率。
在最终的结果中,将不会再产生月度收益率图标,所以没有show_test_heat这个参数。
Metadata
Release files for quantfactortest 2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quantfactortest-2.0.tar.gz | 10.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quantfactortest-2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.4 kB
Release files / quantfactortest-2.0.tar.gz
| Download URL | quantfactortest-2.0.tar.gz |
|---|---|
| Size | 10.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2328b32580523d0cf9ac79fe0cdb711a06b8fa138584e1d4a98588914ead750c
|
|
BLAKE2b-256 checksum How to use checksums |
4f5d58f9433e3c2cf1a82b319e1fd1de2de6813c003a918a23cafdd4c201fb44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Release files / quantfactortest-2.0-py3-none-any.whl
| Download URL | quantfactortest-2.0-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad97db18919f313b7f16c9b0ed450ab6bcc2e5c24b211a382f01227b5458a52a
|
|
BLAKE2b-256 checksum How to use checksums |
5178cbc9727bf6e33b2fe29804ccd704fdc07bcf21270772c9e05a5bbe89505a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|