Python基於粒子羣優化的投資組合優化研究

原文連接:http://tecdat.cn/?p=6811

我今年的研究課題是使用粒子羣優化(PSO)的貨幣進位交易組合優化。在本文中,我將介紹投資組合優化並解釋其重要性。其次,我將演示粒子羣優化如何應用於投資組合優化。第三,我將解釋套利交易組合,而後總結個人研究結果。

組合優化

投資組合包括資產和投資資本。投資組合優化涉及決定每項資產應投入多少資金。隨着諸如多樣化要求,最小和最大資產敞口,交易成本和外匯成本等限制因素的引入,我使用粒子羣優化(PSO)算法。算法

投資組合優化的工做原理是預測投資組合中每種資產的預期風險和收益。該算法接受這些預測做爲輸入,並肯定應在每一個資產中投入多少資本,以使投資組合的風險調整收益最大化並知足約束。每種資產的預期風險和收益的預測須要儘量準確,以使算法表現良好。存在各類方法,在本研究中,我研究了三種經常使用的方法。app

  1. 正態分佈式收益- 在此方法中,建立歷史資產值的分佈並隨機抽樣以得到每一個資產的將來值。該方法假設歷史和將來值是正態分佈的。
  2. 收益遵循布朗運動 - 在這種方法中,隨着時間的推移生成每一個資產的隨機遊走,表示每日收益。由此計算出投資組合的整體收益。這種方法假設將來的收益遵循隨機遊走。
  3. 收益遵循幾何布朗運動 - 在這種方法中,再次生成隨機遊走,但根據每日方差和長期市場漂移進行標準化。該方法假設將來的收益遵循標準化的隨機遊走。

在個人研究中,我發現第三種方法是最準確的dom


粒子羣優化(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的探索能力。spa

  • 最優粒子的選擇性突變 - 經過初始化鄰近全局最優粒子的鄰居來改進。若是鄰居比全局最優粒子更好,則全局最優粒子被鄰居取代。

對於算法的每次迭代,在全局最優粒子附近建立鄰居。若是這些鄰居中的任何一個優於全局最優粒子,則替換全局最優粒子。code


使用粒子羣優化的投資組合優化

PSO算法可用於優化投資組合。在投資組合優化的背景下,羣中的每一個粒子表明投資組合中資產之間的潛在資本分配。這些投資組合的相對適應性可使用許多平衡風險和預期收益的金融效用函數之一來肯定。我使用夏普比率,由於這已成爲行業承認的基準投資組合表現標準。考慮如下適用於由三個資產組成的投資組合的PSO圖示,blog

使用粒子羣優化(PSO)的投資組合優化的例證。灰色粒子正在更新。紅色粒子是灰色粒子的局部最優位置,藍色粒子是全局最優位置。ci

灰色粒子轉換爲向量(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種不一樣的貨幣。貨幣包括澳元,加拿大元,瑞士法郎,人民幣等。

很是感謝您閱讀本文,有任何問題請在下面留言!


相關文章
相關標籤/搜索