价格修复#
在history()和download()函数中新增的参数repair=True将尝试修复由雅虎导致的各种价格错误。似乎只有美国市场数据是完美的,我猜雅虎不太关心世界其他地区?
返回的表格将新增一列Repaired?,用于标识该行是否已被修复。
价格修复#
缺失股息调整#
如果数据中存在股息但前一个Adj Close等于Close,则手动对Adj Close应用股息调整。
注意:Repaired?不会被设为True,因为此修正仅改变Adj Close
8TRA.DE#
缺失的拆股调整#
如果数据中存在股票拆分但之前的价格数据未调整,则手动应用股票拆分。 要求日期范围包括股票拆分后1天以进行校准 - 有时雅虎未能调整股票拆分当天的价格。
MOB.ST#
缺失数据#
如果价格数据明显缺失或损坏,则使用更小的时间间隔(例如1h)来重建数据,以修复1d数据。
1COV.DE 数据行缺失#
1COV.DE缺少成交量数据,但日内价格有变动#
0316.HK 缺少成交量数据,但每日价格有变动#
100倍错误率#
有时雅虎会混淆货币单位,例如美元/美分或英镑/便士。因此某些价格会出现100倍的误差。
有些错误会随机散布在数据中——这些可通过scipy模块检测出来。
还有些情况会集中出现,因为雅虎某天决定永久切换货币单位。
AET.L#
价格重构 - 算法说明#
通过分组获取来最小化垃圾信息。尝试遵守数据限制,例如1h无法获取超过2年的数据。
如果雅虎最终修复了需要重建的错误数据,你会发现它与重建后的价格略有不同,成交量通常差异显著。这是我能做到的最好结果,总比缺失数据要好。
股息修复(新功能)#
修复股息数据中的错误:
股息调整缺失或数值偏差过大(相差100倍)
重复分红(7天内)
除息价格下跌对应的股息数值过大/过小100倍
除息日期错误(价格下跌发生在几天/几周后)
我见过的大多数错误都发生在伦敦证券交易所(英镑/便士混淆),但没有哪个交易所是绝对安全的。
重要提示 - 误报情况#
由于修复(3)依赖于价格走势,存在出现"假阳性"(FP)的可能性——即数据本身正常但误认为存在错误。假阳性率会随着时间间隔的延长而增加,因此仅修复1天间隔的数据。如果您请求修复多日间隔(周线等)的数据,则会:先从雅虎获取1天数据,修复后再重新采样——这样做有个很好的副作用:可以解决雅虎在多日间隔数据分红调整方面的缺陷方法。
1天内的误报率极低。这类情况通常出现在微小股息时,例如0.5%,将正常价格波动误认为除息下跌(误判幅度可能比实际股息大100倍),从而触发"股息过小"的修复机制(修复逻辑已尝试通过减去中位数来考虑正常波动)。您可以选择接受此风险,或者获取6-12个月的价格数据(至少包含2次股息)——这样可以通过综合分析多次股息来识别误报情况。
调整缺失#
1398.HK
# ORIGINAL:
Close Adj Close Dividends
2024-07-08 00:00:00+08:00 4.33 4.33 0.335715
2024-07-04 00:00:00+08:00 4.83 4.83 0.000000
# REPAIRED:
Close Adj Close Dividends
2024-07-08 00:00:00+08:00 4.33 4.330000 0.335715
2024-07-04 00:00:00+08:00 4.83 4.494285 0.000000
调整幅度过小#
3IN.L
# ORIGINAL:
Close Adj Close Dividends
2024-06-13 00:00:00+01:00 3.185 3.185000 0.05950
2024-06-12 00:00:00+01:00 3.270 3.269405 0.00000
# REPAIRED:
Close Adj Close Dividends
2024-06-13 00:00:00+01:00 3.185 3.185000 0.05950
2024-06-12 00:00:00+01:00 3.270 3.210500 0.00000
7天内重复#
ALC.SW
# ORIGINAL:
Close Adj Close Dividends
2023-05-10 00:00:00+02:00 70.580002 70.352142 0.21
2023-05-09 00:00:00+02:00 65.739998 65.318443 0.21
2023-05-08 00:00:00+02:00 66.379997 65.745682 0.00
# REPAIRED:
Close Adj Close Dividends
2023-05-10 00:00:00+02:00 70.580002 70.352142 0.00
2023-05-09 00:00:00+02:00 65.739998 65.527764 0.21
2023-05-08 00:00:00+02:00 66.379997 65.956371 0.00
股息过高#
HLCL.L
# ORIGINAL:
Close Adj Close Dividends
2024-06-27 00:00:00+01:00 2.360 2.3600 1.78
2024-06-26 00:00:00+01:00 2.375 2.3572 0.00
# REPAIRED:
Close Adj Close Dividends
2024-06-27 00:00:00+01:00 2.360 2.3600 0.0178
2024-06-26 00:00:00+01:00 2.375 2.3572 0.0000
股息与调整幅度过大#
LTI.L
# ORIGINAL:
Close Adj Close Adj Dividends
2024-08-08 00:00:00+01:00 768.0 768.0 1.0000 5150.0
2024-08-07 00:00:00+01:00 819.0 -4331.0 -5.2882 0.0
Close Adj Close Adj Dividends
2024-08-08 00:00:00+01:00 768.0 768.0 1.0000 51.5
2024-08-07 00:00:00+01:00 819.0 767.5 0.9371 0.0
股息过小#
BVT.L
# ORIGINAL:
Close Adj Close Adj Dividends
2022-02-03 00:00:00+00:00 0.7534 0.675197 0.8962 0.00001
2022-02-01 00:00:00+00:00 0.7844 0.702970 0.8962 0.00000
# REPAIRED:
Close Adj Close Adj Dividends
2022-02-03 00:00:00+00:00 0.7534 0.675197 0.8962 0.001
2022-02-01 00:00:00+00:00 0.7844 0.702075 0.8950 0.000
调整前一日2倍#
线索:收盘价低于最低价
2020.OL
# ORIGINAL:
Low Close Adj Close Dividends
2023-12-21 00:00:00+01:00 120.199997 121.099998 118.868782 0.18
2023-12-20 00:00:00+01:00 122.000000 121.900002 119.477371 0.00
# REPAIRED:
Low Close Adj Close Dividends
2023-12-21 00:00:00+01:00 120.199997 121.099998 118.868782 0.18
2023-12-20 00:00:00+01:00 122.000000 122.080002 119.654045 0.00
除息日期错误#
TETY.ST
# ORIGINAL:
Close Adj Close Dividends
2022-06-22 00:00:00+02:00 66.699997 60.085415 0.0
2022-06-21 00:00:00+02:00 71.599998 64.499489 0.0
2022-06-20 00:00:00+02:00 71.800003 64.679657 5.0
2022-06-17 00:00:00+02:00 71.000000 59.454838 0.0
# REPAIRED:
Close Adj Close Dividends
2022-06-22 00:00:00+02:00 66.699997 60.085415 5.0
2022-06-21 00:00:00+02:00 71.599998 60.007881 0.0
2022-06-20 00:00:00+02:00 71.800003 60.175503 0.0
2022-06-17 00:00:00+02:00 71.000000 59.505021 0.0