quantmod adjustOHLC 函数 - 股息调整价格
quantmod adjustOHLC function - dividend adjusted prices
我需要帮助来解释使用 quantmod::adjustOHLC
.
的股息调整后价格的差异
获取 AAPL 的调整和未调整价格:
library(quantmod)
getSymbols("AAPL")
AAPL.adjusted <- adjustOHLC(AAPL, adjust=c("dividend"), symbol.name="AAPL")
AAPL 的最后一次股息是在 2016 年 8 月 4 日派息 0.57 美分。
div <- getDividends("AAPL", from = "1900-01-01")
tail(div)
# [,1]
# 2015-05-07 0.52
# 2015-08-06 0.52
# 2015-11-05 0.52
# 2016-02-04 0.52
# 2016-05-05 0.57
# 2016-08-04 0.57
对于 2016 年 5 月 5 日至 2016 年 8 月 3 日期间,当 adjustOHLC
要求仅针对股息进行调整时,我的预期是它会从这些日期的 OHLC 价格中扣除 0.57 美分。
但是,我在计算时没有看到 0.57 美分的确切差异
未调整和调整后收盘价之间的差异。
div <- coredata(AAPL["2016-05-05/2016-08-03"][,"AAPL.Close"] -
AAPL.adjusted["2016-05-05/2016-08-03"][,"AAPL.Close"])
hist(div)
在绘制的直方图中,大多数价格都没有接近 0.57。
查看 adjustOHLC
的代码,计算出的调整因子是
感兴趣的日期范围相同
div <- getDividends("AAPL", from = "1900-01-01")
splits <- getSplits("AAPL", from = "1900-01-01")
div <- div * 1/adjRatios(splits=merge(splits, index(div)))[, 1]
ratios <- adjRatios(splits, div, Cl(AAPL))
length(ratios["2016-05-05/2016-08-03"][, "Div"])
# [1] 63
table(ratios["2016-05-05/2016-08-03"][, "Div"])
# 0.994611967155573
# 63
为什么未调整和调整后的收盘价差异如此之大?
看看调整后和未调整的价格:
getSymbols('AAPL',from='2016-08-01',to = '2016-08-06')
[1] "AAPL"
> AAPL
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2016-08-01 104.41 106.15 104.41 106.05 38167900 105.4786
2016-08-02 106.05 106.07 104.00 104.48 33816600 103.9171
2016-08-03 104.81 105.84 104.77 105.79 30202600 105.2200
2016-08-04 105.58 106.00 105.28 105.87 27408700 105.8700
2016-08-05 106.27 107.65 106.18 107.48 40553400 107.4800
> adjustOHLC(AAPL)
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2016-08-01 103.8474 105.5781 103.8474 105.4786 38167900 105.4786
2016-08-02 105.4786 105.4985 103.4396 103.9171 33816600 103.9171
2016-08-03 104.2453 105.2697 104.2055 105.2200 30202600 105.2200
2016-08-04 105.5800 106.0000 105.2800 105.8700 27408700 105.8700
2016-08-05 106.2700 107.6500 106.1800 107.4800 40553400 107.4800
当您比较调整后和未调整系列的 8/3 和 8/4 收盘价的净变化时,您会发现股息支付与所有之前的价格正好相差 57 美分相应地下调了 57 美分。
quantmod::adjustOHLC
的计算是正确的。差异在于您的假设和期望。
除了除息日和收盘价与除息日相同的任何其他日期外,没有理由期望未调整和调整后的收盘价之间的差值等于股息金额。
您甚至注意到,"computed adjustment factors are identical for the interested date range"(强调)。调整因素将是相同的,直到有另一个股息或拆分。调整后收盘价的计算方法是乘以调整因子和未调整收盘价。
如果您简单地从所有之前的收盘价中减去股息金额,您将更改 returns,它甚至可能导致收盘价变为负数!
我需要帮助来解释使用 quantmod::adjustOHLC
.
获取 AAPL 的调整和未调整价格:
library(quantmod)
getSymbols("AAPL")
AAPL.adjusted <- adjustOHLC(AAPL, adjust=c("dividend"), symbol.name="AAPL")
AAPL 的最后一次股息是在 2016 年 8 月 4 日派息 0.57 美分。
div <- getDividends("AAPL", from = "1900-01-01")
tail(div)
# [,1]
# 2015-05-07 0.52
# 2015-08-06 0.52
# 2015-11-05 0.52
# 2016-02-04 0.52
# 2016-05-05 0.57
# 2016-08-04 0.57
对于 2016 年 5 月 5 日至 2016 年 8 月 3 日期间,当 adjustOHLC
要求仅针对股息进行调整时,我的预期是它会从这些日期的 OHLC 价格中扣除 0.57 美分。
但是,我在计算时没有看到 0.57 美分的确切差异 未调整和调整后收盘价之间的差异。
div <- coredata(AAPL["2016-05-05/2016-08-03"][,"AAPL.Close"] -
AAPL.adjusted["2016-05-05/2016-08-03"][,"AAPL.Close"])
hist(div)
在绘制的直方图中,大多数价格都没有接近 0.57。
查看 adjustOHLC
的代码,计算出的调整因子是
感兴趣的日期范围相同
div <- getDividends("AAPL", from = "1900-01-01")
splits <- getSplits("AAPL", from = "1900-01-01")
div <- div * 1/adjRatios(splits=merge(splits, index(div)))[, 1]
ratios <- adjRatios(splits, div, Cl(AAPL))
length(ratios["2016-05-05/2016-08-03"][, "Div"])
# [1] 63
table(ratios["2016-05-05/2016-08-03"][, "Div"])
# 0.994611967155573
# 63
为什么未调整和调整后的收盘价差异如此之大?
看看调整后和未调整的价格:
getSymbols('AAPL',from='2016-08-01',to = '2016-08-06')
[1] "AAPL"
> AAPL
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2016-08-01 104.41 106.15 104.41 106.05 38167900 105.4786
2016-08-02 106.05 106.07 104.00 104.48 33816600 103.9171
2016-08-03 104.81 105.84 104.77 105.79 30202600 105.2200
2016-08-04 105.58 106.00 105.28 105.87 27408700 105.8700
2016-08-05 106.27 107.65 106.18 107.48 40553400 107.4800
> adjustOHLC(AAPL)
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2016-08-01 103.8474 105.5781 103.8474 105.4786 38167900 105.4786
2016-08-02 105.4786 105.4985 103.4396 103.9171 33816600 103.9171
2016-08-03 104.2453 105.2697 104.2055 105.2200 30202600 105.2200
2016-08-04 105.5800 106.0000 105.2800 105.8700 27408700 105.8700
2016-08-05 106.2700 107.6500 106.1800 107.4800 40553400 107.4800
当您比较调整后和未调整系列的 8/3 和 8/4 收盘价的净变化时,您会发现股息支付与所有之前的价格正好相差 57 美分相应地下调了 57 美分。
quantmod::adjustOHLC
的计算是正确的。差异在于您的假设和期望。
除了除息日和收盘价与除息日相同的任何其他日期外,没有理由期望未调整和调整后的收盘价之间的差值等于股息金额。
您甚至注意到,"computed adjustment factors are identical for the interested date range"(强调)。调整因素将是相同的,直到有另一个股息或拆分。调整后收盘价的计算方法是乘以调整因子和未调整收盘价。
如果您简单地从所有之前的收盘价中减去股息金额,您将更改 returns,它甚至可能导致收盘价变为负数!