固定收益

固定收益投資組合優化

  • June 26, 2020

我正在嘗試解決固定收益領域的最大夏普比率投資組合。為此,我在 python 中使用 CVXPY。我用這篇論文作為參考。

這是我的“設置”:

   ## SET UP PROBLEM
   C = np.asmatrix(new_cov)
   mu = np.asmatrix(s['E(r) after FXh']/100)
   mu0 = np.asmatrix(cleared_swaps.iloc[z]['CHF1']/100)

   ## INITIATE WEIGHT VARIABLE
   y = cp.Variable(len(framework))

   # DEFINE CONSTRAINTS AND MODIFY FOR QUADRATIC PROBLEM
   A_mod = A - b.T

   ## CREATE CONSTRAINTS
   constraints = [(mu-mu0)@y==1,
                  0 <= y,
                  A_mod@y.T >= 0]

   ## FORM OBJECTIVE
   obj = cp.Minimize(cp.quad_form(y,C))

   ## FORM AND SOLVE PROBLEM
   prob = cp.Problem(obj, constraints)

   try:
       prob.solve()
       w = y.value/sum(y.value)
       w[w<=0] = 0
       w = w/sum(w)*1
   except:
       print('Exception. Using Market weights')
       w = np.repeat(df_mkt_val_pct.iloc[z][live_currencies.index.tolist()].values,2)/2
       w = w/sum(w)*1

其中 A 基本上持有子投資組合久期(例如不同的歐元久期):

一個

和 b 持有 DV01 限制:

b

現在,當我執行這個腳本時,我得到的投資組合是“反向優化的”,這意味著我的表現一直低於指數。如果我然後反轉最佳權重(例如,我將一種貨幣的減持添加到 BM 權重,這樣我最終得到超重),那麼回報符合預期。

回測

但在我看來,這種行為很奇怪。有沒有辦法如何“翻轉”優化,以便我得到優化的值,然後我可以使用而不必“反轉”它們?

您是否正確地為求解器製定了問題?如果你想最大化一個函式(銳化率) $ f $ , 等價於最小化 $ -f $ . 這種混淆(最小化而不是最大化)基本上會導致與您類似的結果。

您的問題表述是錯誤的,您必須使用Charnes and Cooper 轉換

這意味著您的約束(mu-mu0)@y==1必須是(mu-mu0)@y==kand w=y/k,這意味著k==cp.sum(y)

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