簡體   English   中英

使用SAS計算市場加權回報

[英]calculate market weighted return using SAS

我有四個變量NameDateMarketCapReturn Name是公司名稱。 Date是時間戳。 MarketCap顯示了公司的規模。 Return是它在Date返回。

我想創建一個額外的變量MarketReturn ,它是每個時間點市場的價值加權回報。 對於每天t,MarketCap加權回報=總和[return(i)*(MarketCap(i)/ Total(MarketCap)](return(i)是公司i在第t天返回)。

我這樣做的方式非常低效。 我想必須有一些功能可以很容易地在SAS中實現這個目標,所以我想問一下是否有人可以改進我的代碼。

步驟1:按date排序數據步驟2:計算每天的總市場價值TotalMV = sum( TotalMV )。 步驟3:計算權重為每個公司(重量= MarketCap / TotalMV )步驟4:創建一個新的變量“貢獻” =返回*重量為每個公司STEP5:總結Contribution在每一天。 總和(貢獻)

許多SAS PROC都支持加權平均值。 其中一個更常見,全面有用的是PROC SUMMARY

PROC SUMMARY NWAY DATA = my_data_set ; 
    CLASS Date ; 

    VAR Return / WEIGHT = MarketCap ;

    OUTPUT
       OUT = my_result_set 
       MEAN (Return) = MarketReturn
    ;
RUN;

NWAY部分告訴PROC,觀察結果應僅按CLASS聲明中的規定進行分組 - 它不應提供未分組的總數等。

CLASS Date片段告訴PROC按日期對觀察結果進行分組。 使用CLASS時,無需對數據進行預排序。 如果你說BY Date你必須預先排序。 使用BY的唯一理由是,如果您的數據集非常大且自然排序,您可以獲得一些性能。 在大多數情況下堅持CLASS

VAR Return / WEIGHT = MarketCap告訴proc,對Return任何加權計算都應使用MarketCap作為權重。

最后, OUTPUT語句指定要將結果寫入的數據集(使用OUT選項),並指定將Return的平均值計算為MarketReturn

使用PROC SUMMARY可以做很多很多事情。 PROC SUMMARY的文檔很少,但僅僅因為它與PROC MEANS幾乎完全相同,並且SAS不希望為兩者生成大部分相同文檔的大量內容。 以下是SAS 9.4 PROC MEANS文檔的鏈接 兩個PROCS之間的主要區別是, SUMMARY只輸出到數據集,而MEANS默認輸出到屏幕上。 如果您想立即在屏幕上看到結果,請嘗試PROC MEANS

OUTPUT語句中的MEAN關鍵字來自SAS的統計關鍵字列表, 這里有一個有用的參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM