組合選擇

投資組合優化中的抽樣問題

  • April 17, 2014

總而言之,我正在嘗試執行以下操作

  1. 債券子集 1: 獲取美元債券列表 –> 過濾掉 YTM > y% DUR > 10 Y 等的債券。這給了我們感興趣的債券。所以最後我們將得到這些債券的一個子集最終投資組合中的債券
  2. 債券子集 2:****我們肯定需要包括的債券清單。與之前的子集不同,這些債券絕對應該包含在最終投資組合中
  3. 約束

:匹配總持續時間和關鍵利率持續時間:給定客戶負債的 DV01 配置文件,生成的投資組合應與此配置文件匹配,偏差為 +- X% b。應用部門限制:金融部門的總計 <= 總計等的 0.25。.. c。單一證券投資的上下限 d.結果投資組合中的最大證券數量 = N 4. 目標:實現產量 = Y % 或最大化產量

所以我創建了一組不等式來滿足這些約束,並且我也定義了我的目標函式。我正在使用 matlab fmincon 來實現這一點。

問題 fmincon 試圖在優化中包含所有鍵,結果是不滿足約束。我需要能夠從子集 1 中選擇性地選擇或刪除鍵。這意味著我需要求解器具有可變數量的變數。為了解決這個問題,我正在尋找對 Bonds 1 的子集進行採樣並對此執行求解器的最佳方法,以便我得到滿足約束的投資組合。有沒有人對投資組合優化中的這種抽樣問題有任何想法。(請不要建議考慮所有可能的債券組合來找到滿足約束的子集並且我得到最大收益,因為程式碼的性能在這裡非常重要,證券數量約為 1000)

如果我對您的理解正確,那麼您為您的投資組合定義了一個由“1.”定義的過濾器。

A)因此,您要麼在開始與優化有關的任何事情之前過濾掉這些鍵。如果您有興趣加快您的程序,這應該是要走的路。

B)如果你想在優化中做所有事情,那麼你需要形式的約束

$$ w_i = 0 \text{ if asset }i \text{ does not pass the filter} $$ 這樣做你在優化宇宙中擁有所有的債券,但你有很多不必要的變數。 例如,如果您的大學是 $ 10^6 $ 債券,只有 $ 20% $ 滿足過濾器然後使用 A)你只有 200 000 個變數,使用 B)你有 $ 10^6 $ 變數和 800 000 具有微不足道的約束。

另一個問題是你的問題非常大……

編輯在 OP 發表一些評論後:您想要做的是具有基數約束的優化。這種約束很難處理。有了這些,你就離開了持續優化的領域,進入了混合整數二次規劃。您要麼需要一些您相信的啟發式方法,要麼更好地尋找(大多數情況下)可以處理整數約束的商業求解器。

你所做的是引入額外的變數 $ k_i,i=1,\ldots,n $ 和約束

$$ k_i \in {0,1} \ w_i \le k_i \ \sum k_i \le K $$ 對於某個整數 $ K $ . 目標函式不變。

我會使用Metropolis Monte Carlo /模擬退火方法來解決您的問題。

從滿足約束 (2)、(3) 和基數約束的任意完全投資組合開始 $ N \le K $ . 然後選擇以下試驗動作之一:

  1. 選擇兩個債券 $ i,j $ 隨機並執行隨機權重轉移 $ w_i \rightarrow w_i + \delta w $ , $ w_j \rightarrow w_j - \delta w $ , 或者
  2. 隨機刪除債券並將投資組合權重調整為 $ \sum w_i = 1 $ , 或者
  3. 向投資組合添加新債券並重新調整權重

在這些試動中的每一個之後,檢查是否滿足所有約束,並使用 Metropolis 條件以機率接受試配置 $ \min(1,\exp((o_{trial} - o_{old})/T)) $ . $ o_{trial}, o_{old} $ 是目標函式並且 $ T $ 是一個“溫度”,它被初始化,使得 Metropolis 條件的指數為 1 階。 $ T $ 逐漸減少,直到投資組合“凍結”為最佳或接近最佳的配置。這終止了優化。

備註:應該更頻繁地選擇嘗試動作 1(可能是 90%),如果投資組合只做多,那麼這會限制 1 中可能的嘗試動作。

引用自:https://quant.stackexchange.com/questions/10932