原创文章第110篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。
01 一些感受
时代的一粒沙,落在每个人身上就是一座山。
这三年,对于这句话,相信很多人更能感同身受。
看历史风云变幻,轻轻松松一句——百年未有之大变局,仿佛宋元明清,直接就这么一路走来。之于每个个体,人生不过百年,说长不长,但隔离你14天试试?
很多事情,我们无法左右。翻开历史,满眼的荒唐事,只待后人评述。
改变能改变的,接受不能改变的,对不确定性,做好我们自己能做的准备。
翻开日记,回看过去一年,与当下相比,还是比较熟悉的人与事,但回看三年前的今天,很多纠结的事,纠结的人,都已改变。我们总是高估未来一年会发生的变化,而低估未来十年带来的改变。是的,十年太长,我们往前看三年,与我这个“持续行动”计划相对应,今天是原创文章第110篇,就是行动计划的第110天。
相信到了第1000天,疫情消散,人间皆安。大疫三年让我们对生活,对未来有了新的思考,如何面对可能类似的黑天鹅事件,你的财务准备,你的身体健康,我们能做的,应该做的是做好这样的准备。
“最重要的一件事”是什么——财富自由。试想,如果你的被动收入足以覆盖生活开支,那么意味着你不必绑定在某一个城市,某一个区域。那么,即便在当下的疫情,你可以去乡下,去低风险的地方生活。甚至是海外。这是关键。财务越稳健,则生活越自由,对抗不确定风险的能力越强。至少提升被动收入在你收入结构中的占比,越高越好。
投资理财的能力是很重要的一个技能,意味着你有能力让钱生钱。后续重点“面向盈利做量化”。两个方向,传统量化,基于ETF轮动来做,数据处理简单,而且可以做大类资产配置。强化学习(也含机器学习),做加密货币等。
今天导入一个强化学习和finRL框架。
02 强化学习与finRL
finRL是第一个金融强化学习的开源框架,项目目的是为了释放强化学习在金融交易中的巨大潜力。从生态上来看,它已经整合数百个金融市场数据源,前沿强化学习算法,金融应用(比如组合优化,加密货币,高频交易等),实盘,云部署等。
11.3.1.1 finRL安装
FinRL框架支持mac, linux和windows10环境,本文以windows10为例进行安装。
FinRL未提供从pip直接安装,可以从github来下载源码包(下载地址为:https://github.com/AI4Finance-Foundation/FinRL)。下载解压缩后,把当前开发环境(虚拟环境)里执行pip install . 即可安装。
FinRL是轻量级的,核心代码不超过800行。如下是源码结构,主要就是applications, agents和meta三个子文件夹。
Meta文件夹包含的功能是构建量化环境以及金融数据处理。
Agents文件夹包含的功能是前沿的强化学习模型。支持三个强化学习包的算法,elegantrl(finRL官方自己开发的),rllib和stablebaseline3。
Applications文件夹实现了具体的应用,比如加密货币、组合管理等。
强化学习应用于金融交易,比机器学习会“复杂”一些。强化学习需要一个类似gym的交易环境,然后应用强化学习模型——算法模型这一块业内有成熟的baseline,我们了解其学后的原理,能熟练使用,会调优参数即可,这一方面与传统机器学习类似,我们不需要从零开始是实现一次gdbt算法,一般人不太可能比专业团队做得更好。
数据准备与数据预处理,无论是传统规则策略开发,机器学习量化,还是强化学习都类似,这一部分是可以统一的。
数据输入的格式由模型决定,这里有一定的适配工作。
模型输入之后的回测与结果解读又是类似的流程,同样可以复用。
在选择模型上,我们重点关注易用性和效率。易用性自然不必说,我们核心关注的是策略,不应该在模型本身花费太多的精力。深度学习效率也非常重要,否则跑一次模型要等半天,也非常影响策略调试。
在强化学习的算法选择上,在elegantRL,rllib和stablebaseline3供选择。FinRL起步之初就是封装了sb3,后来又整合了rllib,进而自主研发了eletangRL。
StableBaseline3是pytorch版本的强化学习算法库,更新维护很活跃,文档详实,案例丰富,但它是一个通用的版本,并非为金融而定制。
finRL官方认为自己的elegantRL(中文名:小雅)比sb3要稳定得多,效率也更高,同时finRL生态本身就是为了交易而生。
ElegantRL的作者对各个框架的盘点:
伯克利的RLlib ray:它是优点最多的DRL开源库,实现了多种主流DRL算法,支持分布式训练,支持三个深度学习框架(TensorFlow1、PyTorch,TensorFlow2)。这个库也有缺点是:代码量多,上手难,耦合度高,难改,安装时存在大量依赖。
OpenAI的baselines:很早开源的DRL库,训练很慢,且不稳定
hill 开发的 stable baselines:baselines的不稳定催生了它。它使用了旧风格的TensorFlow 1,可读性较差,训练依然不够稳定
stable baselines 3:TensorFlow 1的不方便,催生了基于PyTorch的stable baselines 3。可惜代码是照着 TF1 直译的,沿用了 baselines的旧框架,不适应 2018年后的DRL算法。直到2021年3月,它还不支持多GPU训练。
”莫烦“的教学代码:几年前中文社区只有他的教学代码,牺牲性能换来了可读性:训练只需几秒钟的入门级环境,他的代码需要训练十几分钟;无法在稍高难度的环境下训练。它为推广强化学习做出了贡献,但社区需要好用的DRL库。
ElegantRL特点:
轻量:代码量低于1000行。
高效:性能向Ray RLlib靠拢。
稳定:比Stable Baseline 3更加稳定。
后续我们重点使用elegantRL库的算法,把它应用于加密货币的高频交易之中。