要做的事情
- 先测试:参数测试和偏度等测试
- 测试的时候没有把因子的名字改掉,都弄成 筹码波动性了,看看要不要改,啊我死了
- 然后测一下几个新的因子
- 再想朋友圈文案
回测笔记
- 在config文件中,找到factors文件夹下面所有的因子,然后在脚本1中计算所有的因子值
- 报错
Traceback (most recent call last):
File "E:\xingbuxing\中性策略框架2.1.12-筹码\中性策略框架\中性策略回测框架\program\5_查看历年参数平原.py", line 142, in <module>
result = pd.read_csv(result_path, encoding='gbk')
File "E:\software\work\anaconda\packages\envs\quant\lib\site-packages\pandas\util\_decorators.py", line 211, in wrapper
return func(*args, **kwargs)
File "E:\software\work\anaconda\packages\envs\quant\lib\site-packages\pandas\util\_decorators.py", line 331, in wrapper
return func(*args, **kwargs)
File "E:\software\work\anaconda\packages\envs\quant\lib\site-packages\pandas\io\parsers\readers.py", line 950, in read_csv
return _read(filepath_or_buffer, kwds)
File "E:\software\work\anaconda\packages\envs\quant\lib\site-packages\pandas\io\parsers\readers.py", line 611, in _read
return parser.read(nrows)
File "E:\software\work\anaconda\packages\envs\quant\lib\site-packages\pandas\io\parsers\readers.py", line 1778, in read
) = self._engine.read( # type: ignore[attr-defined]
File "E:\software\work\anaconda\packages\envs\quant\lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 230, in read
chunks = self._reader.read_low_memory(nrows)
File "pandas\_libs\parsers.pyx", line 808, in pandas._libs.parsers.TextReader.read_low_memory
File "pandas\_libs\parsers.pyx", line 866, in pandas._libs.parsers.TextReader._read_rows
File "pandas\_libs\parsers.pyx", line 852, in pandas._libs.parsers.TextReader._tokenize_rows
File "pandas\_libs\parsers.pyx", line 1973, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 16 fields in line 33, saw 30
- 这里的历年参数平原文件是怎么产生的:在脚本2里面,判断文件是否存在,如果不存在,则新建文件
- 什么地方合并的额外的数据,看看合并之后的结果
合并额外数据是在strategy里面,after_merge_index
纯多笔记
- 为什么只计算了基础手续费,没有考虑滑点
- 为什么只在合约里面选币
- 为什么拉黑比特币和以太坊:因为这两个币作为种子计划
- 什么是动量因子:
简单动量因子的计算方法:
(close - low) / (high - low)
动量因子表示了收盘价在当天价格中的位置,动量因子越大,表示收盘价越高,动量因子越小,表示收盘价越低
动量因子表示的是当天的价格走势,动量因子大表示当天收盘的时候价格还在涨,说明该股票走势非常好
- 动量因子的特点:牛市的时候涨的多,比流动性因子多,但是熊市的时候回撤非常多,考验入场时间点
- 参数平原的平稳性说明了什么?参数平原越平稳就越好吗?
- 分箱图均匀说明:对所有股票的区分度都很好,ic值漂亮
- 分箱图第一组远远高于其他组:只取多头
- 多头选出来的币都是成交额比较大的
- 这次的因子选出来的都是(大)币,流动性因子多头选出来的都是(小)币,流动性因子空头选出来的都是(大)币
- 本次课程多头选出来的币和流动性因子空头选出来的币哪个更大一点:本次课程选出来的币
- 为什么?
1 本次是在合约里面选币的,本身合约里面的币就比较大
2 本次选币选的是动量策略,动量策略选择的都是近期成交量最大的币,这些币的成交量可能比比特币和以太坊还要高
- 什么是分钟偏移
- 调仓比例在市场火爆的时候比较高,也就是说,这个策略换手率很高
- 不同offset表现差异很大,最好的offset在140左右,最差的在20多,但刑大说实际上并没有很大差别,为什么
动量的实质是在抓市场热点,一两个币的差别会造成很大的差异
有的offset表现差是因为某一年的表现差
有的offset每年都差,可能存在系统性原因,和市场时区有关系,比如现在美国的币表现比较好,美国币和非美国币存在系统性差别。
- 如何直观的衡量两个因子的表现差异:
比如这里衡量了最差offset和平均表现的差异
对这两个做多空,最差offset做多,标准的做空。
然后观察资金曲线的走势,如果增长,则说明最差offset比标准号
- 针对本次课程多头的优化,要选择较为(长期)的指标
- 多空相较于多头的有点是什么? 回撤小
- 多空表现不好的原因:
空头选到的币种为冷门币种,且整体成交额不高,容易拥挤
多头选的都是最近涨的多的币种,空头选的是最近跌的多的币种,存在反转效应
- 改进思路
使用其他因子做为空头因子
由于最后一组不是表现最差的,所以可以将中间组的作为空头
除了第一组的整个市场做为空头