主动基金被动管,被动基金主动管。 所以,我们的模型主要应用于场内ETF,ETF可以随时交易且手续费相对较低。而且ETF是支持T+0的。 继续强化学习。 今天探讨一下这DDPG:深度确定性策略梯度(Deep Deterministic Policy Gradient,简称DDPG) 先说“确定性”策略,它和随机策略相对而言的,对于某一些动作集合来说,它可能是连续值,或者非常高维的离散值,这样动作的空间维度极大。如果我们使用随机策略,即像DQN一样研究它所有的可能动作的概率,并计算各个可能的动作的价值的话,那需要的样本量是非常大才可行的。于是有人就想出使用确定性策略来简化这个问题。 虽然在同一个状态处,采用的动作概率不同,但是最大概率只有一个,如果我们只取最大概率的动作,去掉概率分布,那么就简单多了。即作为确定性策略,相同的策略,在同一个状态处,动作是唯一确定的,即策略变成 πθ(s)=a DDPG参考了DDQN的算法思想,通过双网络和经验回放,加一些其他的优化,比较好的解决了Actor-Critic难收敛的问题。因此在实际产品中尤其是自动化相关的产品中用的比较多,是一个比较成熟的Actor-Critic算法。 baselines里的算法做了非常好的封装,有点类似sklearn里的算法集,就是一个learn和一个predict就搞定了。 与传统机器学习不同在于,传统机器学习的输出就是标签数据,输出就是分类或预测,数据相对简单,算法也相对固定。当然参数的意义还是需要自己去深度理解。 而强化学习本质上是一个框架,里边的算法结构,神经网络一直在进化,所以这个框架叫baselines。我们还是从头自己实现一个简化版本的强化学习,可以参考baseline的封装接口。 基本接口就两个,一个是learn,另一个是predict,今天来实现learn,也就是模型训练。强化学习与深度学习训练有一个不同,深度学习里有episode的概念,就是一批素材训练完了,再来一次,但强化学习就是一个环境,甚至每次经历的返回都会不一样,故而只有一个走多少步,而没有走多少轮之说。当然,针对证券市场,训练数据的tick是确实是固定且按序列出的。 learn函数的主体是一个while循环,一共走N走,比如10000步。 在这10000步里,如果判断env返回done即是一个episode。 这个大循环比较清晰,和深度学习的训练没什么差别(在episode上有一点不同) def learn(self,env,max_timesteps=1e6,random_steps=1e4): 然后最重要就是调用模型本身训练环节。 网络构成: class Actor(nn.Module): Actor和Critic都是两个简单的三层全连接网络,比较简单,不必展开描述。 (公众号:七年实现财富自由(ailabx),用数字说基金,用基金做投资组合,践行财富自由之路) |
|