Я использую Yfinance для загрузки исторических цен и обнаружил, что функция каждый раз возвращает разные результаты. Это ошибка или я делаю что-то не так?
import yfinance as yf
msft = yf.Ticker('AAK.ST')
data_1 = msft.history(period = "max")
data_2 = msft.history(period = "max")
Результат меняется каждый раз, когда я запускаю код, и ниже приведен пример, в котором первые две строки различаются, а третья равна.
Есть много строк, которые различаются:
Любые предложения, почему и как с этим справиться?
Различия, которые вы видите, невелики и могут быть ошибками округления. Результаты, полученные с помощью метода истории, корректируются (что может вызвать ошибки округления). Когда я отключаю настройку, результаты кажутся одинаковыми:
import yfinance as yf
aak = yf.Ticker('AAK.ST')
data_1 = aak.history(period = "max", auto_adjust=False)
data_2 = aak.history(period = "max", auto_adjust=False)
data_1.iloc[:3, :]
data_2.iloc[:3, :]
Если посмотреть на то, что, по всей видимости, будет делать эта корректировка, она включает в себя, среди прочего, дивиденды от цен на акции в прошлом. Похоже, что он делает это, сохраняя текущую цену как есть, а затем корректируя исторические цены. Так что, возможно, колебания, которые вы наблюдаете, связаны с тем, что текущая цена меняется в часы работы рынка. Вы можете попытаться убедиться в этом, попробовав описанное выше, когда рынки закрыты, и проверив, сохраняются ли колебания.
Спасибо, вы, наверное, правы, но все же странно, что ошибка округления каждый раз разная, и это не только последняя десятичная дробь.