乐趣区

关于数据挖掘:Python基于粒子群优化的投资组合优化研究附代码数据

全文链接:http://tecdat.cn/?p=6811

最近咱们被客户要求撰写对于粒子群优化的钻研报告,包含一些图形和统计输入。

粒子群优化(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 

点击题目查阅往期内容

Python 计算股票投资组合的危险价值(VaR)

左右滑动查看更多

01

02

03

04

该图描述了粒子群优化算法绝对于全局最优(蓝色)和部分最优地位(红色)如何更新群体中每个粒子的地位。

# 此类蕴含粒子群优化算法类粒子参数优化器
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. 惩办不满足束缚的粒子的适应性 – 对于不满足束缚的每个粒子,惩办该粒子的夏普比率。

套利交易组合组合

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


通过使多种货币的投资多样化,能够加重外汇损失的危险,但不能打消。因而,套利交易的投资组合自身危险低于个别套利交易。在套利交易投资组合的背景下,投资组合优化的指标是进一步升高外汇损失的危险,同时进步投资组合实现的投资收益。

投资组合优化的指标是确定应为每笔交易调配多少资金以优化危险调整收益。

在我的钻研中,我应用粒子群优化算法来确定一组套利交易之间的投资资本的最优调配。我的钻研中的套利交易投资组合包含 22 种不同的货币。货币包含澳元,加拿大元,瑞士法郎,人民币等。

十分感谢您浏览本文,有任何问题请在上面留言!

本文摘选 Python 基于粒子群优化的投资组合优化钻研 ,点击“ 浏览原文”获取全文残缺材料。


点击题目查阅往期内容

动量和马科维茨 Markowitz 投资组合 (Portfolio) 模型实现 \
Python 危险价值计算投资组合 VaR、冀望损失 ES\
极值实践 EVT、POT 超阈值、GARCH 模型剖析股票指数 VaR、条件 CVaR:多元化投资组合预测危险测度剖析 \
Fama French (FF) 三因子模型和 CAPM 模型剖析股票市场投资组合危险 / 收益可视化 \
R 语言 Fama-French 三因子模型理论利用:优化投资组合 \
R 语言动量和马科维茨 Markowitz 投资组合 (Portfolio) 模型实现 \
Python 计算股票投资组合的危险价值(VaR)\
R 语言 Markowitz 马克维茨投资组合实践剖析和可视化 \
R 语言中的狭义线性模型(GLM)和狭义相加模型(GAM):多元(平滑)回归剖析保险资金投资组合信用风险敞口 \
Python 基于粒子群优化的投资组合优化钻研 \
多均线趋势策略玩转股票投资 R 语言中的狭义线性模型(GLM)和狭义相加模型(GAM):多元(平滑)回归剖析保险资金投资组合信用风险敞口 Python 基于粒子群优化的投资组合优化钻研隐马尔科夫模型 (HMM) 在股票市场实战 R 语言隐马尔可夫模型 HMM 辨认一直变动的股票市场条件基于 ARCH 模型股价稳定率建模剖析 \
R 应用 LASSO 回归预测股票收益 \
IBM SPSS Modeler 通过数据挖掘咱们能从股市数据失去什么 \
用 R 语言实现神经网络预测股票实例 \
应用 R 语言对 S&P500 股票指数进行 ARIMA + GARCH 交易策略 \
用 R 语言实现神经网络预测股票实例 \
用机器学习辨认一直变动的股市情况—隐马尔科夫模型 (HMM) 股票指数预测实战

退出移动版