我正在尝试使用雅虎金融下载一些共同基金和ETF的历史价格。我认为雅虎财经有一个错误,它混淆了价格的规模(我不认为这是一个分裂的问题。见下图)
无论如何,这里有一个MWE来重现问题
import yfinance as yf
import pandas as pd
from pandas_datareader import data as pdr
yf.pdr_override()
tickers = ["0P0001FE43.L", "0P00014IJX.L", "SGLN.L"]
start_date = "2019-01-01"
today = "2021-04-27"
def getData(ticker):
#print (ticker)
data = pdr.get_data_yahoo(ticker, start=start_date, end=today)
data["yahoo_ticker"] = ticker
files.append(data)
files=[]
for tik in tickers:
getData(tik)
df = pd.concat(files)
df = df[ [ "Adj Close", "yahoo_ticker"]]
仔细观察调整后的价格可以发现:
我想不出任何有系统的方法来纠正这个问题,所以如果有任何帮助,我将不胜感激
为了捕捉和修复一天内的事件,我通常会检查一天内的巨大差距。类似这样的东西,将每次收盘与上一次和下一次收盘进行比较,应该可以解决1/100或1*100问题,但没有任何东西阻止您设置另一个阈值或同时使用多个阈值。当历史序列中的差距是由于管理不善造成的时,多重比较可以避免更正
代码:
输出:
虽然这是可行的,但如果你可以下载所有(调整后的)OHLC字段(我使用Bloomberg Professional作为数据提供商,我不知道Yahoo是否支持),你应该始终将它们相互比较,而不是只比较前一个和下一个的收盘价。这将是一种更稳健的方法,同时你也可以检查O和C是否在H-L范围内,以及其他更常见但微妙的错误
我找到了另一个解决方案,我认为它应该比我的另一个答案更可靠。这并不是针对整个历史,而是针对50倍或更大的单日跳变,这永远不会“自然”发生
我查看了SGLN。我很快只看到了雅虎的财务页面,而且数据一致。我不是一个市场专家,所以我不能说这里发生了什么,但这些数据似乎是相符的。此外,在这段时间内,音量的上升/下降变得更加不稳定,因此可能与此有关
相关问题 更多 >
编程相关推荐