我必須計算給出股票歷史價格序列的向量的回報。載體是形式:如何計算價格向量的回報?
a <- c(10.25, 11.26, 14, 13.56)
我需要計算每日的收益/損失(%) - 即什麼是從11.26到14它已經從10.25到11.26,則增益等
有一個函數來自動計算這個?
我必須計算給出股票歷史價格序列的向量的回報。載體是形式:如何計算價格向量的回報?
a <- c(10.25, 11.26, 14, 13.56)
我需要計算每日的收益/損失(%) - 即什麼是從11.26到14它已經從10.25到11.26,則增益等
有一個函數來自動計算這個?
使用您的樣本數據,我想你指的是以下幾點:
a <- c(10.25, 11.26, 14, 13.56)
> diff(a)/a[-length(a)]
[1] 0.09853659 0.24333925 -0.03142857
diff
返回滯後的差異矢量和a[-length(a)]
下降的最後一個元素。
您可能會發現功能quantmod
相關工作:
> require(quantmod)
> Delt(a)
Delt.1.arithmetic
[1,] NA
[2,] 0.09853659
[3,] 0.24333925
[4,] -0.03142857
ret<-diff(log(a))
這會給你的幾何回報 - 返回遵循對數正態分佈(下限爲-100%,因爲價格總是非負),因此ln(prices)
遵循正態分佈(因此您可能會看到回報小於-1或-100%)。
對於「正常」收益範圍,[P(t+1)-P(t)]/P(t)
和LN(P(t+1)/P(t))
之間的差異應該可以忽略不計。我希望這有幫助。
是的,但是爲什麼在計算確切的關係時使用近似關係,在我提供的答案中? –
此外,如果您使用的是每月,每年等返回(這將比每日退貨)這種方法中的錯誤會讓你很快陷入困境。 –
您也可以使用返回等於log對數的指數減去一的確切關係。因此,如果Prices
包含你的價格,下面會給你回報:
Returns = exp(diff(log(Prices))) - 1
注意,這是一個確切關係,而不是由@PBS答案給出的近似關係。
要補充PBS的回答,生成日誌回覆的一個稍微複雜的方法是ret<-c(NA,log(a[-1])-log(a[-length(a)]))
。
請首先看到[如何回答](https://stackoverflow.com/help/how-to-answer) 這個問題已經回答了,顯然,你可以在這裏添加你的答案。但是在回答之前你需要了解一些觀點。首先,不要添加之前添加了相同代碼或建議的答案。其次,如果用戶非常具體地詢問了問題以及他需要解決什麼問題,請不要添加過於複雜的答案。第三,如果您想就回答或問題提出任何建議,您可以添加評論。 –
另一種可能性是TTR
包的ROC
功能:
library(TTR)
a <- c(10.25, 11.26, 14, 13.56)
ROC(a, type = "discrete")
## [1] NA 0.09853659 0.24333925 -0.03142857
type = continuous
(這也是默認設置):登錄回報:
ROC(a)
## [1] NA 0.09397892 0.21780071 -0.03193305
嗯,我應該得到:9.853659%(從10.25至11.26)24.33393%(從11.26至14)-3.142857%(從14至13.56) – blakc05
是的,這與我的結果相同。 – Andrie
所以我必須乘以100 – blakc05