本文将模拟退火(SA)算法应用于投资组合优化问题。模拟退火(SA)是一种通用的概率和元启发式搜索算法,可用于找到以具有多个最优的大搜索空间为特征的优化问题的可接受解决方案。投资组合优化涉及在资产之间分配资本,以最大化风险调整回报。

基本模拟退火算法

该算法的灵感来自冶金退火中的随机过程,其中材料被反复加热和冷却。这样做是为了增加材料晶体的尺寸并减少其缺陷。这些材料特性取决于材料中通过加热和冷却调节的热力学自由能水平。

一开始,这个真实世界的概念似乎很难转化为优化算法,但是,通过一些“算法许可证”,得到的算法实际上非常简单。投资组合优化的模拟退火算法基本上只包含11个步骤,其中只有两个非常重要(加下划线),


初始化一个随机可行解,s

初始化找到的最佳解,s *

赋值s *←max(f(s),f( s *))

虽然停止条件不满足:

  生成一个可行的随机解,s'

  计算移动的概率,P(s ← s')

  如果满足移动条件:

    更新当前的解决方案,小号 ← S'

    如果健身小号大于S *,˚F(小号)> ˚F(S *):

      更新找到的最佳解决方案,s * ← s

返回找到的最佳解决方案,s *


这两个步骤特别重要的原因是它们影响了勘探开采权益。探索描述了探索搜索空间的不同区域的算法能力,而Exploitation描述了将搜索集中在搜索空间的有希望区域中的算法能力。

本文的其余部分将进一步详细讨论这两个步骤。下图说明了具有多个最优的搜索空间中的模拟退火算法。蓝色圆圈代表当前解决方案,绿色圆圈代表随机可行解决方案,红色圆圈跟踪找到的最佳解决方案。

生成可行的随机解决方案

为了理解相对于当前解s *生成随机解s'的影响,考虑这两种情况,(1)s'生成接近s *,并且(2)s'生成远离s *。假设s *在搜索空间的有前途的区域中,则在(1)中算法正在利用并且在(2)中算法正在探索。

投资组合中任何一项资产的最大资本配置为1.00,如果我们假设不允许做空,那么投资组合中任何一项资产的最低资本配置为0.00。因为这个有效范围非常小, 所以可以通过对s *的每个维度应用随机百分比扰动来生成  新的 s'。

小扰动与大扰动的影响如下所示,

来自最佳找到的解决方案的大扰动导致两个解决方案之间的总绝对距离更大。

来自最佳找到的解决方案的较小扰动导致两个解决方案之间的总绝对距离较小。

通过控制最大百分比扰动, 可以控制s'  和 s *之间的距离  。因此,可以调整算法的探索和利用。使用三角分布来缩小随时间的最大扰动导致改进的模拟退火算法用于投资组合优化,

下面的第一张图显示了更大的三角形分布,这有助于更好地探索算法的开头。第二幅图像显示较小的三角形分布,这有助于在算法结束时进行更大的利用。绿色圆圈是当前解决方案(蓝色)有可能移动的可能位置。

关于最佳找到的解决方案s *生成的随机解s'的较大三角分布有助于更大的探索,并且应该用于算法的开头。

关于最佳找到的解决方案s *生成的随机解s'的较小三角分布有助于更大的利用,并且应该在算法结束时使用。

请注意,上述绿色解决方案并非像霰弹枪爬山者一样全部生成,而是根据该时间段的概率分布以迭代方式生成,例如迭代0到100将具有比迭代100更宽的三角形分布到200。

计算移动的概率

在模拟退火算法中,当前解s 移动到随机解s'之一的概率取决于s'相对于s的适合度以及已经过的迭代次数。在早期迭代期间,即使不太理想,s也更有可能转移到s'。这类似于随机搜索和探索。在以后的迭代期间,s更有可能移动到s',当且仅当它更理想时。这类似于贪婪和剥削。

模型退火的投资组合优化

为了将这个问题与投资组合优化问题联系起来,我们将每个解决方案s表示为投资组合基数的长度。然后,该向量中的每个元素s(x )表示投资组合中资产x的权重。为了使这个问题更加真实,我们通常需要对这些值和向量的含义施加一些约束,

约束

描述

总分配

断言必须分配的资本总额。这通常是100%或1.0,但如果留有现金,可能会更低。

只有短期或长期

断言投资组合是否被允许做空资产。空头头寸是对市场的赌注(负面分配)。

最大和最小分配

断言范围,指定投资组合资本对任何一项资产的最大和最小风险敞口,例如,不应将超过40%的资本分配给任何一项资产。

最大和最小风险和回报

断言“风险预算”代表投资组合可以承担的最大预期风险金额以及投资组合可能承担的最低预期回报金额。

最低基数

断言分配给该资产的资本大于零的资产数量。例如,具有基数15的投资组合要求投资组合中至少有15个资产具有非零资本分配。

交易成本

断言与投资组合中资产买卖相关的交易成本必须下降的范围。

最大相关性

断言投资组合中资产之间的最大相关性。如果投资组合中各个资产的相关性太高,那么投资组合可能会面临市场风险,例如LTCM。

随着每个附加约束,可行解决方案集缩小。此外,搜索空间变形并且最终可能包含多个最佳值。随着随机优化算法的成功,这种复杂性导致许多确定性优化算法失败。 随机算法,例如模拟退火,即使在找到局部最优之后也可以搜索解。这是通过引入机会元素来实现的,该元素允许它们在搜索空间的不太理想的区域中随机搜索以获得更好的局部最优。

结论

基本的模拟退火算法和增强的模拟退火算法(使用上述三角分布技术)都是相对简单的算法,可以很容易地应用于复杂的投资组合优化问题。这些是投资组合优化问题,其中已经在引入局部最小值和/或不连续区域的搜索空间上声明了多个约束。这是一个在坚固的搜索空间中找到全局最优的算法的GIF,

模拟退火算法在复杂搜索空间中寻找最优解的例证。图片来源:http://en.wikipedia.org/wiki/Simulated_annealing

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

模型退火的投资组合优化相关推荐

  1. 量子退火Python实战(3):投资组合优化(Portfolio) MathorCup2023特供PyQUBO教程

    文章目录 前言 一.什么是投资组合优化? 二.投资组合优化建模 1. 目标函数:回报 2.约束函数:风险 3.最终优化目标函数 三.基于PyQUBO实现 1. 获取数据 2. 数据处理 3. 目标函数 ...

  2. 算法组合 优化算法_算法交易简化了风险价值和投资组合优化

    算法组合 优化算法 Photo by Markus Spiske (left) and Jamie Street (right) on Unsplash Markus Spiske (左)和Jamie ...

  3. 采用粒子群优化算法实现投资组合优化【Matlab实现】

    目录 一. 粒子群算法  1.1 概念 1.1.1 粒子群优化算法思想 1.1.2 更新规则  1.1.3 惩罚项 1.2 程序框图 二.投资组合优化  三.Matlab实现  3.1 结果及可视化 ...

  4. [量化学院]使用cvxopt包实现马科维茨投资组合优化:以一个股票策略为例

    实现平台:BigQuant-人工智能量化投资平台 可在文末前往原文一键克隆代码进行进一步研究 介绍 前文中,我们已介绍了许多量化投资思想,在这篇文章中,你将了解Markowitz投资组合优化的基本思想 ...

  5. 基于JQData的有效前沿组合及投资组合优化

    [转载] 基于JQData的有效前沿组合及投资组合优化 转自 https://www.joinquant.com/community/post/detailMobile?postId=15331&am ...

  6. JQData | 基于JQData的有效前沿及投资组合优化

    基于JQData的有效前沿组合及投资组合优化 转自 https://www.joinquant.com/community/post/detailMobile?postId=15331&pag ...

  7. 数学建模竞赛—基金投资组合优化及绩效评价问题

    呵呵,不错的数学建模竞赛问题,不过这两个问题,都没有统一的答案, 关注中,看有什么优秀的解决方法,可以在实际中应用!!! 从20世纪90年代初恢复证券市场以来,我国证券市场已有很大的发展.截至2007 ...

  8. 量化投资:股票投资组合优化与评估

    Portfolio Optimization and Performance Evaluation 这个文本主要讨论了投资组合优化和表现评估.为了在市场条件下测试策略,需要模拟算法进行交易并验证其表现 ...

  9. CUDA上深度学习模型量化的自动化优化

    CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...

  10. 多目标粒子群优化算法_基于粒子群优化的投资组合优化研究

    原文链接: 基于粒子群优化的投资组合优化研究​tecdat.cn 我今年的研究课题是使用粒子群优化(PSO)的货币进位交易组合优化.在本文中,我将介绍投资组合优化并解释其重要性.其次,我将演示粒子群优 ...

最新文章

  1. 11、Java Swing JList:列表框组件
  2. win7内存占用过高怎么处理
  3. box2d 计算下一帧的位置/角度
  4. 硅谷渐患“大城市”病,世界创新中心或将外移
  5. mysql - GTID主从复制
  6. 华为机试HJ91:走方格的方案数
  7. 面向对象JavaScript入门——来自Mozilla的官网教程
  8. c语言奇偶校验完整程序,求助 奇偶校验的C语言编程
  9. (转载)100+个程序员开发必备参考手册(在线及下载)
  10. 惠普电脑安装Nvidia显卡驱动和cuda小记
  11. Oracle图书馆借阅管理数据库,图书借阅系统的oracle数据库
  12. 三洋p6系列伺服电机说明书_FCA-520京津冀供货商,全系列销售
  13. 面向对象编程 — 为什么要引入抽象概念?
  14. Android 动画丢帧问题
  15. 计算机科学(Computer Science)到底学什么?
  16. 怎么把几个PDF文件合并成一个PDF
  17. 使用代码列出金庸小说中使用过的所有成语
  18. ubuntu18.04使用蓝牙适配器
  19. rx580显卡运行不了Linux,RX580吃鸡不流畅原因找到了 真相令人无语
  20. plc控制电机实验报告_电气控制与PLC实验实验报告

热门文章

  1. 《Effective C#》读书笔记——条目25:用事件模式实现通知使用C#表达设计
  2. FLASH缓动导航制作方法.
  3. 【TDA4系列】 IPC applications应用举例
  4. 【目标检测】CNN的训练图像与测试图像不一致的多尺度问题
  5. SpringBoot 使用小技巧合集
  6. shiro之入口:EnvironmentLoaderListener
  7. css中文本超出部分省略号代替
  8. 信息熵与二进制--信息论系列
  9. python类与对象-如何派生内置不可变类型并修其改实例化行为
  10. 使用Google zxing生成二维码