投資組合管理

計算投資組合的營業額

  • June 29, 2020

我正在嘗試計算投資組合策略的營業額。

首先,我生成一些隨機數據並為其分配日期:

data <- replicate(6,rnorm(1000))
data <- as.data.frame(data)    
dates<-seq(as.Date("1932/09/01"), as.Date("2015/12/01"), by = "1 month",tzone="GMT")-1
   rownames(data)<-dates

我將其轉換為 xts 格式:

library(xts)
data<-as.xts(data,dateFormat="Date")

然後我使用 Return.portfolio() 函式來計算重新平衡的權重,假設採用等權重策略:

library(PerformanceAnalytics)
results <- Return.portfolio(data,rebalance_on="months",geometric=F,verbose=T)

為了計算營業額,我假設我需要期初權重和期末權重。

我從結果中提取這些:

bop <- results$BOP.Weight #beginning of period weights

eop <- results$EOP.Weight #end of period weights

然後計算我減去的營業額bopeop取絕對值:

f<-abs(bop-eop)

最後,為了計算營業額,我使用以下公式:

sum(f)*(1/(nrow(data)-1))

然而,當我在真實數據上測試時(我知道營業額應該是多少),我用這種方法得到了巨大的、不切實際的數字。

我究竟做錯了什麼?

我對營業額的定義來自:Demiguel 等人約束投資組合規範http://faculty.london.edu/avmiguel/DeMiguelGarlappiNogalesUppalMS.pdf第 806 頁

定義是:

在此處輸入圖像描述

首先,您使用的是不良數據。min(data) 讓我得到-3.67(這是隨機記住的),這將是-367%,因為該職位破產並取出另外兩個(可能在槓桿式porftolio中)。但是,為了獲得可重複的答案,讓我們使用 edhec 數據集,只需對原始程式碼進行很少的更改。

library(PerformanceAnalytics)
data(edhec)
results <- Return.portfolio(edhec,rebalance_on="months",verbose=T)

bop <- results$BOP.Weight #beginning of period weights

eop <- results$EOP.Weight #end of period weights

在權重不相等的情況下,這裡有可能出錯,因為當它應該是以下期間權重時,您從期末權重中減去期初權重。例如,市場改變了你的權重,你需要重新設置。

f<-abs(bop-eop)


YourTurnover=sum(f)*(1/(nrow(edhec)-1)) # 0.01242465
SanityCheck=sum(abs(eop-1/ncol(edhec)))/(nrow(edhec)-1) #0.01242465

請注意,上述營業額的定義是所有百分比權重變化的總和除以交易期數。此外,作者不計算他們營業額中的初始分配(例如,從現金到投資的 100% 變化)。健全性檢查僅適用於電子戰案例。

平均營業額為 1.24%,這似乎符合等權重策略。

如果您沒有執行等重策略,我懷疑是 bop-eop 線。因為它應該是 EoP 權重 - 下一個 BoP 權重。

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