我正在进行遗传算法项目,我们需要建立一个根据历史记录选择一组股票的软件。 我们需要在遗传编程上这样做,这意味着我们需要一个适应度函数和一个染色体。 我想通过股票的大幅历史与实际价值之间的正差异来考虑健身功能。(如果它匹配则为0)。 有没有人知道如何表达染色体?
答案 0 :(得分:1)
这个问题似乎没有明确定义。如果你知道股票的实际价值,那么你提到的适应度函数会给你一些价格徘徊在实际价值附近的股票。 其他可能性:
第一种情况:您正在尝试根据其历史表现选择一组最有前景的股票,即最大化预期收益和/或最小化方差/风险。如果可供选择的股票数量不大,最简单的选择是使用二进制字符串:0表示没有选择,1表示选择。该头寸对应于股票的指数。如果您有大量可能的股票可供选择,您可以将股票的标签/指数编码为您的染色体。如果您没有选择的股票数量的最大上限,这可能意味着可变长染色体,并且编码将更难。
适应度函数(最大化)将是所选股票的(预期收益 - 标准差)的总和。预期收益可以通过两种方式制定:预期未来价格 - 当前价格或当前价格 - 基础价值(如果您知道基础价值,那就是)。可以从历史数据估计预期的未来价格(例如,拟合您选择的简单曲线,或应用ARIMA并延伸到下一个时间点)。标准偏差可以直接从历史数据中估算出来。
如果你的染色体是二进制的(值为0/1),一旦你有了预期的回报和标准偏差,一个简单的点积就能完成所需的计算。我想在所选股票的数量上也可能存在上限,在这种情况下,您有一个受限制的优化问题。您可以将约束表示为适应度中的惩罚。
问题本质上是一个二进制整数线性程序(BILP),您可以将GA与其他bilp求解器进行对比。使用一个像样的混合整数线性编程求解器(例如symphony,gurobi,ibm cplex等),通常可以比使用GA更快地解决大问题。
第二种情况:您正试图找出以当前价格购买多少股票以最大化预期回报。这里的染色体是非负整数,除非你想表示短路。适应性仍然与项目(1)中的相同,即所选股票的价格总和,随时间变化的平均值减去所选股票的历史价格随时间的标准偏差。该问题变成整数线性编程问题。其他所有内容与第(1)项中的相同。同样,如果您可以选择的股票数量很大,您会发现MILP求解程序可以为您提供更多,比GA更好的服务。
此外,GP(遗传编程)与GA充分不同。 如果您正在尝试发展股票选择策略,或者预测未来股票价格的表达,那么您实际上是GP。对于股票选择问题,ga wld就足够了。