原创文章第364篇,专注“个人成长与财富自由、世界运作的逻辑与投资"。 2018年,看到机会,但没有知行合一,2020左右完成建仓。 2023年,我看到的是机会,这次争取知行合一。 今天开始深度学习挖因子。 前面的文章开了个头:DeepAlphaGen:强化学习的因子组合挖掘 主流的公、私募量化,多因子模型是重中之重和热点方向。容量大,可以与前沿技术相结合。 东方证券的一张图:多因子选股体系 多因子选股体系主要包括 Alpha 模型、风险模型、交易成本模型和组合优化四个模块。Alpha 模型负责对股票收益或 Alpha 的预测,对组合收益的影响相对更大,是量化研究的重中之 重。传统的 Alpha 模型一般分为 Alpha 因子库构建和 Alpha 因子加权两个核心步骤。 其中:在 Alpha 因子构建中,可以引入的常见机器学习模型主要有两大类:遗传规划和神经网络。 先挖掘因子,再合成,忽略了因子之间的相互作用。 今天开始要代码实现的:一种新的因子组合挖掘框架,直接使用因子组合的表现来优化一个强化 学习因子生成器,最终生成的是一组公式因子集合,这些因子协同使用具有较高的选股效力。这 样做既能保留遗传规划算法公式化的优势,也能提升模型泛化能力,适应多种股票池,还能大幅 提升运算效率。 论文上周已经在星球里分享,代码后续会跟上。 我对这篇论文感兴趣的核心在于,它具备一定程度上的通用性,集传统遗传规划的优点,可以显示生成表达式,结果了深度学习的泛化能力和端到端的能力。另外,原作者是提供代码的,不过它使用qlib的数据库,我进行了拆分,与咱们的开源项目,数据模块整合起来,让这个模块更加通用。 核心代码在Quantlab工程的如下位置:alphagen。 代码环境,需要:pytorch框架上的强化学习包: stable_baselines3==2.0.0 sb3_contrib==2.0.0 核心的调用代码如下: json os datetime datetime typing Optional numpy np sb3_contrib MaskablePPO stable_baselines3.common.callbacks BaseCallback alphagen.data.calculator AlphaCalculator alphagen.models.alpha_pool AlphaPoolAlphaPoolBase alphagen.rl.env.core AlphaEnvCore alphagen.rl.env.wrapper AlphaEnv torch alphagen.rl.policy LSTMSharedNet alphagen.utils reseed_everything alphagen.caculator.duckdb_caculator DuckdbCalculator (seed: = pool_capacity: = steps: = instruments: = ): calculator_train = DuckdbCalculator(=instruments==) calculator_valid = DuckdbCalculator(=instruments==) calculator_test = DuckdbCalculator(=instruments==) pool = AlphaPool( =pool_capacity=calculator_train==) reseed_everything(seed) device = torch.device() env = AlphaEnv(=pool=device=) name_prefix = instrumentspool_capacityseedtimestamp = datetime.now().strftime() checkpoint_callback = CustomCallback( ====calculator_valid=calculator_test=name_prefix=timestamp=) model = MaskablePPO( env=( =LSTMSharedNet=( ====device))=====device=) model.learn( =steps=checkpoint_callback=name_prefixtimestamp) 其中DuckdbCaculator是我们实现的。 就是根据表达式计算因子,IC值等等。 使用了sb3的强化学习扩展包里的MaskablePPO算法。 明天继续。 |
|