程式

具有買賣差價的 Matlab 投資組合優化

  • August 14, 2020

我試圖找到最佳的期權和股票投資組合,以最小化投資組合回報的標準偏差,同時考慮資產的買入價和賣出價。我得到了股票和相關期權(都具有相同的到期日但不同的行使價)及其買入價和賣出價的快照。

我假設股票價格遵循幾何布朗運動,並且可以無限量地以其買入/賣出價出售/購買每種資產。

我的方法是,如果只有中間價格,則模擬每種資產的回報,計算平均回報和共變異數矩陣,然後將其傳遞給 MATLAB 中的 quadprog 函式,以最小化投資組合的變異數,沒有上限或下限每項資產的數量(即允許賣空)。

但是,對於買賣差價,出售資產的回報與購買相同資產的回報略有不同,因此以與上述相同的方式傳遞回報和共變異數是不准確的。

任何人都可以提出一種合理的方法來解釋這種買賣差價嗎?我曾考慮將資產的買入和賣出視為兩個獨立的資產,計算它們各自的回報並改變約束以適應買入和賣出方向,但它變得非常混亂,我的結果看起來不正確。有沒有更簡單的方法來做到這一點?

謝謝,邁克爾。

我可以建議一個簡單的方法,它並不完美,但合理且不太難。

交易成本將改變最優投資組合

您要做的是考慮交易的交易成本。請注意,Engle 和 Ferstenberg(2007 年)表明,包括交易成本會使有效邊界向下和向右移動(因為增加了交易成本的均值和變異數)。

與忽略交易成本相比,這將導致不同的最優投資組合。關於 Markowitz 投資組合優化(沒有交易成本)的常見抱怨是投資組合表現不佳“樣本外”。包括交易成本(均值和變異數)可以減少表現不佳的問題。

“小”交易的近似值:僅使用買賣價差

對於“小”交易金額,您可以將交易的均值和變異數近似為僅受點差百分比的影響小號一世 $ S_i $ 對於資產一世 $ i $ 小號一世=日誌(一種一世/乙一世)$$ S_i = \log(A_i/B_i) $$ 在哪裡一種一世 $ A_i $ 是要價和乙一世 $ B_i $ 是投標價格。

此外,您必須考慮進入和退出的成本——所以我們乘以單一交易均值和(C一世) $ E(c_i) $ 和變異數曾是(C一世) $ \textrm{var}(c_i) $ 成本減 2。

如果您耐心等待一個可能更好的價格,然後放棄並跨越價差(按報價買入或按出價賣出),這將是:

  • mean:每筆交易平均買賣差價的一半;總計 =2×ˉ小號一世/2=ˉ小號一世 $ 2\times\bar{S}_i/2=\bar{S}_i $ , 和
  • 變異數:cf Rademacher 隨機變數;總計 =2×ˉ小號2一世/4=ˉ小號2一世/2 $ 2\times\bar{S}_i^2/4=\bar{S}_i^2/2 $ .

如果您不耐煩,您的執行價格會更加確定(而且更糟):

  • 意思是:每筆交易的全部點差;總計 =2×ˉ小號一世 $ 2\times\bar{S}_i $ , 和
  • 變異數:0。

然後,您從您的正預期收益中減去這些平均成本中的每一個,並將其添加到負預期收益中,並將成本差異添加到您的收益差異中。或者,等效地: 和(r一世,n和在)=和(r一世)−2符號(r一世)和(C一世),曾是(r一世,n和在)=曾是(r一世)+2曾是(C一世).$$ E(r_{i,new}) = E(r_i) - 2\textrm{sign}(r_i)E(c_i), \ \textrm{var}(r_{i,new}) = \textrm{var}(r_i) + 2\textrm{var}(c_i). $$ 請注意,您不應該讓預期超過 0。如果您的預期回報是 5%,而預期進入+退出成本是 6%,那麼您最好將其視為預期回報為 0% 而不是 -1%預期回報(可能導致做空股票)。

您是否應該將成本差異傳播到共變異數,從相關性和(新)變異數創建共變異數?這取決於您是否認為執行成本相關。如果您希望執行成本相關,請傳播不確定性;如果沒有,只改變你的變異數而不是共變異數。

較大交易的近似值:使用價格影響模型

您提到想要使用買賣差價;但是,我也會暗示一個更好的近似值。基本上,我們可以假設您的交易成本有幾個部分,並使用價格影響模型來更好地了解成本。

雖然有很多價格影響模型,但您在這一步沒有進行交易調度 - 因此您可以使用可能不適合交易調度但可以近似用於投資組合優化的模型。

交易數量問一世 $ Q_i $ 資產一世 $ i $ ,我會使用Torre and Ferrari (1997)模型: 和(C一世)=一種一世+b一世小號ˉ小號一世+b一世問σ一世√|問一世|ˉ在$$ E(c_i) = \alpha_i + \beta_{iS} \bar{S}i + \beta{iQ} \sigma_i\sqrt{\frac{|Q_i|}{\bar{V}}} $$ 在哪裡

  • 一種一世 $ \alpha_i $ 擷取固定成本(如佣金),
  • b一世小號 $ \beta_{iS} $ 獲取您通常支付的對數差價的多少,
  • b一世問 $ \beta_{iQ} $ 估計支付的永久影響(以及根據Obizhaeva 和 Wang (2013)的累積衰減影響),以及
  • ˉ在 $ \bar{V} $ 是每個交易週期的平均交易量。

變異數計算很棘手:您希望將模型係數的不確定性與模型項的不確定性結合起來。如果我不得不猜測這個,我會期待像 曾是(C一世)=σ2圓周率+^b2一世小號ˉ小號24+^b2一世問[σ2一世n−12(Γ(n/2)Γ(n−12))2問2一世ˉ在2+σ2一世問2一世曾是(ˉ在)ˉ在4]$$ \textrm{var}(c_i) = \sigma_\pi^2 + \hat\beta_{iS}^2 \frac{\bar{S}^2}{4} + \hat\beta_{iQ}^2 \left[ \sigma_i^2\frac{n-1}{2}\left(\frac{\Gamma(n/2)}{\Gamma(\frac{n-1}{2})}\right)^2 \frac{Q_i^2}{\bar{V}^2} + \sigma_i^2 Q_i^2\frac{\textrm{var}(\bar{V})}{\bar{V}^4}\right] $$ 在哪裡σ圓周率 $ \sigma_\pi $ 是擬合模型預測區間的標準偏差,並且n $ n $ 是用於估計的觀測數σ一世 $ \sigma_i $ . 最後一項來自變異數σ一世 $ \sigma_i $ , 一項 delta 方法近似為曾是(1/ˉ在)) $ \textrm{var}(1/\bar{V})) $ ,以及隨機變數乘積的變異數

有了這些(希望是更好的)估計和(C一世) $ E(c_i) $ 和曾是(C一世) $ \textrm{var}(c_i) $ 然後,您可以將它們加倍(進入成本和退出成本)並將它們添加到更簡單的小型貿易案例中。

根據買賣差價的大小,它可能根本不重要。首先,我建議您對每種證券隨機選擇出價或要價,並查看最佳權重是否因您的選擇而有很大差異。如果沒有,您可以簡單地忽略這種不對稱性。如果不是,我不確定 MPT 是否能很好地與您的設置配合使用,因為它是一個非常線性的理論,而使用 ask(用於購買)和 bid(用於出售)會引入非線性。

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