我正在拿一列历史股票价格并试图找到股票的回报百分比。这可以通过计算来完成,例如今天的股票价格减去昨天的股票价格除以昨天的股票价格。您也可以将最新的一天除以最后一天除以一。
我可以找到每天之间的差异,但这不是我的问题。我相信我的老师告诉我这是
x <- diff(log(theReturns))
你们能找到R中每日库存的百分比变化吗?
答案 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}}。