国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程

這篇具有很好參考價值的文章主要介紹了量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。



前言

提示:包含pyQUBO用法:

最近MathorCup2023的A題剛好是投資組合的QUBO建模,剛好有篇日文文章是講這個的,直接翻譯過來。供大家參考?!疽驗檫€沒有獲得作者同意,暫且沒有把文章設置為翻譯,之后會設置成翻譯,或者再加一下自己的東西變成原創(chuàng)?!?/p>

《量子アニーリングを用いたポートフォリオ最適化 – 量子アニーリングソリューションコンテスト》
https://qard.is.tohoku.ac.jp/T-Wave/?p=1987

一、什么是投資組合優(yōu)化?

  • 什么是投資組合優(yōu)化?

投資組合優(yōu)化是在考慮風險和收益的情況下尋找資產(chǎn)(投資組合)的最佳組合。投資組合優(yōu)化有多種理論,但這次我們基于現(xiàn)代投資組合理論進行投資組合優(yōu)化。

  • 什么是現(xiàn)代投資組合理論?

這是對現(xiàn)代投資組合理論(又名現(xiàn)代投資理論)的描述。

它基于美國哈里·馬科維茨于 1950 年代建立的多元化投資理論。為了在資產(chǎn)管理中期望一定的回報同時抑制價格波動風險,將大量股票和多種資產(chǎn)分散投資為一個投資組合是有效的。除了價格波動風險及其包含率外,它由表示任何兩個問題之間價格變動的連貫性的相關系數(shù)決定。他因在投資理論方面的開創(chuàng)性工作而獲得 1990 年諾貝爾經(jīng)濟學獎。

然而,該理論建立在不切實際的假設之上,例如假設股票的價格波動風險從過去到未來都不會發(fā)生變化。為此,2008年雷曼震蕩后,眾多金融資產(chǎn)之間的相關系數(shù)增加,同時價格波動的風險也增加,也有人指出該理論的局限性,認為有局限性。

二、投資組合優(yōu)化建模

1. 目標函數(shù):回報

最大化回報和最小化風險(協(xié)方差)被視為最佳投資組合措施。
代表收益回報的目標函數(shù)如下:

量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程

2.約束函數(shù):風險

量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程

3.最終優(yōu)化目標函數(shù)

上面兩個函數(shù)相加就是最終優(yōu)化的目標函數(shù)。
量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程
系數(shù)A應根據(jù)重點是最大化回報還是最小化風險來調(diào)整。

三、基于PyQUBO實現(xiàn)

1. 獲取數(shù)據(jù)

首先,使用pandas_datareader 從yahoo finance 獲取股價數(shù)據(jù)。
這一次,我們將使用具有代表性的美國股票指數(shù) DOW30 指數(shù)中包含的 30 只股票的 2018 年數(shù)據(jù)來優(yōu)化投資組合。

import pandas_datareader.data as web
import datetime

start = datetime.datetime(2018, 1, 2)
end = datetime.datetime(2018, 12, 31)
DOW30 = ['AAPL','AMGN','AXP','BA','CAT','CRM','CSCO','CVX','DIS','GS','HD','HON', 'IBM','INTC','JNJ','JPM','KO','MCD','MMM','MRK','MSFT','NKE', 'PG','TRV','UNH','V','VZ','WBA','WMT']
stockcodes = DOW30+DOW30

data = web.DataReader(DOW30, 'yahoo', start, end)
df_price_DOW30 = data['Adj Close']

2. 數(shù)據(jù)處理

從前面得到的股價數(shù)據(jù)中,求出每只股票每天的幾何平均收益和協(xié)方差矩陣。

  • 補充(什么是幾何平均數(shù)?)
    量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats.mstats import gmean 

df_price0 = pd.merge(df_price, df_price, on='Date')
rates = []

for sc in stockcodes:
    df = df_price.loc[:,sc]
    return_rate = np.zeros(len(df.values))
    for k in range(len(df.values)-1):
        return_rate[k+1] = (df[k+1] - df[k])/df[k]
  
    rates.append(return_rate)

N = len(stockcodes)

list_price_start = np.zeros(N)
for n in range(N):
    list_price_start[n] = df_price.loc['2018-01-02',stockcodes][n]
    
list_price_end = np.zeros(N)
for n in range(N):
    list_price_end[n] = df_price.loc['2018-12-31',stockcodes][n]

#求幾何平均w1
for k in range(N):
    for n in range(len(rates[1])):
                   rates[k][n] = rates[k][n]+1

w_1 = np.zeros(N)
for k in range(N):
    w_1[k] = gmean(rates[k])

w = np.zeros(N)
for n in range(N):
    w[n] = w_1[n]-1

for k in range(N):
    for n in range(len(rates[1])):
                   rates[k][n] = rates[k][n]-1

3. 目標函數(shù)PyQUBO實現(xiàn)

根據(jù)之前獲得的每只股票的每日幾何平均收益和協(xié)方差矩陣,準備使用 PyQUBO 進行優(yōu)化的目標函數(shù)。


from pyqubo import Array, Constraint, Placeholder, solve_qubo

x = Array.create('x', shape=N, vartype='BINARY')# 二值變量

K = 1000 #投資額
constr = (((np.dot(x,list_price_start))-0.9*K)/10)**2 #預算約束

#回報部分的目標函數(shù)
cost = 0
for i in range(N):
    cost = cost - w[i]*x[i]
#風險部分的約束函數(shù)
cost2 = 0
for i in range(N):
    for j in range(N):
        cost2 = cost2 +x[i]*x[j]*np.sum((rates[i]-w[i])*(rates[j]-w[j]))/len(rates[i])
#整體的目標函數(shù)
cost_func = 2*cost + cost2 + Placeholder('a')*Constraint(constr, label='Kconstr') 
model = cost_func.compile()
max_coeff = np.max(abs(w))

#調(diào)整約束強度
feed_dict = {'a': 17.0*max_coeff}
qubo, offset = model.to_qubo(feed_dict=feed_dict)

4. OpenJij實施優(yōu)化

這一次,我們將使用 SQA(模擬量子退火)庫 OpenJij 來執(zhí)行優(yōu)化。

from openjij import SQASampler
sampler = SQASampler(num_sweeps=3000)
R = 300
sampleset = sampler.sample_qubo(qubo,num_reads=R)
print(sampleset.record)

最終原文還有很多可視化分析,大家用Google翻譯,邊翻邊看吧。

總結

  • 成本最低的投資組合并未顯示出穩(wěn)定的結果,但頻率評估的投資組合始終優(yōu)于 Dow30指數(shù)。
  • 即使應用于不同年份的數(shù)據(jù),頻率評級的投資組合也匹配或優(yōu)于Dow30 指數(shù)。
  • 當應用于另一年的數(shù)據(jù)時,它很少被 Dow30Index 顯著擊敗。

這個文章整體比較簡單,主要是給大家提供個PyQUBO的例子。文章來源地址http://www.zghlxwxcb.cn/news/detail-435768.html

到了這里,關于量子退火Python實戰(zhàn)(3):投資組合優(yōu)化(Portfolio) MathorCup2023特供PyQUBO教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包