在R中查找每日股票回报百分比

时间:2014-08-04 15:24:06

标签: r return percentage stock

我正在拿一列历史股票价格并试图找到股票的回报百分比。这可以通过计算来完成,例如今天的股票价格减去昨天的股票价格除以昨天的股票价格。您也可以将最新的一天除以最后一天除以一。

我可以找到每天之间的差异,但这不是我的问题。我相信我的老师告诉我这是

x <- diff(log(theReturns))

你们能找到R中每日库存的百分比变化吗?

1 个答案:

答案 0 :(得分:1)

假设您的向量为v <- c(10, 20, 23, 15, 22, 30)(这就是您所谓的theReturns,但我在此处使用v

你知道如何得到的每一天之间的差异是

v[2:6] - v[1:5]
# 10  3 -8  7  8

在R中,还有另一种方法可以使用函数diff来编写它(有关详细信息,请参阅?diff):

diff(v) == v[2:6] - v[1:5]
# TRUE TRUE TRUE TRUE TRUE

由于您希望将差异计算为前一天的百分比(即相对变化),因此您只需将其除以v[1:5]

diff(v) / v[1:5]
# 1.0000000  0.1500000 -0.3478261  0.4666667  0.3636364

我的猜测是你知道如何做到这一切,但你的困惑来自你的老师在那里介绍log功能。我不认为你必须使用log,但它可能会简化一些因为它的一个属性,即log(x / y)= log(x) - log(y),为正x,y。使用它(在一点代数之后),您可以看到计算相对变化的另一种方法是

exp(diff(log(v))) - 1

因为评估为exp(log(v[2:6]) - log(v[1:5])) - 1等于(v[2:6] / v[1:5]) - 1,而(v[2:6] - v[1:5]) / v[1:5]又等于{{1}}。