ITPub博客

首页 > 大数据 > 数据挖掘 > Python基于粒子群优化的投资组合优化研究

Python基于粒子群优化的投资组合优化研究

原创 数据挖掘 作者:tecdat 时间:2020-10-21 16:47:35 0 删除 编辑

原文链接:

 

 

组合优化

投资组合包括资产和投资资本。投资组合优化涉及决定每项资产应投入多少资金。随着诸如多样化要求,最小和最大资产敞口,交易成本和外汇成本等限制因素的引入,我使用粒子群优化(PSO)算法。

投资组合优化的工作原理是预测投资组合中每种资产的预期风险和回报。该算法接受这些预测作为输入,并确定应在每个资产中投入多少资本,以使投资组合的风险调整回报最大化并满足约束。每种资产的预期风险和回报的预测需要尽可能准确,以使算法表现良好。存在各种方法,在本研究中,我研究了三种常用的方法。

  1. 正态分布式回报 - 在此方法中,创建历史资产值的分布并随机抽样以获得每个资产的未来值。该方法假设历史和未来值是正态分布的。

  2. 返回遵循布朗运动 - 在这种方法中,随着时间的推移生成每个资产的随机游走,表示每日回报。由此计算出投资组合的总体回报。这种方法假设未来的回报遵循随机游走。

  3. 返回遵循几何布朗运动 - 在这种方法中,再次生成随机游走,但根据每日方差和长期市场漂移进行缩放。该方法假设未来的回报遵循缩放的随机游走。

在我的研究中,我发现第三种方法是最准确的

 


粒子群优化(PSO)

 

在PSO中,群中的每个粒子表示为向量。在投资组合优化的背景下,这是一个权重向量,表示每个资产的分配资本。矢量转换为多维搜索空间中的位置。每个粒子也会记住它个人最好的历史位置。对于PSO的每次迭代,找到全局最佳位置。这是群体中最好的个人最佳位置。一旦找到全球最佳位置,每个粒子都会更接近其个人最佳位置和全球最佳位置。当在多次迭代中执行时,该过程产生一个解决该问题的良好解决方案,因为粒子会聚在近似最优解上。

# 此类包含群中的粒子代码class Particle:velocity = []pos = []pBest = []def __init__(self):for i in range(dimension):self.pos.append(random.random())self.velocity.append(0.01 * random.random())self.pBest.append(self.pos[i])return

 

该图描绘了粒子群优化算法相对于全局最佳(蓝色)和个人最佳位置(红色)如何更新群体中每个粒子的位置。

# 此类包含粒子群优化算法类粒子参数优化器class ParticleSwarmOptimizer:solution = []swarm = []def __init__(self):for h in range(swarmSize):particle = Particle()self.swarm.append(particle)

PSO的表现受到权衡的影响。探索描述了PSO探索搜索空间不同区域的能力。Exploitation描述了PSO将搜索集中在搜索空间的有前途区域的能力。为了增强PSO的探索和开发能力,应用了以下算法增强功能:

  • 聚合粒子的随机重新初始化 - 通过在粒子聚集在全局最佳粒子上时重新启动粒子来改进探索。使用两个粒子(载体)之间的相似性函数测量收敛。

 

如果粒子在全局最佳粒子附近会聚,但不如全局最佳粒子适合,则在搜索空间的某处随机重新初始化。这提高了PSO的探索能力。

  • 最佳粒子的选择性突变 - 通过初始化邻近全球最佳粒子的邻居来改进。如果邻居比全球最佳粒子更好,则全球最佳粒子被邻居取代。

 

对于算法的每次迭代,在全局最佳粒子附近创建邻居。如果这些邻居中的任何一个优于全局最佳粒子,则替换全局最佳粒子。

 


使用粒子群优化的投资组合优化

PSO算法可用于优化投资组合。在投资组合优化的背景下,群中的每个粒子代表投资组合中资产之间的潜在资本分配。这些投资组合的相对适应性可以使用许多平衡风险和预期收益的金融效用函数之一来确定。我使用夏普比率,因为这已成为行业认可的基准投资组合表现标准。考虑以下适用于由三个资产组成的投资组合的PSO图示,

 

 

使用粒子群优化(PSO)的投资组合优化的例证。灰色粒子正在更新。红色粒子是灰色粒子的个人最佳位置,蓝色粒子是全球最佳位置。

灰色粒子转换为向量(0.5,0.2,0.3),意味着投资组合资本的50%分配给资产1,20%分配给资产2,30%分配给资产3。该分配的预期夏普比率为0.38,小于个人最佳位置(红色粒子)和全球最佳位置(蓝色粒子)。这样,灰色粒子的位置被更新,使得它更接近全局最佳粒子和个人最佳粒子。

  

 

使用粒子群优化(PSO)的投资组合优化的例证。灰色粒子被更新,使其更接近全球最佳,并且是个人最佳的。得到的矢量比以前更好。

灰色粒子已移动,现在转换为矢量(0.3,0.3,0.4),其预期夏普比率为0.48。该值高于之前的个人最佳位置,因此个人最佳位置(红色粒子)将更新为当前位置。

 

使用粒子群优化(PSO)的投资组合优化的例证。个人最佳位置(红色粒子)现已更新为粒子的当前位置。

使用粒子群优化的真正挑战是确保满足投资组合优化的约束。如前所述,存在许多限制。最常见的限制因素首先是资产之间不再分配和不少于100%的可用资本(即权重向量必须加起来为1.0)。其次,不允许对资产进行负面分配。最后,资本应该分配给投资组合中至少这么多资产。后者是基数约束。两种常用技术用于确保粒子满足约束条件,

  1. 修复不满足约束的粒子 - 对于不满足约束的每个粒子,应用一组规则来改变粒子的位置。

  2. 惩罚不满足约束的粒子的适应性 - 对于不满足约束的每个粒子,惩罚该粒子的夏普比率。

 

 贸易组合

  


 

 

日元,美元,南非兰特和巴西雷亚尔之间的交易组合。投资组合优化的目标是确定应为每笔交易分配多少资金以优化风险调整回报。

  

非常感谢您阅读本文,有任何问题请在下面留言!


 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69982319/viewspace-2728564/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
拓端tecdat分享最in的大数据资讯,提供“一站式”的数据分析学习和咨询体验,让我们一起做有态度的数据人。关注公众号:拓端数据部落、拓端数据。

注册时间:2020-08-21

  • 博文量
    87
  • 访问量
    37453