价格修复#

history()download()函数中新增的参数repair=True将尝试修复由雅虎导致的各种价格错误。似乎只有美国市场数据是完美的,我猜雅虎不太关心世界其他地区?

返回的表格将新增一列Repaired?,用于标识该行是否已被修复。

价格修复#

缺失股息调整#

如果数据中存在股息但前一个Adj Close等于Close,则手动对Adj Close应用股息调整。 注意:Repaired?不会被设为True,因为此修正仅改变Adj Close

8TRA.DE: repair missing dividend adjustment

8TRA.DE#

缺失的拆股调整#

如果数据中存在股票拆分但之前的价格数据未调整,则手动应用股票拆分。 要求日期范围包括股票拆分后1天以进行校准 - 有时雅虎未能调整股票拆分当天的价格。

MOB.ST: repair missing split adjustment

MOB.ST#

缺失数据#

如果价格数据明显缺失或损坏,则使用更小的时间间隔(例如1h)来重建数据,以修复1d数据。

1COV.DE: repair missing row

1COV.DE 数据行缺失#

1COV.DE: repair missing Volume, but intraday price changed

1COV.DE缺少成交量数据,但日内价格有变动#

0316.HK: repair missing Volume, but daily price changed

0316.HK 缺少成交量数据,但每日价格有变动#

100倍错误率#

有时雅虎会混淆货币单位,例如美元/美分或英镑/便士。因此某些价格会出现100倍的误差。 有些错误会随机散布在数据中——这些可通过scipy模块检测出来。 还有些情况会集中出现,因为雅虎某天决定永久切换货币单位。

AET.L: repair 100x

AET.L#

价格重构 - 算法说明#

通过分组获取来最小化垃圾信息。尝试遵守数据限制,例如1h无法获取超过2年的数据。

如果雅虎最终修复了需要重建的错误数据,你会发现它与重建后的价格略有不同,成交量通常差异显著。这是我能做到的最好结果,总比缺失数据要好。

股息修复(新功能)#

修复股息数据中的错误:

  1. 股息调整缺失或数值偏差过大(相差100倍)

  2. 重复分红(7天内)

  3. 除息价格下跌对应的股息数值过大/过小100倍

  4. 除息日期错误(价格下跌发生在几天/几周后)

我见过的大多数错误都发生在伦敦证券交易所(英镑/便士混淆),但没有哪个交易所是绝对安全的。

重要提示 - 误报情况#

由于修复(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