Цена закрытия, скорректированная вручную, не соответствует Скорректированной цене Yahoo Finance - PullRequest
0 голосов
/ 09 июля 2020

Пытался запустить следующий код в R, но цена закрытия, скорректированная вручную, не соответствовала той, которую предоставляет Yahoo. Не то чтобы разница незначительная, разница огромная. Я что-то упустил?

Код ниже:


library(quantmod)

getSymbols("AAPL")

splits<- getSplits("AAPL")

raw_dividends<- getDividends("AAPL", split.adjust = F)

ratios <- adjRatios(splits = splits, dividends = raw_dividends, close = Cl(AAPL))

aapl_adjusted <- Cl(AAPL) * ratios[, "Split"] * ratios[, "Div"]

head(Ad(AAPL))

head(aapl_adjusted)

Ответы [ 2 ]

3 голосов
/ 09 июля 2020

Не скорректированные цены Yahoo на самом деле не являются нескорректированными.

R> head(AAPL)
##            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2007-01-03  12.32714  12.36857 11.70000   11.97143   309579900      10.36364
## 2007-01-04  12.00714  12.27857 11.97429   12.23714   211815100      10.59366
## 2007-01-05  12.25286  12.31428 12.05714   12.15000   208685400      10.51822
## 2007-01-08  12.28000  12.36143 12.18286   12.21000   199276700      10.57016
## 2007-01-09  12.35000  13.28286 12.16429   13.22429   837324600      11.44823
## 2007-01-10  13.53571  13.97143 13.35000   13.85714   738220000      11.99609

AAPL не торгует (и не проводила) ценами, которые включают доли цента. Итак, ваш расчет не совпадает, потому что вы дважды корректируете разбиение.

Я предполагаю, что Yahoo возвращает данные с поправкой на разбиение, но не дивиденды. И это можно подтвердить, разделив на коэффициент разделения ...

R> head(Cl(AAPL) / ratios[,"Split"])
##            AAPL.Close
## 2007-01-03   83.80000
## 2007-01-04   85.66000
## 2007-01-05   85.05000
## 2007-01-08   85.47000
## 2007-01-09   92.57000
## 2007-01-10   96.99999

Эти цены приблизительно соответствуют тому, что вы получаете от других провайдеров. Например, вот что предоставляет tiin go. Вам понадобится (бесплатный) ключ API для загрузки с них данных.

R> head(getSymbols("AAPL", src = "tiingo", api.key = tiingo.key, auto.assign = FALSE))
##            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
## 2007-01-03     86.29     86.58    81.90      83.80    44225700
## 2007-01-04     84.05     85.95    83.82      85.66    30259300
## 2007-01-05     85.77     86.20    84.40      85.05    29812200
## 2007-01-08     85.96     86.53    85.28      85.47    28468100
## 2007-01-09     86.45     92.98    85.15      92.57   119617800
## 2007-01-10     94.75     97.80    93.45      97.00   105460000
0 голосов
/ 10 июля 2020

Разобравшись с проблемой, Yahoo подстраивает только под чистые дивиденды, а не на разделение. Умножение на коэффициент дивиденда дало мне точный ответ.

> library(quantmod)
> getSymbols("AAPL")
[1] "AAPL"
> splits<- getSplits("AAPL")
> raw_dividends<- getDividends("AAPL", split.adjust = F)
> ratios <- adjRatios(splits = splits, dividends = raw_dividends, close = Cl(AAPL))
> aapl_adjusted <- Cl(AAPL) * ratios[,"Div"]
> head(Ad(AAPL))
           AAPL.Adjusted
2007-01-03      10.36364
2007-01-04      10.59366
2007-01-05      10.51822
2007-01-08      10.57016
2007-01-09      11.44823
2007-01-10      11.99609
> head(aapl_adjusted)
           AAPL.Close
2007-01-03   10.36363
2007-01-04   10.59366
2007-01-05   10.51822
2007-01-08   10.57016
2007-01-09   11.44823
2007-01-10   11.99609
...