程式
在 R 中創建投資組合:良好實踐
我對 quantfin 很陌生,但想學習。我已經搜尋了答案(Google和stackex),但沒有找到任何令人滿意的東西(但我可能沒有問正確的問題……)問題:
我必須從期刊重新創建投資組合 (PF),該期刊每 3 個月發布一次,但包含每日數據。該 PF 每 3 個月重新平衡一次。我目前獲得了我需要的所有日常數據(宇宙)。如何以最有用的方式創建我的 PF?
我的理想目標是讓我的 PF 基於時間,只有當時在其中的股票(而不是權重 = 0 的整個宇宙)。
有這個包嗎?什麼是好的做法?
任何幫助表示讚賞
正如 Alex C 所評論的
PMwR
,我維護的 R 包可能會提供一些有用的功能。一個小例子:我創建了一個包含三筆交易的日誌。(請注意,這裡的期刊只是交易的集合。)library("PMwR") library("orgutils") tmp <- readOrg(text=" | instrument | amount | timestamp | price | |------------+--------+------------+-------| | AMZN | 10 | 2018-01-03 | 1201 | | AMZN | -10 | 2018-01-10 | 1250 | | IBM | 20 | 2018-01-10 | 153 | ") tmp$timestamp <- as.Date(tmp$timestamp) J <- as.journal(tmp) J ## instrument timestamp amount price ## 1 AMZN 2018-01-03 10 1201 ## 2 AMZN 2018-01-10 -10 1250 ## 3 IBM 2018-01-10 20 153 ## ## 3 transactions
您可以使用 獲得投資組合的目前組成
position
。position(J) ## 2018-01-10 ## AMZN 0 ## IBM 20
該參數
drop.zero
隱藏了非活動位置。position(J, drop.zero = TRUE) ## 2018-01-10 ## IBM 20 position(J, when = as.Date("2018-1-5"), drop.zero = TRUE) ## 2018-01-05 ## AMZN 10
您也可以計算超過一天的位置:
days <- seq(from = as.Date("2018-1-1"), to = as.Date("2018-1-12"), by = "1 day") position(J, when = days) ## AMZN IBM ## 2018-01-01 0 0 ## 2018-01-02 0 0 ## 2018-01-03 10 0 ## 2018-01-04 10 0 ## 2018-01-05 10 0 ## 2018-01-06 10 0 ## 2018-01-07 10 0 ## 2018-01-08 10 0 ## 2018-01-09 10 0 ## 2018-01-10 0 20 ## 2018-01-11 0 20 ## 2018-01-12 0 20