更多精彩內容,歡迎關注公眾號:數量技術宅,也可新增技術宅個人微訊號:sljsz01,與我交流。

期貨行情瞬息萬變,保證金體系決定了期貨交易的槓桿屬性。保證金放多了,資金利用率低,放少了,可能在大幅度的行情波動中造成強平的結果,甚至成為最終盈利和虧損的界限。所以,需要有一個衡量標準,為我們的倉位設定提供參考,VaR模型是科學管理倉位,提升策略效率的一個不錯的選擇。

VaR模型簡述

在我們決定倉位的時候,我們其實需要考慮兩個重要變數,一個是可能發生的虧損金額,另一個是發生虧損的可能性。用通俗的語言來打個比方,在99%置信區間下,Var值為2w,那麼意味著每次交易虧掉2w權益的可能性是1%。具體公式:

VaR風險度 = 一定置信度下的VaR值/權益 * 100%

VaR模型的計算方法

VaR計算方法很多,比如歷史模擬法、蒙特卡洛模擬法、核函式法、半引數法、引數法等。

本次我們使用引數法中的Delta-正太模型:

在服從正態分佈的假設下,資產Var值為:

 

式中,$\bar\mu$是資產期望收益,$\bar\sigma$為標準差,$\delta_t$是要計算的時間長度,$Z{1-\alpha}$是從正太分佈表中查到的對應於置信度水平$1-\alpha$的Z值,比如$\alpha = 0.01$的$Z{1-\alpha}=2.326$。

在期貨市場中,只要我們把保證金控制在Var最大虧損百分比以上,我們就可以認為在這一置信水平下,可以極大程度防範風險。

通過Var模型評估風險

資料選擇

選取近兩年的期貨所有品種的連續合約價格,置信度的選擇,我們選取了99%和95%兩個。

核心程式碼模組

   if len(data[price].dropna()) != 0:
       #日收益率 收盤價
       data['d_return'] = data[price].pct_change()
       print(code)
       #收益率均值
       mean_return = data['d_return'].mean()

       #標準差
       std = data['d_return'].std()

       #VAR值
       var1 = mean_return - Z1 * std
       var5 = mean_return - Z5 * std

       #寫入表格
       dic = {'code': code,
              'var1': var1,
              'var5': var5}
       if len(table) == 0:
           table = pd.DataFrame([dic])
       else:
           table = table.append([dic])

部分品種VAR結果視覺化

買入持有 + VAR

那麼我們算出了var之後,倉位的變化是否能夠改善投資組合的整體表現呢?

為了排除策略的影響,我們讓所有品種都採用最簡單的買入並持有策略,在這個策略下,使用所有品種平均持倉和根據var進行倉位微調之後,整個策略的表現是否會有影響。

由於我們使用了var1和var5,因此我們以var1的權重weight_var1,記為w1,同樣還有w5,w0表示初始權重,所有倉位平均分配。

我們的目標是計算w0,w1,w5的夏普率的差別,看看通過權重的變化,夏普率是否有所改善。

核心程式碼模組:

for code in list['wind_code']:
   tmp[code] = data[code]*float(table[table['code'] == code]['w1'])
df['w1'] = tmp.sum(axis = 1)
df['w1_return'] = df['w1'].pct_change()
mean1 = df['w1_return'].mean()
std1 = df['w1_return'].std()
sharp1 = 2**0.5*mean1/std1

for code in list['wind_code']:
   tmp[code] = data[code]*float(table[table['code'] == code]['w5'])
df['w5'] = tmp.sum(axis = 1)
df['w5_return'] = df['w5'].pct_change()
mean5 = df['w5_return'].mean()
std5 = df['w5_return'].std()
sharp5 = 2**0.5*mean5/std5

最終我們計算得出:

  均值 標準差 夏普率
平均倉位 0.00064372690041408 0.01082542031323569 0.08409533179205349
根據var1調倉 0.00078209905493337 0.01147973020602057 0.09634852655560597
根據var5調倉 0.00078063238309689 0.01148086624921166 0.09615832807729695

可以看到,從夏普率的角度,不論是根據var1調倉還是根據var5調倉,兩者數值都有所提高,提高幅度在14.2%。可見,通過VAR模型進行倉位控制,可以在很大程度上,改善投資組合的表現。

VAR倉位管理在量化策略中的表現

我們已經驗證了倉位在投資組合當中不可替代的作用,那麼在實際的應用表現中,整體倉位比例的變化對於組合的收益率曲線有什麼影響。我們以均線策略模型為例,抽取部分策略品種進行體現。從收益率資料的表現看,不管是組合中的品種表現,還是整個組合的表現,var調倉的效果都要比平均倉位的表現要好一些。

部分品種比較曲線,w1代表原始策略表現,w0代表經VAR調整倉位後策略表現:

品種彙總曲線,同樣的,w1代表原始策略表現,w0代表經VAR調整倉位後策略表現:

想要獲取本次分享的完整程式碼,或是任何關於資料分析、量化投資的問題,歡迎新增技術宅微信:sljsz01,一起交流


往期乾貨分享推薦閱讀

數字貨幣穩定幣對網格做市策略

數字貨幣資金費策略

分享一個年化15%以上的無風險套利機會

網格交易系統開發

通過深度學習股價截面資料分析和預測股票價格

Omega System Trading and Development Club內部分享策略Easylanguage原始碼

一個真實資料集的完整機器學習解決方案(下)

一個真實資料集的完整機器學習解決方案(上)

如何使用交易開拓者(TB)開發數字貨幣策略

股指期貨高頻資料機器學習預測

如何使用TradingView(TV)回測數字貨幣交易策略

如何投資股票型基金?什麼時間買?買什麼?

【數量技術宅|量化投資策略系列分享】基於指數移動平均的股指期貨交易策略

AMA指標原作者Perry Kaufman 100+套交易策略原始碼分享

【 數量技術宅 | 期權系列分享】期權策略的“獨孤九劍”

【數量技術宅|金融資料系列分享】套利策略的價差序列計算,恐怕沒有你想的那麼簡單

【數量技術宅|量化投資策略系列分享】成熟交易者期貨持倉跟隨策略

如何獲取免費的數字貨幣歷史資料

【數量技術宅|量化投資策略系列分享】多週期共振交易策略

【數量技術宅|金融資料分析系列分享】為什麼中證500(IC)是最適合長期做多的指數

商品現貨資料不好拿?商品季節性難跟蹤?一鍵解決沒煩惱的Python爬蟲分享

【數量技術宅|金融資料分析系列分享】如何正確抄底商品期貨、大宗商品

【數量技術宅|量化投資策略系列分享】股指期貨IF分鐘波動率統計策略

【數量技術宅 | Python爬蟲系列分享】實時監控股市重大公告的Python爬蟲