我进行alpha开发的核心原则是:
1) 迭代速度
2) 易用性
这是什么意思?
第一个很清楚。如果你每天测试10个alpha,而其他人每天只测试2个,那么你的表现肯定会比别人好很多。
那你怎么做到这一点呢?
首先,让我们排除掉数据抓取和预处理。如果你没有自动化脚本来完成这些,你已经注定失败了。这是基本要求。
接下来,获取一个数据加载库。你不应该每次都重写那种glob.glob(folder_path)等代码。你应该用:
load_data(
start_date=start_date,
end_date=end_date,
symbol=symbol,
等等
)
然后是研究数据。什么是研究数据?
你可以从拥有一个股票池开始。你不应该花时间手动去定义一个股票池(理想情况下它也应该是标准化的)。所以你应该加载一个文件,比如按30天交易量、总市值或30天流动性排名前X的标的。不妨大胆尝试各种方式。
从这里我们可以看收益,可以有因子收益、特异性收益、截断收益,当然还有原始收益。全部都要预先生成!
最后要确保我们能够测试所有alpha,并且执行的代码应该快如闪电。你可能觉得只需要X分钟,但只要超过几分钟就是一次巨大的上下文切换,直接影响生产力。
我们已经讲完了迭代速度,现在来说易用性。
易用性是指完成某项分析的难易程度。这是质量与数量优化问题中的质量部分。比如我想做一个季节性分析,
查看原文