BigQuant常见问题和经验整理合计(1.0版本)

干货
精选
标签: #<Tag:0x00007f4903825a70> #<Tag:0x00007f4903825908>

(a1641181638) #1

过去几个月一直在研究量化投资撰写毕业论文,
期间遇到了大坑小坑无数,非常感谢BigQuant的老师们(比如小Q和达达老师)以及群里、社区里的大咖们,帮我解决了非常多的困难。
本着回馈社会的心理,根据这几个月的经历整理一版【常见问题与经验】

问题:不同市场选用什么基准

问题:怎么读取【自定义计算】里的列表

问题:如何分析和记录CSV回测结果

问题:各个时间日期格式化表达

问题:使用官方的标注,删掉分成多少类,回归标注标出来全他妈是0.000

问题:怎么读取DataSource数据库抽取为DataFrame格式

答案:df = m18.data.read_all_df()

问题:如何理解回测结果中的各个指标:如α、β、IR

问题:怎么把回测结果记录到pd里

res=m19.read_raw_perf()[['algorithm_period_return','benchmark_period_return','alpha','beta','win_percent','sharpe','max_drawdown','information']]
res_tmp=pd.DataFrame(res.iloc[-1]).T

问题:SR排序-GBDT报错TypeError: string indices must be integers

解决:

问题:可视化模块怎么进行数据清洗?

问题:实盘中怎么让策略每天都更新自己的训练集数据

使用滚动训练

问题:去极值报错:ValueError: cannot reindex from a duplicate axis ,用了自定义模块reset_index也不行。

解决:使用自定义python模块进行极值处理

问题:报错“Exception: no data left after dropnan”怎么处理?

答案:策略报错:“Exception: no data left after dropnan”怎么处理?
(修改向前提取天数——》失败)

问题:怎么把DataFrame结果输入到一个csv里

df.to_csv(‘XX.csv’,header=True,mode=‘w’) #mode ='w’是覆盖写入,'a’是追加写入

问题:为什么自动标注结果全是0或1

把自动标注里那个自动转换为整数关掉。

问题:标准化和归一化之间的差别和选择

问题:回测结果记录到df中

参考1m19.pyfolio_full_tear_sheet():为什么中性化处理后依然小市值暴露这么高

问题:策略跑到一半自己断掉 原因:超出16G内存爆掉

python的内存管理 https://www.cnblogs.com/vamei/p/3232088.html
手动清理垃圾的gc.collect() https://docs.python.org/zh-cn/3/library/gc.html

问题:怎么调用多核进行并行计算

问题:怎么解决调参问题?

【超参搜索】模块:【宽客学院】超参寻优使用简介

问题:超参搜索,不同控制变量跑出相同结果。

尝试:将控制变量也 写入【超参寻优】模块,只是不写入而已(尚未验证)
这可能是模型没有排序的原因,在模型结果输出后跟一个csv,如果没有排序就接上排序模块+一个特征列表模块(里面只写pred_label),

问题:怎么调用中证五百的数据

问题:怎么用因子IC计算相关性

问题:选取指定概念股模块有时报错Exception: no data left after dropnan

问题:年月周分别对应多少个交易日

(250、22、5)

问题:怎么修改投资目标?如找到接下来一周收益最高的股票

问题:怎么自定义运行的前提下把回测结果记录到csv

问题:训练集和测试集怎么划分比较好

机器学习中有许多种评估方法,这里十分关键的一点是训练集与测试集尽可能的互斥,即策略样本尽量不在训练集中出现,没有在训练集中使用,我们常用到的是将大约 2/3~4/5的数据用于训练,剩下数据用于测试

问题:怎么检验策略池中哪个策略最好?有无相应模版

提供了模版和设计思路:AI量化投资,2018年向好,2019年值得期待

问题:选多少个因子合适?

问题:怎么寻找有效因子?

问题:怎么自定义买入卖出逻辑,比如每隔几天执行一次

问题:如何理解自动标注里shifit(close,-5)/shift(open,-1)作为5日收益率

见【问题解决】文件夹里的理解实验

Error: TypeError:compile() arg 1 must be a string, bytes or AST object

解决:模块上方的不同小点有不同含义,不能不按顺序乱连

Error:选定概念股模块,直接链接在代码下面,报错NCF

解决:该模块应该使用提取基础特征后的数据;一般来说会放在连接数据/衍生数据模块之后,缺失数据处理模型之前

Error:使用滚动训练,修改了最大最小时间和更新时间后。结果发现报错“Exception: 模型训练失败:”可能导致错误的原因是训练数据问题,请检查训练数据。

解决:
1、每行特征后面的注释,注释要另起一行比如全写最开始(在没有滚动运行模块的时候可以解决这个报错。但并不彻底解决)
2、https://bigquant.com/community/t/topic/172969,克隆对比研究下官方给的这个策略

问题:DataFrame删除包涵特定字符串所在的行/选取包含指定字符串的行

问题:Pandas图表可视化

问题:该怎么实现滚动训练基础上,每一期使用不同的当期因子

经验:前辈踩过的一些坑

经验:量化投资的特征工程

经验:有哪些学习资源

经验:随机森林模型输出模型重要性

model = m4.output_model.read()
importance = model[‘feature_gains’]
importance

经验:多因子权重优化方法比较

经验:常用策略代码

经验:如何理解回测和数据的使用?(及如何检查过拟合)的一篇好文

经验:如何获取一定条件的股票

经验:https://bigquant.com/community/t/topic/130995,新版数据

经验:怎么用pandas实现vlookup

经验:怎么实现跨表混合抽取数据

答案:使用模块【基础特征抽取-v1】。v1是新的升级版,除了类似v1支持因子库的因子抽取外,还支持了跨表混合抽取数据。用表名+双下划线+字段名方式比如bar1d_CN_STOCK_A__close就可以抽取任意数据表的数据了。

经验:日期加减。例如得到指定日期30天前的日期

经验:固化随机森林、xgboost\logistic模型

随机森林、xgboost、LogisticRegression:{‘random_state’:0}

经验:渤海证券单因子测试

问题:怎么读取【因子研究】的各项指标

参考下面这个我写好的策略

经验:因子快速回测

经验:因子研究模块


(yangziriver) #2

很实用的经验,赞一个!期待2.0版本!


(yangziriver) #3


这个打不开,能不能分享到社区?谢谢!


(cash01) #4

可以,相当可以!