原文链接:

基于粒子群优化的投资组合优化研究​tecdat.cn

我今年的研究课题是使用粒子群优化(PSO)的货币进位交易组合优化。在本文中,我将介绍投资组合优化并解释其重要性。其次,我将演示粒子群优化如何应用于投资组合优化。第三,我将解释套利交易组合,然后总结我的研究结果。


组合优化

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

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

  1. 正态分布式回报 - 在此方法中,创建历史资产值的分布并随机抽样以获得每个资产的未来值。该方法假设历史和未来值是正态分布的。
  2. 返回遵循布朗运动 - 在这种方法中,随着时间的推移生成每个资产的随机游走,表示每日回报。由此计算出投资组合的总体回报。这种方法假设未来的回报遵循随机游走。
  3. 返回遵循几何布朗运动 - 在这种方法中,再次生成随机游走,但根据每日方差和长期市场漂移进行缩放。该方法假设未来的回报遵循缩放的随机游走。

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


粒子群优化(PSO)

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

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

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. 惩罚不满足约束的粒子的适应性 - 对于不满足约束的每个粒子,惩罚该粒子的夏普比率。

贸易组合

对于我的研究,我将这种技术应用于套利交易组合。套利交易组合包括多个套利交易。 套利交易是一种交易策略,其中交易者卖出利率相对较低的货币,并使用这些资金购买不同的货币,从而产生更高的利率。使用此策略的交易者试图捕捉称为利率差异的利率之间的差异。


通过使多种货币的投资多样化,可以减轻外汇损失的风险,但不能消除。因此,套利交易的投资组合本身风险低于个别套利交易。在套利交易投资组合的背景下,投资组合优化的目标是进一步降低外汇损失的风险,同时提高投资组合实现的投资回报。

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

在我的研究中,我使用粒子群优化算法来确定一组套利交易之间的投资资本的最优分配。我的研究中的套利交易投资组合包括22种不同的货币。货币包括澳元,巴西雷亚尔,加拿大元,瑞士法郎,人民币,丹麦克朗,欧元,英镑,印尼盾,以色列新谢克尔,印度卢比,墨西哥比索,马来西亚林吉特,挪威克朗,新西兰元,菲律宾比索,俄罗斯卢布,瑞典克朗,泰铢,土耳其里拉和美元。

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


多目标粒子群优化算法_基于粒子群优化的投资组合优化研究相关推荐

  1. 蒙特卡洛粒子滤波定位算法_基于粒子滤波的TBD算法仿真—MATLAB仿真

    目标跟踪的最终目的是在最小的误差下确定目标的位置,而在无线传感器网络中要实现这个目的需要很多相关技术的支持,如定位技术.目标检测技术.估计技术.节能技术等.目标跟踪问题的求解有很多方法, 从算法的考虑 ...

  2. 【智能优化算法】基于粒子群结合NSGA2算法求解多目标优化问题附Matlab代码

    1 内容介绍 为解决高度复杂的热电联合经济排放调度问题,本研究提出了一种将非支配排序遗传算法II和多目标粒子群优化算法相结合的协同混合元启发式算法,以经济地运行电力系统并减少环境污染的影响. .在迭代 ...

  3. 多目标优化算法:基于非支配排序的瞪羚优化算法(Non-Dominated Sorting Gazelle Optimization Algorithm,NSGOA)

    瞪羚优化算法(Gazelle Optimization Algorithm,GOA)由Agushaka等人于2022年提出,该算法模拟了瞪羚逃避捕食者的行为,思路新颖,性能高效. 瞪羚的身高60-11 ...

  4. 【智能优化算法】基于自适应策略的混合鲸鱼优化算法求解单目标优化问题附matlab代码

    1 简介 针对鲸鱼优化算法在函数优化时存在收敛速度慢,易陷入局部最优等问题,提出了一种基于自适应策略的混合鲸鱼优化算法.该算法中先利用蝙蝠算法的局部搜索机制对当前鲸鱼算法最优解进行高斯扰动产生局部新解 ...

  5. 多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)

    蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球.跳舞.觅食.偷窃和繁殖行为的启发所得. 一.蜣螂优化 ...

  6. python数据预测模型算法_基于机器学习的股票分析与预测模型研究

    摘 要:近年来,随着全球经济与股市的快速发展,股票投资成为人们最常用的理财方式之一.本文研究的主要目标是利用机器学习技术,应用Python编程语言构建股票预测模型,对我国股票市场进行分析与预测.采用S ...

  7. 【优化算法】基于matlab量子粒子群算法求解单目标优化问题【含Matlab源码 2203期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]基于matlab量子粒子群算法求解单目标优化问题[含Matlab源码 2203期] 点击上面蓝色字体,直接付费下载,即可. 获 ...

  8. 【优化求解】基于粒子群算法求解多目标优化问题matlab源码

    [优化求解]基于粒子群算法求解多目标优化问题matlab源码 1 算法介绍 1.1 关于速度和位置 粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快 ...

  9. 混合储能系统容量优化MATLAB程序基于粒子群算法

    混合储能系统容量优化MATLAB程序基于粒子群算法 (1)该程序为基于粒子群算法的混合储能系统容量优化程序,中文核心期刊论文源程序,配有该论文,再给一篇类似的参考论文. (2)该程序中混合储能系统为蓄 ...

最新文章

  1. 数据结构学习(十三)、快速排序
  2. 使用Identity Server 4建立Authorization Server (2)
  3. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(双分类变量分组可视化)实战(dot plot)
  4. tab选项卡在鼠标经过时实现切换延迟
  5. leetcode第七题整数反转
  6. RPNet++:人脸对齐faceAlignment和基于CNN的三维人脸恢复
  7. 『操作系统』 进程的描述与控制 Part2 进程同步
  8. 论文浅尝 | 基于动态知识图谱向量表示的对称合作对话代理的学习
  9. 垃圾回收器之标记擦除法
  10. ARM入门笔记(4)
  11. vs error:无法打开源文件“stdafx.h
  12. 006--C++动态内存(简介)
  13. JAVA8免费下载安装(win10)
  14. mro python_python中的MRO算法[转]
  15. xp的服务器系统怎么安装系统,如何使用u盘安装xp系统,教您如何安装
  16. YY/T 0316风险管理对医疗器械得应用学习分享(一)
  17. 快速了解 CMYK印刷色与三原色,CMY三原色为什么要加K黑色?
  18. HTML入门零基础教程(四)
  19. 手机QQ2010(BlackBerry)Beta1公测
  20. 朱棣文2009年哈佛大学演讲:未来并非在劫难逃

热门文章

  1. Python教程:json中encode与decode区别
  2. Python基础教程:repr()与str() 的区别
  3. python常见面试题:m1={‘a‘:1,‘b‘:2,‘c‘:1} 将同样的value的key集合在list里,输出{1:[‘a‘,‘c‘],2:[‘b‘]}
  4. Python中的高效的集合操作
  5. Python--unique()与nunique()函数
  6. Python文件读写、StringIO和BytesIO
  7. Python 神工具包!翻译、文字识别、语音转文字统统搞定
  8. 20200301 Intel Realsense D435摄像头掉线问题测试数据记录
  9. Intel Realsense D435 hardware_reset()后循环打印测试len(ctx.query_device())结果
  10. Python 用 if __name__ == ‘__main__‘:语句来控制代码是被直接运行还是导包执行