【发布时间】:2014-08-04 15:24:05
【问题描述】:
我正在获取一列历史股票价格,并试图找出股票回报率。这将通过诸如今天的股票价格减去昨天的股票价格除以昨天的股票价格等计算来完成。您也可以将最近一天除以最后一天再减一。
我可以找到每天之间的差异,但这不是我的问题。我相信我的老师告诉我这是
x <- diff(log(theReturns))
你们能找到 R 中每日库存的百分比变化吗?
【问题讨论】:
标签: r return percentage stock
我正在获取一列历史股票价格,并试图找出股票回报率。这将通过诸如今天的股票价格减去昨天的股票价格除以昨天的股票价格等计算来完成。您也可以将最近一天除以最后一天再减一。
我可以找到每天之间的差异,但这不是我的问题。我相信我的老师告诉我这是
x <- diff(log(theReturns))
你们能找到 R 中每日库存的百分比变化吗?
【问题讨论】:
标签: r return percentage stock
假设你的向量是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,是的。使用这个(经过一点代数),你可以看到另一种计算相对变化的方法是
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] 又等于 (v[2:6] - v[1:5]) / v[1:5]。
【讨论】: