猴年的最后一次推送,小编要放假啦。祝大家新春佳节快乐,鸡年投资大顺 通常所说的量化交易,是指使用大量的指标和操作的组合,来定义买/卖操作规则。除了决定使用哪些指标,更重要的是为指标设置正确的参数。 一个简化的例子(随机写的,请勿作为投资参考):选择 300成份股 市值小于150亿 去年分红 最近半年有回购行为 的股票。我们可以把不同指标扩展到成千上万个,根据参数做出投资决策。 为参数寻找最优解的问题,梯度下降法(常用于深度学习)是一个很好的解决方案。但有些时候1、问题有多个局部最优解;2、错误函数不平滑;这时梯度下降算法就不能很好工作。这里我们介绍遗传算法,用来为市场指标的参数找到最优解。 遗传算法是受物种进化和自然选择启发得到的优化方法。它是一个“古老”的算法,并且在上个世纪就有人尝试应用于金融市场研究。严格来说它不属于机器学习领域,但机器学习工程实际上可以在它的理论基础上来实现。 遗传算法过程如下: - 初始化:算法从初始化一个种群开始,可以完全随机生成。每种可能的解决方案 -- 例如每个种群中的个体被称为染色体。 - 迭代过程: * 交叉:染色体被组合起来,产生一个新的种群。新一代种群中的每一条染色体都是它们祖先的基因(染色体由基因组成)交叉混合组成。 * 突变:通常,还引入突变因子,目的是允许现有基因的特征有一些变化。 * 评估:计算每个新染色体个体的适应值。 交叉迭代过程的理念是创建一个优于第一代种群的后代,因为只有最合格的个体才能存活下来。 这意味着我们将选择得到最佳结果的染色体作为下一代染色体的父染色体。 - 停止条件:我们可以使用两三种不同的标准作为停止迭代过程的条件: * 群众中个体数量不再变化; * 获得满意的适应性水平。 * 算法得到收敛。 我个人特别喜欢第一和第三个标准(除非时间极为有限,我会使用第二个标准)。 实现遗传算法实际上是一项简单的任务。最具挑战的部分是如何将我们的问题转化为“染色体”模型。 我们需要可以轻松转换、组合的变量,以及无需大量的内存的算法,那么遗传算法就会有效。 伪算法代码 以下代码是使用Python语法的遗传算法实施的简单示例,其中: max_iter:是算法停止前允许的最大迭代次数。 n_repeats:是允许所有过程中的最佳适应度比通常总体达到的最佳适应度差的最大迭代次数。 这是用来控制方法的收敛程度的简单方法: 如果我们不使用这种方法,当算法已经停在局部最优时,我们还在花时间执行代码。 N:是在每次迭代中被选择成为下一代父染色体的个体数量。 i=0 fitness = 0 counter = 0 while i |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|