Stock split repair: bug fixes & more testing

pull/1543/head
ValueRaider 2023-06-03 20:49:35 +01:00
parent d1ea402792
commit e57647c1d7
15 changed files with 378 additions and 73 deletions

View File

@ -26,11 +26,16 @@ class CachedLimiterSession(CacheMixin, LimiterMixin, Session):
from pyrate_limiter import Duration, RequestRate, Limiter
history_rate = RequestRate(1, Duration.SECOND*2)
limiter = Limiter(history_rate)
cache_fp = os.path.join(_ad.user_cache_dir(), "py-yfinance", "unittests-cache")
if os.path.isfile(cache_fp + '.sqlite'):
# Delete local cache if older than 1 day:
mod_dt = _dt.datetime.fromtimestamp(os.path.getmtime(cache_fp + '.sqlite'))
if mod_dt.date() < _dt.date.today():
os.remove(cache_fp + '.sqlite')
session_gbl = CachedLimiterSession(
limiter=limiter,
bucket_class=MemoryQueueBucket,
backend=SQLiteCache(os.path.join(_ad.user_cache_dir(), "py-yfinance", "unittests-cache"),
expire_after=_dt.timedelta(hours=1)),
backend=SQLiteCache(cache_fp, expire_after=_dt.timedelta(hours=1)),
)
# Use this instead if only want rate-limiting:
# from requests_ratelimiter import LimiterSession

View File

@ -0,0 +1,23 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-04-14 00:00:00+09:00,4126,4130,4055,4129,4129,7459400,0,0
2023-04-13 00:00:00+09:00,4064,4099,4026,4081,4081,5160200,0,0
2023-04-12 00:00:00+09:00,3968,4084,3966,4064,4064,6372000,0,0
2023-04-11 00:00:00+09:00,3990,4019,3954,3960,3960,6476500,0,0
2023-04-10 00:00:00+09:00,3996,4009,3949,3964,3964,3485200,0,0
2023-04-07 00:00:00+09:00,3897,3975,3892,3953,3953,4554700,0,0
2023-04-06 00:00:00+09:00,4002,4004,3920,3942,3942,8615200,0,0
2023-04-05 00:00:00+09:00,4150,4150,4080,4088,4088,6063700,0,0
2023-04-04 00:00:00+09:00,4245,4245,4144,4155,4155,6780600,0,0
2023-04-03 00:00:00+09:00,4250,4259,4162,4182,4182,7076800,0,0
2023-03-31 00:00:00+09:00,4229,4299,4209,4275,4275,9608400,0,0
2023-03-30 00:00:00+09:00,4257,4268,4119,4161,4161,5535200,55,5
2023-03-29 00:00:00+09:00,4146,4211,4146,4206,4151,6514500,0,0
2023-03-28 00:00:00+09:00,4200,4207,4124,4142,4087.837109375,4505500,0,0
2023-03-27 00:00:00+09:00,4196,4204,4151,4192,4137.183203125,5959500,0,0
2023-03-24 00:00:00+09:00,4130,4187,4123,4177,4122.379296875,8961500,0,0
2023-03-23 00:00:00+09:00,4056,4106,4039,4086,4032.569140625,5480000,0,0
2023-03-22 00:00:00+09:00,4066,4128,4057,4122,4068.0984375,8741500,0,0
2023-03-20 00:00:00+09:00,4000,4027,3980,3980,3927.95546875,7006500,0,0
2023-03-17 00:00:00+09:00,4018,4055,4016,4031,3978.28828125,6961500,0,0
2023-03-16 00:00:00+09:00,3976,4045,3972,4035,3982.236328125,5019000,0,0
2023-03-15 00:00:00+09:00,4034,4050,4003,4041,3988.1578125,6122000,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-04-14 00:00:00+09:00 4126 4130 4055 4129 4129 7459400 0 0
3 2023-04-13 00:00:00+09:00 4064 4099 4026 4081 4081 5160200 0 0
4 2023-04-12 00:00:00+09:00 3968 4084 3966 4064 4064 6372000 0 0
5 2023-04-11 00:00:00+09:00 3990 4019 3954 3960 3960 6476500 0 0
6 2023-04-10 00:00:00+09:00 3996 4009 3949 3964 3964 3485200 0 0
7 2023-04-07 00:00:00+09:00 3897 3975 3892 3953 3953 4554700 0 0
8 2023-04-06 00:00:00+09:00 4002 4004 3920 3942 3942 8615200 0 0
9 2023-04-05 00:00:00+09:00 4150 4150 4080 4088 4088 6063700 0 0
10 2023-04-04 00:00:00+09:00 4245 4245 4144 4155 4155 6780600 0 0
11 2023-04-03 00:00:00+09:00 4250 4259 4162 4182 4182 7076800 0 0
12 2023-03-31 00:00:00+09:00 4229 4299 4209 4275 4275 9608400 0 0
13 2023-03-30 00:00:00+09:00 4257 4268 4119 4161 4161 5535200 55 5
14 2023-03-29 00:00:00+09:00 4146 4211 4146 4206 4151 6514500 0 0
15 2023-03-28 00:00:00+09:00 4200 4207 4124 4142 4087.837109375 4505500 0 0
16 2023-03-27 00:00:00+09:00 4196 4204 4151 4192 4137.183203125 5959500 0 0
17 2023-03-24 00:00:00+09:00 4130 4187 4123 4177 4122.379296875 8961500 0 0
18 2023-03-23 00:00:00+09:00 4056 4106 4039 4086 4032.569140625 5480000 0 0
19 2023-03-22 00:00:00+09:00 4066 4128 4057 4122 4068.0984375 8741500 0 0
20 2023-03-20 00:00:00+09:00 4000 4027 3980 3980 3927.95546875 7006500 0 0
21 2023-03-17 00:00:00+09:00 4018 4055 4016 4031 3978.28828125 6961500 0 0
22 2023-03-16 00:00:00+09:00 3976 4045 3972 4035 3982.236328125 5019000 0 0
23 2023-03-15 00:00:00+09:00 4034 4050 4003 4041 3988.1578125 6122000 0 0

View File

@ -0,0 +1,23 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-04-14 00:00:00+09:00,4126,4130,4055,4129,4129,7459400,0,0
2023-04-13 00:00:00+09:00,4064,4099,4026,4081,4081,5160200,0,0
2023-04-12 00:00:00+09:00,3968,4084,3966,4064,4064,6372000,0,0
2023-04-11 00:00:00+09:00,3990,4019,3954,3960,3960,6476500,0,0
2023-04-10 00:00:00+09:00,3996,4009,3949,3964,3964,3485200,0,0
2023-04-07 00:00:00+09:00,3897,3975,3892,3953,3953,4554700,0,0
2023-04-06 00:00:00+09:00,4002,4004,3920,3942,3942,8615200,0,0
2023-04-05 00:00:00+09:00,4150,4150,4080,4088,4088,6063700,0,0
2023-04-04 00:00:00+09:00,4245,4245,4144,4155,4155,6780600,0,0
2023-04-03 00:00:00+09:00,4250,4259,4162,4182,4182,7076800,0,0
2023-03-31 00:00:00+09:00,4229,4299,4209,4275,4275,9608400,0,0
2023-03-30 00:00:00+09:00,4257,4268,4119,4161,4161,5535200,55,5
2023-03-29 00:00:00+09:00,4146,4211,4146,4206,4151,6514500,0,0
2023-03-28 00:00:00+09:00,21000,21035,20620,20710,20439.185546875,901100,0,0
2023-03-27 00:00:00+09:00,20980,21020,20755,20960,20685.916015625,1191900,0,0
2023-03-24 00:00:00+09:00,20650,20935,20615,20885,20611.896484375,1792300,0,0
2023-03-23 00:00:00+09:00,20280,20530,20195,20430,20162.845703125,1096000,0,0
2023-03-22 00:00:00+09:00,20330,20640,20285,20610,20340.4921875,1748300,0,0
2023-03-20 00:00:00+09:00,20000,20135,19900,19900,19639.77734375,1401300,0,0
2023-03-17 00:00:00+09:00,20090,20275,20080,20155,19891.44140625,1392300,0,0
2023-03-16 00:00:00+09:00,19880,20225,19860,20175,19911.181640625,1003800,0,0
2023-03-15 00:00:00+09:00,20170,20250,20015,20205,19940.7890625,1224400,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-04-14 00:00:00+09:00 4126 4130 4055 4129 4129 7459400 0 0
3 2023-04-13 00:00:00+09:00 4064 4099 4026 4081 4081 5160200 0 0
4 2023-04-12 00:00:00+09:00 3968 4084 3966 4064 4064 6372000 0 0
5 2023-04-11 00:00:00+09:00 3990 4019 3954 3960 3960 6476500 0 0
6 2023-04-10 00:00:00+09:00 3996 4009 3949 3964 3964 3485200 0 0
7 2023-04-07 00:00:00+09:00 3897 3975 3892 3953 3953 4554700 0 0
8 2023-04-06 00:00:00+09:00 4002 4004 3920 3942 3942 8615200 0 0
9 2023-04-05 00:00:00+09:00 4150 4150 4080 4088 4088 6063700 0 0
10 2023-04-04 00:00:00+09:00 4245 4245 4144 4155 4155 6780600 0 0
11 2023-04-03 00:00:00+09:00 4250 4259 4162 4182 4182 7076800 0 0
12 2023-03-31 00:00:00+09:00 4229 4299 4209 4275 4275 9608400 0 0
13 2023-03-30 00:00:00+09:00 4257 4268 4119 4161 4161 5535200 55 5
14 2023-03-29 00:00:00+09:00 4146 4211 4146 4206 4151 6514500 0 0
15 2023-03-28 00:00:00+09:00 21000 21035 20620 20710 20439.185546875 901100 0 0
16 2023-03-27 00:00:00+09:00 20980 21020 20755 20960 20685.916015625 1191900 0 0
17 2023-03-24 00:00:00+09:00 20650 20935 20615 20885 20611.896484375 1792300 0 0
18 2023-03-23 00:00:00+09:00 20280 20530 20195 20430 20162.845703125 1096000 0 0
19 2023-03-22 00:00:00+09:00 20330 20640 20285 20610 20340.4921875 1748300 0 0
20 2023-03-20 00:00:00+09:00 20000 20135 19900 19900 19639.77734375 1401300 0 0
21 2023-03-17 00:00:00+09:00 20090 20275 20080 20155 19891.44140625 1392300 0 0
22 2023-03-16 00:00:00+09:00 19880 20225 19860 20175 19911.181640625 1003800 0 0
23 2023-03-15 00:00:00+09:00 20170 20250 20015 20205 19940.7890625 1224400 0 0

View File

@ -0,0 +1,30 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-04-20 00:00:00+02:00,3,3,2,3,3,2076,0,0
2023-04-21 00:00:00+02:00,3,3,2,3,3,2136,0,0
2023-04-24 00:00:00+02:00,3,3,1,1,1,77147,0,0
2023-04-25 00:00:00+02:00,1,2,1,2,2,9625,0,0
2023-04-26 00:00:00+02:00,2,2,1,2,2,5028,0,0
2023-04-27 00:00:00+02:00,2,2,1,1,1,3235,0,0
2023-04-28 00:00:00+02:00,2,2,1,2,2,10944,0,0
2023-05-02 00:00:00+02:00,2,2,2,2,2,12220,0,0
2023-05-03 00:00:00+02:00,2,2,2,2,2,4683,0,0
2023-05-04 00:00:00+02:00,2,2,1,2,2,3368,0,0
2023-05-05 00:00:00+02:00,2,2,1,2,2,26069,0,0
2023-05-08 00:00:00+02:00,1,2,1,1,1,70540,0,0
2023-05-09 00:00:00+02:00,1,2,1,1,1,14228,0,0
2023-05-10 00:00:00+02:00,1.08000004291534,1.39999997615814,0.879999995231628,1,1,81012,0,0.0001
2023-05-11 00:00:00+02:00,1.03999996185303,1.03999996185303,0.850000023841858,1,1,40254,0,0
2023-05-12 00:00:00+02:00,0.949999988079071,1.10000002384186,0.949999988079071,1.01999998092651,1.01999998092651,35026,0,0
2023-05-15 00:00:00+02:00,0.949999988079071,1.01999998092651,0.860000014305115,0.939999997615814,0.939999997615814,41486,0,0
2023-05-16 00:00:00+02:00,0.899999976158142,0.944000005722046,0.800000011920929,0.800000011920929,0.800000011920929,43583,0,0
2023-05-17 00:00:00+02:00,0.850000023841858,0.850000023841858,0.779999971389771,0.810000002384186,0.810000002384186,29984,0,0
2023-05-18 00:00:00+02:00,0.779999971389771,0.78600001335144,0.740000009536743,0.740000009536743,0.740000009536743,24679,0,0
2023-05-19 00:00:00+02:00,0.78600001335144,0.78600001335144,0.649999976158142,0.65200001001358,0.65200001001358,26732,0,0
2023-05-22 00:00:00+02:00,0.8299999833107,1.05999994277954,0.709999978542328,0.709999978542328,0.709999978542328,169538,0,0
2023-05-23 00:00:00+02:00,0.899999976158142,1.60800004005432,0.860000014305115,1.22000002861023,1.22000002861023,858471,0,0
2023-05-24 00:00:00+02:00,1.19400000572205,1.25999999046326,0.779999971389771,0.779999971389771,0.779999971389771,627823,0,0
2023-05-25 00:00:00+02:00,0.980000019073486,1.22000002861023,0.702000021934509,0.732999980449677,0.732999980449677,1068939,0,0
2023-05-26 00:00:00+02:00,0.660000026226044,0.72000002861023,0.602999985218048,0.611999988555908,0.611999988555908,631580,0,0
2023-05-29 00:00:00+02:00,0.620000004768372,0.75,0.578999996185303,0.600000023841858,0.600000023841858,586150,0,0
2023-05-30 00:00:00+02:00,0.610000014305115,0.634999990463257,0.497000008821487,0.497000008821487,0.497000008821487,552308,0,0
2023-05-31 00:00:00+02:00,0.458999991416931,0.469999998807907,0.374000012874603,0.379999995231628,0.379999995231628,899067,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-04-20 00:00:00+02:00 3 3 2 3 3 2076 0 0
3 2023-04-21 00:00:00+02:00 3 3 2 3 3 2136 0 0
4 2023-04-24 00:00:00+02:00 3 3 1 1 1 77147 0 0
5 2023-04-25 00:00:00+02:00 1 2 1 2 2 9625 0 0
6 2023-04-26 00:00:00+02:00 2 2 1 2 2 5028 0 0
7 2023-04-27 00:00:00+02:00 2 2 1 1 1 3235 0 0
8 2023-04-28 00:00:00+02:00 2 2 1 2 2 10944 0 0
9 2023-05-02 00:00:00+02:00 2 2 2 2 2 12220 0 0
10 2023-05-03 00:00:00+02:00 2 2 2 2 2 4683 0 0
11 2023-05-04 00:00:00+02:00 2 2 1 2 2 3368 0 0
12 2023-05-05 00:00:00+02:00 2 2 1 2 2 26069 0 0
13 2023-05-08 00:00:00+02:00 1 2 1 1 1 70540 0 0
14 2023-05-09 00:00:00+02:00 1 2 1 1 1 14228 0 0
15 2023-05-10 00:00:00+02:00 1.08000004291534 1.39999997615814 0.879999995231628 1 1 81012 0 0.0001
16 2023-05-11 00:00:00+02:00 1.03999996185303 1.03999996185303 0.850000023841858 1 1 40254 0 0
17 2023-05-12 00:00:00+02:00 0.949999988079071 1.10000002384186 0.949999988079071 1.01999998092651 1.01999998092651 35026 0 0
18 2023-05-15 00:00:00+02:00 0.949999988079071 1.01999998092651 0.860000014305115 0.939999997615814 0.939999997615814 41486 0 0
19 2023-05-16 00:00:00+02:00 0.899999976158142 0.944000005722046 0.800000011920929 0.800000011920929 0.800000011920929 43583 0 0
20 2023-05-17 00:00:00+02:00 0.850000023841858 0.850000023841858 0.779999971389771 0.810000002384186 0.810000002384186 29984 0 0
21 2023-05-18 00:00:00+02:00 0.779999971389771 0.78600001335144 0.740000009536743 0.740000009536743 0.740000009536743 24679 0 0
22 2023-05-19 00:00:00+02:00 0.78600001335144 0.78600001335144 0.649999976158142 0.65200001001358 0.65200001001358 26732 0 0
23 2023-05-22 00:00:00+02:00 0.8299999833107 1.05999994277954 0.709999978542328 0.709999978542328 0.709999978542328 169538 0 0
24 2023-05-23 00:00:00+02:00 0.899999976158142 1.60800004005432 0.860000014305115 1.22000002861023 1.22000002861023 858471 0 0
25 2023-05-24 00:00:00+02:00 1.19400000572205 1.25999999046326 0.779999971389771 0.779999971389771 0.779999971389771 627823 0 0
26 2023-05-25 00:00:00+02:00 0.980000019073486 1.22000002861023 0.702000021934509 0.732999980449677 0.732999980449677 1068939 0 0
27 2023-05-26 00:00:00+02:00 0.660000026226044 0.72000002861023 0.602999985218048 0.611999988555908 0.611999988555908 631580 0 0
28 2023-05-29 00:00:00+02:00 0.620000004768372 0.75 0.578999996185303 0.600000023841858 0.600000023841858 586150 0 0
29 2023-05-30 00:00:00+02:00 0.610000014305115 0.634999990463257 0.497000008821487 0.497000008821487 0.497000008821487 552308 0 0
30 2023-05-31 00:00:00+02:00 0.458999991416931 0.469999998807907 0.374000012874603 0.379999995231628 0.379999995231628 899067 0 0

View File

@ -0,0 +1,30 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-04-20 00:00:00+02:00,3.0,3.0,2.0,3.0,3.0,2076,0.0,0.0
2023-04-21 00:00:00+02:00,3.0,3.0,2.0,3.0,3.0,2136,0.0,0.0
2023-04-24 00:00:00+02:00,3.0,3.0,1.0,1.0,1.0,77147,0.0,0.0
2023-04-25 00:00:00+02:00,1.0,2.0,1.0,2.0,2.0,9625,0.0,0.0
2023-04-26 00:00:00+02:00,2.0,2.0,1.0,2.0,2.0,5028,0.0,0.0
2023-04-27 00:00:00+02:00,2.0,2.0,1.0,1.0,1.0,3235,0.0,0.0
2023-04-28 00:00:00+02:00,2.0,2.0,1.0,2.0,2.0,10944,0.0,0.0
2023-05-02 00:00:00+02:00,2.0,2.0,2.0,2.0,2.0,12220,0.0,0.0
2023-05-03 00:00:00+02:00,2.0,2.0,2.0,2.0,2.0,4683,0.0,0.0
2023-05-04 00:00:00+02:00,2.0,2.0,1.0,2.0,2.0,3368,0.0,0.0
2023-05-05 00:00:00+02:00,2.0,2.0,1.0,2.0,2.0,26069,0.0,0.0
2023-05-08 00:00:00+02:00,9.999999747378752e-05,0.00019999999494757503,9.999999747378752e-05,9.999999747378752e-05,9.999999747378752e-05,705399568,0.0,0.0
2023-05-09 00:00:00+02:00,1.0,2.0,1.0,1.0,1.0,14228,0.0,0.0
2023-05-10 00:00:00+02:00,1.0800000429153442,1.399999976158142,0.8799999952316284,1.0,1.0,81012,0.0,0.0001
2023-05-11 00:00:00+02:00,1.0399999618530273,1.0399999618530273,0.8500000238418579,1.0,1.0,40254,0.0,0.0
2023-05-12 00:00:00+02:00,0.949999988079071,1.100000023841858,0.949999988079071,1.0199999809265137,1.0199999809265137,35026,0.0,0.0
2023-05-15 00:00:00+02:00,0.949999988079071,1.0199999809265137,0.8600000143051147,0.9399999976158142,0.9399999976158142,41486,0.0,0.0
2023-05-16 00:00:00+02:00,0.8999999761581421,0.9440000057220459,0.800000011920929,0.800000011920929,0.800000011920929,43583,0.0,0.0
2023-05-17 00:00:00+02:00,0.8500000238418579,0.8500000238418579,0.7799999713897705,0.8100000023841858,0.8100000023841858,29984,0.0,0.0
2023-05-18 00:00:00+02:00,0.7799999713897705,0.7860000133514404,0.7400000095367432,0.7400000095367432,0.7400000095367432,24679,0.0,0.0
2023-05-19 00:00:00+02:00,0.7860000133514404,0.7860000133514404,0.6499999761581421,0.6520000100135803,0.6520000100135803,26732,0.0,0.0
2023-05-22 00:00:00+02:00,0.8299999833106995,1.059999942779541,0.7099999785423279,0.7099999785423279,0.7099999785423279,169538,0.0,0.0
2023-05-23 00:00:00+02:00,0.8999999761581421,1.6080000400543213,0.8600000143051147,1.2200000286102295,1.2200000286102295,858471,0.0,0.0
2023-05-24 00:00:00+02:00,1.194000005722046,1.2599999904632568,0.7799999713897705,0.7799999713897705,0.7799999713897705,627823,0.0,0.0
2023-05-25 00:00:00+02:00,0.9800000190734863,1.2200000286102295,0.7020000219345093,0.7329999804496765,0.7329999804496765,1068939,0.0,0.0
2023-05-26 00:00:00+02:00,0.6600000262260437,0.7200000286102295,0.6029999852180481,0.6119999885559082,0.6119999885559082,631580,0.0,0.0
2023-05-29 00:00:00+02:00,0.6200000047683716,0.75,0.5789999961853027,0.6000000238418579,0.6000000238418579,586150,0.0,0.0
2023-05-30 00:00:00+02:00,0.6100000143051147,0.6349999904632568,0.4970000088214874,0.4970000088214874,0.4970000088214874,552308,0.0,0.0
2023-05-31 00:00:00+02:00,0.45899999141693115,0.4699999988079071,0.37400001287460327,0.3799999952316284,0.3799999952316284,899067,0.0,0.0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-04-20 00:00:00+02:00 3.0 3.0 2.0 3.0 3.0 2076 0.0 0.0
3 2023-04-21 00:00:00+02:00 3.0 3.0 2.0 3.0 3.0 2136 0.0 0.0
4 2023-04-24 00:00:00+02:00 3.0 3.0 1.0 1.0 1.0 77147 0.0 0.0
5 2023-04-25 00:00:00+02:00 1.0 2.0 1.0 2.0 2.0 9625 0.0 0.0
6 2023-04-26 00:00:00+02:00 2.0 2.0 1.0 2.0 2.0 5028 0.0 0.0
7 2023-04-27 00:00:00+02:00 2.0 2.0 1.0 1.0 1.0 3235 0.0 0.0
8 2023-04-28 00:00:00+02:00 2.0 2.0 1.0 2.0 2.0 10944 0.0 0.0
9 2023-05-02 00:00:00+02:00 2.0 2.0 2.0 2.0 2.0 12220 0.0 0.0
10 2023-05-03 00:00:00+02:00 2.0 2.0 2.0 2.0 2.0 4683 0.0 0.0
11 2023-05-04 00:00:00+02:00 2.0 2.0 1.0 2.0 2.0 3368 0.0 0.0
12 2023-05-05 00:00:00+02:00 2.0 2.0 1.0 2.0 2.0 26069 0.0 0.0
13 2023-05-08 00:00:00+02:00 9.999999747378752e-05 0.00019999999494757503 9.999999747378752e-05 9.999999747378752e-05 9.999999747378752e-05 705399568 0.0 0.0
14 2023-05-09 00:00:00+02:00 1.0 2.0 1.0 1.0 1.0 14228 0.0 0.0
15 2023-05-10 00:00:00+02:00 1.0800000429153442 1.399999976158142 0.8799999952316284 1.0 1.0 81012 0.0 0.0001
16 2023-05-11 00:00:00+02:00 1.0399999618530273 1.0399999618530273 0.8500000238418579 1.0 1.0 40254 0.0 0.0
17 2023-05-12 00:00:00+02:00 0.949999988079071 1.100000023841858 0.949999988079071 1.0199999809265137 1.0199999809265137 35026 0.0 0.0
18 2023-05-15 00:00:00+02:00 0.949999988079071 1.0199999809265137 0.8600000143051147 0.9399999976158142 0.9399999976158142 41486 0.0 0.0
19 2023-05-16 00:00:00+02:00 0.8999999761581421 0.9440000057220459 0.800000011920929 0.800000011920929 0.800000011920929 43583 0.0 0.0
20 2023-05-17 00:00:00+02:00 0.8500000238418579 0.8500000238418579 0.7799999713897705 0.8100000023841858 0.8100000023841858 29984 0.0 0.0
21 2023-05-18 00:00:00+02:00 0.7799999713897705 0.7860000133514404 0.7400000095367432 0.7400000095367432 0.7400000095367432 24679 0.0 0.0
22 2023-05-19 00:00:00+02:00 0.7860000133514404 0.7860000133514404 0.6499999761581421 0.6520000100135803 0.6520000100135803 26732 0.0 0.0
23 2023-05-22 00:00:00+02:00 0.8299999833106995 1.059999942779541 0.7099999785423279 0.7099999785423279 0.7099999785423279 169538 0.0 0.0
24 2023-05-23 00:00:00+02:00 0.8999999761581421 1.6080000400543213 0.8600000143051147 1.2200000286102295 1.2200000286102295 858471 0.0 0.0
25 2023-05-24 00:00:00+02:00 1.194000005722046 1.2599999904632568 0.7799999713897705 0.7799999713897705 0.7799999713897705 627823 0.0 0.0
26 2023-05-25 00:00:00+02:00 0.9800000190734863 1.2200000286102295 0.7020000219345093 0.7329999804496765 0.7329999804496765 1068939 0.0 0.0
27 2023-05-26 00:00:00+02:00 0.6600000262260437 0.7200000286102295 0.6029999852180481 0.6119999885559082 0.6119999885559082 631580 0.0 0.0
28 2023-05-29 00:00:00+02:00 0.6200000047683716 0.75 0.5789999961853027 0.6000000238418579 0.6000000238418579 586150 0.0 0.0
29 2023-05-30 00:00:00+02:00 0.6100000143051147 0.6349999904632568 0.4970000088214874 0.4970000088214874 0.4970000088214874 552308 0.0 0.0
30 2023-05-31 00:00:00+02:00 0.45899999141693115 0.4699999988079071 0.37400001287460327 0.3799999952316284 0.3799999952316284 899067 0.0 0.0

View File

@ -0,0 +1,11 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-05-18 00:00:00+01:00,193.220001220703,200.839996337891,193.220001220703,196.839996337891,196.839996337891,653125,0,0
2023-05-17 00:00:00+01:00,199.740005493164,207.738006591797,190.121994018555,197.860000610352,197.860000610352,822268,0,0
2023-05-16 00:00:00+01:00,215.600006103516,215.600006103516,201.149993896484,205.100006103516,205.100006103516,451009,243.93939,0.471428571428571
2023-05-15 00:00:00+01:00,215.399955531529,219.19995640346,210.599967302595,217.399987792969,102.39998147147,1761679.3939394,0,0
2023-05-12 00:00:00+01:00,214.599988664899,216.199965558733,209.599965558733,211.399977329799,99.573855808803,1522298.48484849,0,0
2023-05-11 00:00:00+01:00,219.999966430664,219.999966430664,212.199987357003,215.000000871931,101.269541277204,3568042.12121213,0,0
2023-05-10 00:00:00+01:00,218.199954659598,223.000000435965,212.59995640346,215.399955531529,101.457929992676,5599908.78787879,0,0
2023-05-09 00:00:00+01:00,224,227.688003540039,218.199996948242,218.399993896484,102.87100982666,1906090,0,0
2023-05-05 00:00:00+01:00,220.999968174526,225.19996686663,220.799976457868,224.4,105.697140066964,964523.636363637,0,0
2023-05-04 00:00:00+01:00,216.999989972796,222.799965558733,216.881988961356,221.399965994698,104.284055655343,880983.93939394,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-05-18 00:00:00+01:00 193.220001220703 200.839996337891 193.220001220703 196.839996337891 196.839996337891 653125 0 0
3 2023-05-17 00:00:00+01:00 199.740005493164 207.738006591797 190.121994018555 197.860000610352 197.860000610352 822268 0 0
4 2023-05-16 00:00:00+01:00 215.600006103516 215.600006103516 201.149993896484 205.100006103516 205.100006103516 451009 243.93939 0.471428571428571
5 2023-05-15 00:00:00+01:00 215.399955531529 219.19995640346 210.599967302595 217.399987792969 102.39998147147 1761679.3939394 0 0
6 2023-05-12 00:00:00+01:00 214.599988664899 216.199965558733 209.599965558733 211.399977329799 99.573855808803 1522298.48484849 0 0
7 2023-05-11 00:00:00+01:00 219.999966430664 219.999966430664 212.199987357003 215.000000871931 101.269541277204 3568042.12121213 0 0
8 2023-05-10 00:00:00+01:00 218.199954659598 223.000000435965 212.59995640346 215.399955531529 101.457929992676 5599908.78787879 0 0
9 2023-05-09 00:00:00+01:00 224 227.688003540039 218.199996948242 218.399993896484 102.87100982666 1906090 0 0
10 2023-05-05 00:00:00+01:00 220.999968174526 225.19996686663 220.799976457868 224.4 105.697140066964 964523.636363637 0 0
11 2023-05-04 00:00:00+01:00 216.999989972796 222.799965558733 216.881988961356 221.399965994698 104.284055655343 880983.93939394 0 0

View File

@ -0,0 +1,11 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-05-18 00:00:00+01:00,193.220001220703,200.839996337891,193.220001220703,196.839996337891,196.839996337891,653125,0,0
2023-05-17 00:00:00+01:00,199.740005493164,207.738006591797,190.121994018555,197.860000610352,197.860000610352,822268,0,0
2023-05-16 00:00:00+01:00,215.600006103516,215.600006103516,201.149993896484,205.100006103516,205.100006103516,451009,243.93939,0.471428571428571
2023-05-15 00:00:00+01:00,456.908996582031,464.969604492188,446.727203369141,461.151489257813,217.21208190918,830506,0,0
2023-05-12 00:00:00+01:00,455.212097167969,458.605987548828,444.605987548828,448.424194335938,211.217269897461,717655,0,0
2023-05-11 00:00:00+01:00,466.666595458984,466.666595458984,450.121185302734,456.060607910156,214.814178466797,1682077,0,0
2023-05-10 00:00:00+01:00,462.848388671875,473.030303955078,450.969604492188,456.908996582031,215.213790893555,2639957,0,0
2023-05-09 00:00:00+01:00,224,227.688003540039,218.199996948242,218.399993896484,102.87100982666,1906090,0,0
2023-05-05 00:00:00+01:00,468.787811279297,477.696899414063,468.363586425781,476,224.2060546875,454704,0,0
2023-05-04 00:00:00+01:00,460.303009033203,472.605987548828,460.052703857422,469.636291503906,221.208602905273,415321,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-05-18 00:00:00+01:00 193.220001220703 200.839996337891 193.220001220703 196.839996337891 196.839996337891 653125 0 0
3 2023-05-17 00:00:00+01:00 199.740005493164 207.738006591797 190.121994018555 197.860000610352 197.860000610352 822268 0 0
4 2023-05-16 00:00:00+01:00 215.600006103516 215.600006103516 201.149993896484 205.100006103516 205.100006103516 451009 243.93939 0.471428571428571
5 2023-05-15 00:00:00+01:00 456.908996582031 464.969604492188 446.727203369141 461.151489257813 217.21208190918 830506 0 0
6 2023-05-12 00:00:00+01:00 455.212097167969 458.605987548828 444.605987548828 448.424194335938 211.217269897461 717655 0 0
7 2023-05-11 00:00:00+01:00 466.666595458984 466.666595458984 450.121185302734 456.060607910156 214.814178466797 1682077 0 0
8 2023-05-10 00:00:00+01:00 462.848388671875 473.030303955078 450.969604492188 456.908996582031 215.213790893555 2639957 0 0
9 2023-05-09 00:00:00+01:00 224 227.688003540039 218.199996948242 218.399993896484 102.87100982666 1906090 0 0
10 2023-05-05 00:00:00+01:00 468.787811279297 477.696899414063 468.363586425781 476 224.2060546875 454704 0 0
11 2023-05-04 00:00:00+01:00 460.303009033203 472.605987548828 460.052703857422 469.636291503906 221.208602905273 415321 0 0

View File

@ -0,0 +1,24 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-05-31 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-30 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0.4406
2023-05-29 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-26 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-25 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-24 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-23 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-22 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-19 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-18 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-17 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-16 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-15 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-12 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-11 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-10 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-09 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-08 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-05 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-04 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-03 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-02 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-01 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-05-31 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
3 2023-05-30 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0.4406
4 2023-05-29 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
5 2023-05-26 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
6 2023-05-25 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
7 2023-05-24 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
8 2023-05-23 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
9 2023-05-22 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
10 2023-05-19 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
11 2023-05-18 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
12 2023-05-17 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
13 2023-05-16 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
14 2023-05-15 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
15 2023-05-12 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
16 2023-05-11 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
17 2023-05-10 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
18 2023-05-09 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
19 2023-05-08 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
20 2023-05-05 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
21 2023-05-04 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
22 2023-05-03 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
23 2023-05-02 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
24 2023-05-01 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0

View File

@ -0,0 +1,24 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-05-31 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-30 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0.4406
2023-05-29 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-26 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-25 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-24 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-23 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-22 00:00:00+10:00,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0.120290003716946,0,0,0
2023-05-19 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-18 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-17 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-16 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-15 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-12 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-11 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-10 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-09 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-08 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-05 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-04 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-03 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-02 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
2023-05-01 00:00:00+10:00,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0.0529999993741512,0,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-05-31 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
3 2023-05-30 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0.4406
4 2023-05-29 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
5 2023-05-26 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
6 2023-05-25 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
7 2023-05-24 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
8 2023-05-23 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
9 2023-05-22 00:00:00+10:00 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0.120290003716946 0 0 0
10 2023-05-19 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
11 2023-05-18 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
12 2023-05-17 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
13 2023-05-16 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
14 2023-05-15 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
15 2023-05-12 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
16 2023-05-11 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
17 2023-05-10 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
18 2023-05-09 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
19 2023-05-08 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
20 2023-05-05 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
21 2023-05-04 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
22 2023-05-03 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
23 2023-05-02 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0
24 2023-05-01 00:00:00+10:00 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0.0529999993741512 0 0 0

View File

@ -0,0 +1,17 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-05-08 00:00:00+02:00,24.8999996185303,24.9500007629395,24.1000003814697,24.75,24.75,7187,0,0
2023-05-09 00:00:00+02:00,25,25.5,23.1499996185303,24.1499996185303,24.1499996185303,22753,0,0
2023-05-10 00:00:00+02:00,24.1499996185303,24.1499996185303,22,22.9500007629395,22.9500007629395,62727,0,0
2023-05-11 00:00:00+02:00,22.9500007629395,25,22.9500007629395,23.3500003814697,23.3500003814697,19550,0,0
2023-05-12 00:00:00+02:00,23.3500003814697,24,22.1000003814697,23.8500003814697,23.8500003814697,17143,0,0
2023-05-15 00:00:00+02:00,23,25.7999992370605,22.5,23,23,43709,0,0
2023-05-16 00:00:00+02:00,22.75,24.0499992370605,22.5,22.75,22.75,16068,0,0
2023-05-17 00:00:00+02:00,23,23.8500003814697,22.1000003814697,23.6499996185303,23.6499996185303,19926,0,0
2023-05-19 00:00:00+02:00,23.6499996185303,23.8500003814697,22.1000003814697,22.2999992370605,22.2999992370605,41050,0,0
2023-05-22 00:00:00+02:00,22.0000004768372,24.1499996185303,21.5499997138977,22.7500009536743,22.7500009536743,34022,0,0
2023-05-23 00:00:00+02:00,22.75,22.8999996185303,21.75,22.5,22.5,13992,0,0
2023-05-24 00:00:00+02:00,21,24,21,22.0100002288818,22.0100002288818,18306,0,0.1
2023-05-25 00:00:00+02:00,21.5699996948242,22.8899993896484,20,21.1599998474121,21.1599998474121,35398,0,0
2023-05-26 00:00:00+02:00,21.1599998474121,22.4950008392334,20.5,21.0949993133545,21.0949993133545,8039,0,0
2023-05-29 00:00:00+02:00,22.1000003814697,22.1000003814697,20.25,20.75,20.75,17786,0,0
2023-05-30 00:00:00+02:00,20.75,21.6499996185303,20.1499996185303,20.4500007629395,20.4500007629395,10709,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-05-08 00:00:00+02:00 24.8999996185303 24.9500007629395 24.1000003814697 24.75 24.75 7187 0 0
3 2023-05-09 00:00:00+02:00 25 25.5 23.1499996185303 24.1499996185303 24.1499996185303 22753 0 0
4 2023-05-10 00:00:00+02:00 24.1499996185303 24.1499996185303 22 22.9500007629395 22.9500007629395 62727 0 0
5 2023-05-11 00:00:00+02:00 22.9500007629395 25 22.9500007629395 23.3500003814697 23.3500003814697 19550 0 0
6 2023-05-12 00:00:00+02:00 23.3500003814697 24 22.1000003814697 23.8500003814697 23.8500003814697 17143 0 0
7 2023-05-15 00:00:00+02:00 23 25.7999992370605 22.5 23 23 43709 0 0
8 2023-05-16 00:00:00+02:00 22.75 24.0499992370605 22.5 22.75 22.75 16068 0 0
9 2023-05-17 00:00:00+02:00 23 23.8500003814697 22.1000003814697 23.6499996185303 23.6499996185303 19926 0 0
10 2023-05-19 00:00:00+02:00 23.6499996185303 23.8500003814697 22.1000003814697 22.2999992370605 22.2999992370605 41050 0 0
11 2023-05-22 00:00:00+02:00 22.0000004768372 24.1499996185303 21.5499997138977 22.7500009536743 22.7500009536743 34022 0 0
12 2023-05-23 00:00:00+02:00 22.75 22.8999996185303 21.75 22.5 22.5 13992 0 0
13 2023-05-24 00:00:00+02:00 21 24 21 22.0100002288818 22.0100002288818 18306 0 0.1
14 2023-05-25 00:00:00+02:00 21.5699996948242 22.8899993896484 20 21.1599998474121 21.1599998474121 35398 0 0
15 2023-05-26 00:00:00+02:00 21.1599998474121 22.4950008392334 20.5 21.0949993133545 21.0949993133545 8039 0 0
16 2023-05-29 00:00:00+02:00 22.1000003814697 22.1000003814697 20.25 20.75 20.75 17786 0 0
17 2023-05-30 00:00:00+02:00 20.75 21.6499996185303 20.1499996185303 20.4500007629395 20.4500007629395 10709 0 0

View File

@ -0,0 +1,17 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2023-05-08 00:00:00+02:00,24.899999618530273,24.950000762939453,24.100000381469727,24.75,24.75,7187,0.0,0.0
2023-05-09 00:00:00+02:00,25.0,25.5,23.149999618530273,24.149999618530273,24.149999618530273,22753,0.0,0.0
2023-05-10 00:00:00+02:00,24.149999618530273,24.149999618530273,22.0,22.950000762939453,22.950000762939453,62727,0.0,0.0
2023-05-11 00:00:00+02:00,22.950000762939453,25.0,22.950000762939453,23.350000381469727,23.350000381469727,19550,0.0,0.0
2023-05-12 00:00:00+02:00,23.350000381469727,24.0,22.100000381469727,23.850000381469727,23.850000381469727,17143,0.0,0.0
2023-05-15 00:00:00+02:00,23.0,25.799999237060547,22.5,23.0,23.0,43709,0.0,0.0
2023-05-16 00:00:00+02:00,22.75,24.049999237060547,22.5,22.75,22.75,16068,0.0,0.0
2023-05-17 00:00:00+02:00,23.0,23.850000381469727,22.100000381469727,23.649999618530273,23.649999618530273,19926,0.0,0.0
2023-05-19 00:00:00+02:00,23.649999618530273,23.850000381469727,22.100000381469727,22.299999237060547,22.299999237060547,41050,0.0,0.0
2023-05-22 00:00:00+02:00,2.200000047683716,2.4149999618530273,2.1549999713897705,2.2750000953674316,2.2750000953674316,340215,0.0,0.0
2023-05-23 00:00:00+02:00,22.75,22.899999618530273,21.75,22.5,22.5,13992,0.0,0.0
2023-05-24 00:00:00+02:00,21.0,24.0,21.0,22.010000228881836,22.010000228881836,18306,0.0,0.1
2023-05-25 00:00:00+02:00,21.56999969482422,22.889999389648438,20.0,21.15999984741211,21.15999984741211,35398,0.0,0.0
2023-05-26 00:00:00+02:00,21.15999984741211,22.4950008392334,20.5,21.094999313354492,21.094999313354492,8039,0.0,0.0
2023-05-29 00:00:00+02:00,22.100000381469727,22.100000381469727,20.25,20.75,20.75,17786,0.0,0.0
2023-05-30 00:00:00+02:00,20.75,21.649999618530273,20.149999618530273,20.450000762939453,20.450000762939453,10709,0.0,0.0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2023-05-08 00:00:00+02:00 24.899999618530273 24.950000762939453 24.100000381469727 24.75 24.75 7187 0.0 0.0
3 2023-05-09 00:00:00+02:00 25.0 25.5 23.149999618530273 24.149999618530273 24.149999618530273 22753 0.0 0.0
4 2023-05-10 00:00:00+02:00 24.149999618530273 24.149999618530273 22.0 22.950000762939453 22.950000762939453 62727 0.0 0.0
5 2023-05-11 00:00:00+02:00 22.950000762939453 25.0 22.950000762939453 23.350000381469727 23.350000381469727 19550 0.0 0.0
6 2023-05-12 00:00:00+02:00 23.350000381469727 24.0 22.100000381469727 23.850000381469727 23.850000381469727 17143 0.0 0.0
7 2023-05-15 00:00:00+02:00 23.0 25.799999237060547 22.5 23.0 23.0 43709 0.0 0.0
8 2023-05-16 00:00:00+02:00 22.75 24.049999237060547 22.5 22.75 22.75 16068 0.0 0.0
9 2023-05-17 00:00:00+02:00 23.0 23.850000381469727 22.100000381469727 23.649999618530273 23.649999618530273 19926 0.0 0.0
10 2023-05-19 00:00:00+02:00 23.649999618530273 23.850000381469727 22.100000381469727 22.299999237060547 22.299999237060547 41050 0.0 0.0
11 2023-05-22 00:00:00+02:00 2.200000047683716 2.4149999618530273 2.1549999713897705 2.2750000953674316 2.2750000953674316 340215 0.0 0.0
12 2023-05-23 00:00:00+02:00 22.75 22.899999618530273 21.75 22.5 22.5 13992 0.0 0.0
13 2023-05-24 00:00:00+02:00 21.0 24.0 21.0 22.010000228881836 22.010000228881836 18306 0.0 0.1
14 2023-05-25 00:00:00+02:00 21.56999969482422 22.889999389648438 20.0 21.15999984741211 21.15999984741211 35398 0.0 0.0
15 2023-05-26 00:00:00+02:00 21.15999984741211 22.4950008392334 20.5 21.094999313354492 21.094999313354492 8039 0.0 0.0
16 2023-05-29 00:00:00+02:00 22.100000381469727 22.100000381469727 20.25 20.75 20.75 17786 0.0 0.0
17 2023-05-30 00:00:00+02:00 20.75 21.649999618530273 20.149999618530273 20.450000762939453 20.450000762939453 10709 0.0 0.0

View File

@ -0,0 +1,23 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2022-06-01 00:00:00+02:00,5.72999992370606,5.78199996948242,5.3939998626709,5.3939998626709,5.3939998626709,3095860,0,0
2022-06-02 00:00:00+02:00,5.38600006103516,5.38600006103516,5.26800003051758,5.2939998626709,5.2939998626709,1662880,0,0
2022-06-03 00:00:00+02:00,5.34599990844727,5.34599990844727,5.15800018310547,5.16800003051758,5.16800003051758,1698900,0,0
2022-06-06 00:00:00+02:00,5.16800003051758,5.25200004577637,5.13800010681152,5.18800010681152,5.18800010681152,1074910,0,0
2022-06-07 00:00:00+02:00,5.21800003051758,5.22200012207031,5.07400016784668,5.1560001373291,5.1560001373291,1850680,0,0
2022-06-08 00:00:00+02:00,5.1560001373291,5.17599983215332,5.07200012207031,5.10200004577637,5.10200004577637,1140360,0,0
2022-06-09 00:00:00+02:00,5.09799995422363,5.09799995422363,4.87599983215332,4.8939998626709,4.8939998626709,2025480,0,0
2022-06-10 00:00:00+02:00,4.87999992370606,4.87999992370606,4.50400009155274,4.50400009155274,4.50400009155274,2982730,0,0
2022-06-13 00:00:00+02:00,4.3,4.37599983215332,3.83600006103516,3.83600006103516,3.83600006103516,4568210,0,0.1
2022-06-14 00:00:00+02:00,3.87750015258789,4.15999984741211,3.85200004577637,3.9439998626709,3.9439998626709,5354500,0,0
2022-06-15 00:00:00+02:00,4.03400001525879,4.16450004577637,3.73050003051758,3.73050003051758,3.73050003051758,6662610,0,0
2022-06-16 00:00:00+02:00,3.73050003051758,3.98499984741211,3.72400016784668,3.82550010681152,3.82550010681152,13379960,0,0
2022-06-17 00:00:00+02:00,3.8,4.29949989318848,3.75,4.29949989318848,4.29949989318848,12844160,0,0
2022-06-20 00:00:00+02:00,2.19422197341919,2.2295401096344,2.13992595672607,2.2295401096344,2.2295401096344,12364104,0,0
2022-06-21 00:00:00+02:00,2.24719905853272,2.28515291213989,2.19712090492249,2.21557092666626,2.21557092666626,8434013,0,0
2022-06-22 00:00:00+02:00,1.98679196834564,2.00365996360779,1.73798203468323,1.73798203468323,1.73798203468323,26496542,0,0
2022-06-23 00:00:00+02:00,1.62411904335022,1.68526804447174,1.37320005893707,1.59776198863983,1.59776198863983,48720201,0,0
2022-06-24 00:00:00+02:00,1.47599303722382,1.54610300064087,1.1739410161972,1.24932205677032,1.24932205677032,56877192,0,0
2022-06-27 00:00:00+02:00,1.49899995326996,1.79849994182587,1.49899995326996,1.79849994182587,1.79849994182587,460673,0,0
2022-06-28 00:00:00+02:00,2.15799999237061,3.05100011825562,2.12599992752075,3.05100011825562,3.05100011825562,3058635,0,0
2022-06-29 00:00:00+02:00,2.90000009536743,3.73799991607666,2.85899996757507,3.26399993896484,3.26399993896484,6516761,0,0
2022-06-30 00:00:00+02:00,3.24900007247925,3.28099989891052,2.5,2.5550000667572,2.5550000667572,4805984,0,0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2022-06-01 00:00:00+02:00 5.72999992370606 5.78199996948242 5.3939998626709 5.3939998626709 5.3939998626709 3095860 0 0
3 2022-06-02 00:00:00+02:00 5.38600006103516 5.38600006103516 5.26800003051758 5.2939998626709 5.2939998626709 1662880 0 0
4 2022-06-03 00:00:00+02:00 5.34599990844727 5.34599990844727 5.15800018310547 5.16800003051758 5.16800003051758 1698900 0 0
5 2022-06-06 00:00:00+02:00 5.16800003051758 5.25200004577637 5.13800010681152 5.18800010681152 5.18800010681152 1074910 0 0
6 2022-06-07 00:00:00+02:00 5.21800003051758 5.22200012207031 5.07400016784668 5.1560001373291 5.1560001373291 1850680 0 0
7 2022-06-08 00:00:00+02:00 5.1560001373291 5.17599983215332 5.07200012207031 5.10200004577637 5.10200004577637 1140360 0 0
8 2022-06-09 00:00:00+02:00 5.09799995422363 5.09799995422363 4.87599983215332 4.8939998626709 4.8939998626709 2025480 0 0
9 2022-06-10 00:00:00+02:00 4.87999992370606 4.87999992370606 4.50400009155274 4.50400009155274 4.50400009155274 2982730 0 0
10 2022-06-13 00:00:00+02:00 4.3 4.37599983215332 3.83600006103516 3.83600006103516 3.83600006103516 4568210 0 0.1
11 2022-06-14 00:00:00+02:00 3.87750015258789 4.15999984741211 3.85200004577637 3.9439998626709 3.9439998626709 5354500 0 0
12 2022-06-15 00:00:00+02:00 4.03400001525879 4.16450004577637 3.73050003051758 3.73050003051758 3.73050003051758 6662610 0 0
13 2022-06-16 00:00:00+02:00 3.73050003051758 3.98499984741211 3.72400016784668 3.82550010681152 3.82550010681152 13379960 0 0
14 2022-06-17 00:00:00+02:00 3.8 4.29949989318848 3.75 4.29949989318848 4.29949989318848 12844160 0 0
15 2022-06-20 00:00:00+02:00 2.19422197341919 2.2295401096344 2.13992595672607 2.2295401096344 2.2295401096344 12364104 0 0
16 2022-06-21 00:00:00+02:00 2.24719905853272 2.28515291213989 2.19712090492249 2.21557092666626 2.21557092666626 8434013 0 0
17 2022-06-22 00:00:00+02:00 1.98679196834564 2.00365996360779 1.73798203468323 1.73798203468323 1.73798203468323 26496542 0 0
18 2022-06-23 00:00:00+02:00 1.62411904335022 1.68526804447174 1.37320005893707 1.59776198863983 1.59776198863983 48720201 0 0
19 2022-06-24 00:00:00+02:00 1.47599303722382 1.54610300064087 1.1739410161972 1.24932205677032 1.24932205677032 56877192 0 0
20 2022-06-27 00:00:00+02:00 1.49899995326996 1.79849994182587 1.49899995326996 1.79849994182587 1.79849994182587 460673 0 0
21 2022-06-28 00:00:00+02:00 2.15799999237061 3.05100011825562 2.12599992752075 3.05100011825562 3.05100011825562 3058635 0 0
22 2022-06-29 00:00:00+02:00 2.90000009536743 3.73799991607666 2.85899996757507 3.26399993896484 3.26399993896484 6516761 0 0
23 2022-06-30 00:00:00+02:00 3.24900007247925 3.28099989891052 2.5 2.5550000667572 2.5550000667572 4805984 0 0

View File

@ -0,0 +1,23 @@
Date,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
2022-06-01 00:00:00+02:00,57.29999923706055,57.81999969482422,53.939998626708984,53.939998626708984,53.939998626708984,309586,0.0,0.0
2022-06-02 00:00:00+02:00,53.86000061035156,53.86000061035156,52.68000030517578,52.939998626708984,52.939998626708984,166288,0.0,0.0
2022-06-03 00:00:00+02:00,53.459999084472656,53.459999084472656,51.58000183105469,51.68000030517578,51.68000030517578,169890,0.0,0.0
2022-06-06 00:00:00+02:00,51.68000030517578,52.52000045776367,51.380001068115234,51.880001068115234,51.880001068115234,107491,0.0,0.0
2022-06-07 00:00:00+02:00,52.18000030517578,52.220001220703125,50.7400016784668,51.560001373291016,51.560001373291016,185068,0.0,0.0
2022-06-08 00:00:00+02:00,51.560001373291016,51.7599983215332,50.720001220703125,51.02000045776367,51.02000045776367,114036,0.0,0.0
2022-06-09 00:00:00+02:00,50.97999954223633,50.97999954223633,48.7599983215332,48.939998626708984,48.939998626708984,202548,0.0,0.0
2022-06-10 00:00:00+02:00,48.79999923706055,48.79999923706055,45.040000915527344,45.040000915527344,45.040000915527344,298273,0.0,0.0
2022-06-13 00:00:00+02:00,43.0,43.7599983215332,38.36000061035156,38.36000061035156,38.36000061035156,456821,0.0,0.1
2022-06-14 00:00:00+02:00,38.775001525878906,41.599998474121094,38.52000045776367,39.439998626708984,39.439998626708984,535450,0.0,0.0
2022-06-15 00:00:00+02:00,40.34000015258789,41.64500045776367,37.30500030517578,37.30500030517578,37.30500030517578,666261,0.0,0.0
2022-06-16 00:00:00+02:00,37.30500030517578,39.849998474121094,37.2400016784668,38.255001068115234,38.255001068115234,1337996,0.0,0.0
2022-06-17 00:00:00+02:00,38.0,42.994998931884766,37.5,42.994998931884766,42.994998931884766,1284416,0.0,0.0
2022-06-20 00:00:00+02:00,2.1942219734191895,2.2295401096343994,2.139925956726074,2.2295401096343994,2.2295401096343994,12364104,0.0,0.0
2022-06-21 00:00:00+02:00,2.247199058532715,2.2851529121398926,2.1971209049224854,2.2155709266662598,2.2155709266662598,8434013,0.0,0.0
2022-06-22 00:00:00+02:00,1.986791968345642,2.003659963607788,1.7379820346832275,1.7379820346832275,1.7379820346832275,26496542,0.0,0.0
2022-06-23 00:00:00+02:00,1.6241190433502197,1.6852680444717407,1.3732000589370728,1.5977619886398315,1.5977619886398315,48720201,0.0,0.0
2022-06-24 00:00:00+02:00,1.475993037223816,1.5461030006408691,1.1739410161972046,1.2493220567703247,1.2493220567703247,56877192,0.0,0.0
2022-06-27 00:00:00+02:00,1.4989999532699585,1.7984999418258667,1.4989999532699585,1.7984999418258667,1.7984999418258667,460673,0.0,0.0
2022-06-28 00:00:00+02:00,2.1579999923706055,3.0510001182556152,2.125999927520752,3.0510001182556152,3.0510001182556152,3058635,0.0,0.0
2022-06-29 00:00:00+02:00,2.9000000953674316,3.73799991607666,2.8589999675750732,3.2639999389648438,3.2639999389648438,6516761,0.0,0.0
2022-06-30 00:00:00+02:00,3.249000072479248,3.2809998989105225,2.5,2.555000066757202,2.555000066757202,4805984,0.0,0.0
1 Date Open High Low Close Adj Close Volume Dividends Stock Splits
2 2022-06-01 00:00:00+02:00 57.29999923706055 57.81999969482422 53.939998626708984 53.939998626708984 53.939998626708984 309586 0.0 0.0
3 2022-06-02 00:00:00+02:00 53.86000061035156 53.86000061035156 52.68000030517578 52.939998626708984 52.939998626708984 166288 0.0 0.0
4 2022-06-03 00:00:00+02:00 53.459999084472656 53.459999084472656 51.58000183105469 51.68000030517578 51.68000030517578 169890 0.0 0.0
5 2022-06-06 00:00:00+02:00 51.68000030517578 52.52000045776367 51.380001068115234 51.880001068115234 51.880001068115234 107491 0.0 0.0
6 2022-06-07 00:00:00+02:00 52.18000030517578 52.220001220703125 50.7400016784668 51.560001373291016 51.560001373291016 185068 0.0 0.0
7 2022-06-08 00:00:00+02:00 51.560001373291016 51.7599983215332 50.720001220703125 51.02000045776367 51.02000045776367 114036 0.0 0.0
8 2022-06-09 00:00:00+02:00 50.97999954223633 50.97999954223633 48.7599983215332 48.939998626708984 48.939998626708984 202548 0.0 0.0
9 2022-06-10 00:00:00+02:00 48.79999923706055 48.79999923706055 45.040000915527344 45.040000915527344 45.040000915527344 298273 0.0 0.0
10 2022-06-13 00:00:00+02:00 43.0 43.7599983215332 38.36000061035156 38.36000061035156 38.36000061035156 456821 0.0 0.1
11 2022-06-14 00:00:00+02:00 38.775001525878906 41.599998474121094 38.52000045776367 39.439998626708984 39.439998626708984 535450 0.0 0.0
12 2022-06-15 00:00:00+02:00 40.34000015258789 41.64500045776367 37.30500030517578 37.30500030517578 37.30500030517578 666261 0.0 0.0
13 2022-06-16 00:00:00+02:00 37.30500030517578 39.849998474121094 37.2400016784668 38.255001068115234 38.255001068115234 1337996 0.0 0.0
14 2022-06-17 00:00:00+02:00 38.0 42.994998931884766 37.5 42.994998931884766 42.994998931884766 1284416 0.0 0.0
15 2022-06-20 00:00:00+02:00 2.1942219734191895 2.2295401096343994 2.139925956726074 2.2295401096343994 2.2295401096343994 12364104 0.0 0.0
16 2022-06-21 00:00:00+02:00 2.247199058532715 2.2851529121398926 2.1971209049224854 2.2155709266662598 2.2155709266662598 8434013 0.0 0.0
17 2022-06-22 00:00:00+02:00 1.986791968345642 2.003659963607788 1.7379820346832275 1.7379820346832275 1.7379820346832275 26496542 0.0 0.0
18 2022-06-23 00:00:00+02:00 1.6241190433502197 1.6852680444717407 1.3732000589370728 1.5977619886398315 1.5977619886398315 48720201 0.0 0.0
19 2022-06-24 00:00:00+02:00 1.475993037223816 1.5461030006408691 1.1739410161972046 1.2493220567703247 1.2493220567703247 56877192 0.0 0.0
20 2022-06-27 00:00:00+02:00 1.4989999532699585 1.7984999418258667 1.4989999532699585 1.7984999418258667 1.7984999418258667 460673 0.0 0.0
21 2022-06-28 00:00:00+02:00 2.1579999923706055 3.0510001182556152 2.125999927520752 3.0510001182556152 3.0510001182556152 3058635 0.0 0.0
22 2022-06-29 00:00:00+02:00 2.9000000953674316 3.73799991607666 2.8589999675750732 3.2639999389648438 3.2639999389648438 6516761 0.0 0.0
23 2022-06-30 00:00:00+02:00 3.249000072479248 3.2809998989105225 2.5 2.555000066757202 2.555000066757202 4805984 0.0 0.0

View File

@ -662,36 +662,27 @@ class TestPriceRepair(unittest.TestCase):
self.assertFalse(repaired_df["Repaired?"].isna().any())
def test_repair_bad_stock_split(self):
# Setup:
# import logging
# logging.getLogger('yfinance').setLevel(logging.DEBUG)
tkrs = ['4063.T', 'CNE.L', 'DEX.AX', 'MOB.ST']
for tkr in tkrs:
bad_tkrs = ['4063.T', 'ALPHA.PA', 'CNE.L', 'DEX.AX', 'MOB.ST', 'SPM.MI']
for tkr in bad_tkrs:
dat = yf.Ticker(tkr, session=self.session)
tz_exchange = dat.fast_info["timezone"]
_dp = os.path.dirname(__file__)
df_bad = _pd.read_csv(os.path.join(_dp, "data", tkr.replace('.','-')+"-bad-stock-split.csv"), index_col="Date")
df_bad.index = _pd.to_datetime(df_bad.index)
# print(df_bad.index)
# print(df_bad[['Close', 'Adj Close', 'Stock Splits']])
# return
repaired_df = dat._fix_bad_stock_split(df_bad, "1d")
# print(repaired_df[['Close', 'Adj Close', 'Stock Splits']])
# return
correct_df = _pd.read_csv(os.path.join(_dp, "data", tkr.replace('.','-')+"-bad-stock-split-fixed.csv"), index_col="Date")
correct_df.index = _pd.to_datetime(correct_df.index)
correct_df = correct_df.sort_index(ascending=False)
repaired_df = repaired_df.sort_index()
correct_df = correct_df.sort_index()
for c in ["Open", "Low", "High", "Close", "Adj Close", "Volume"]:
try:
self.assertTrue(_np.isclose(repaired_df[c], correct_df[c], rtol=5e-6).all())
except:
print("COLUMN", c)
print(f"tkr={tkr} COLUMN={c}")
print("- repaired_df")
print(repaired_df)
print("- correct_df[c]:")
@ -700,6 +691,36 @@ class TestPriceRepair(unittest.TestCase):
print(repaired_df[c] - correct_df[c])
raise
# Stocks that split in 2022 but no problems in Yahoo data,
# so repair should change nothing
good_tkrs = ['AMZN', 'DXCM', 'FTNT', 'GOOG', 'GME', 'PANW', 'SHOP', 'TSLA']
good_tkrs += ['AEI', 'CHRA', 'GHI', 'IRON', 'LXU', 'NUZE', 'RSLS', 'TISI']
good_tkrs += ['BOL.ST', 'TUI1.DE']
for tkr in good_tkrs:
dat = yf.Ticker(tkr, session=self.session)
tz_exchange = dat.fast_info["timezone"]
_dp = os.path.dirname(__file__)
df_good = dat.history(period='2y', auto_adjust=False)
repaired_df = dat._fix_bad_stock_split(df_good, "1d")
# Expect no change from repair
df_good = df_good.sort_index()
repaired_df = repaired_df.sort_index()
for c in ["Open", "Low", "High", "Close", "Adj Close", "Volume"]:
try:
self.assertTrue((repaired_df[c].to_numpy() == df_good[c].to_numpy()).all())
except:
print(f"tkr={tkr} COLUMN={c}")
print("- repaired_df")
print(repaired_df)
print("- df_good[c]:")
print(df_good[c])
print("- diff:")
print(repaired_df[c] - df_good[c])
raise
if __name__ == '__main__':
unittest.main()

View File

@ -414,6 +414,7 @@ class TickerBase:
df = self._fix_unit_mixups(df, interval, tz_exchange, prepost, silent=(repair=="silent"))
df = self._fix_missing_div_adjust(df, interval)
df = self._fix_bad_stock_split(df, interval)
df = df.sort_index()
# Auto/back adjust
try:
@ -952,11 +953,12 @@ class TickerBase:
# If stock split occurred, then trading must have happened.
# I should probably rename the function, because prices aren't zero ...
f_split = (df2['Stock Splits'] != 0.0).to_numpy()
if f_split.any():
f_change_expected_but_missing = f_split & ~f_change
if f_change_expected_but_missing.any():
f_prices_bad[f_change_expected_but_missing] = True
if 'Stock Splits' in df2.columns:
f_split = (df2['Stock Splits'] != 0.0).to_numpy()
if f_split.any():
f_change_expected_but_missing = f_split & ~f_change
if f_change_expected_but_missing.any():
f_prices_bad[f_change_expected_but_missing] = True
# Check whether worth attempting repair
f_prices_bad = f_prices_bad.to_numpy()
@ -1021,6 +1023,8 @@ class TickerBase:
# Sometimes, if a dividend occurred today, then Yahoo has not adjusted historic data.
# Easy to detect and correct.
if df is None or df.empty:
return df
interday = interval in ['1d', '1wk', '1mo', '3mo']
if not interday:
return df
@ -1044,7 +1048,7 @@ class TickerBase:
# No other divs in data
start_idx = 0
else:
start_idx = div_indices[-2] + 1
start_idx = div_indices[-2]
start_dt = df.index[start_idx]
f_no_adj = (df['Close']==df['Adj Close']).to_numpy()[start_idx:last_div_idx]
threshold_pct = 0.5
@ -1085,90 +1089,106 @@ class TickerBase:
most_recent_split_day = df.index[split_f].max()
split = df.loc[most_recent_split_day, 'Stock Splits']
split_rcp = 1.0/split
if most_recent_split_day == df.index[0]:
logger.info("split-repair: Need 1+ day of price data after split to determine true price. Won't repair")
return df
logger.debug(f'split-repair: Most recent split = {split}')
logger.debug(f'split-repair: Most recent split = {split:.4f} @ {most_recent_split_day.date()}')
price_col = 'Close'
price_cols = ['Open', 'Low', 'High', 'Close']
# Do not attempt repair of the split is small,
# could be mistaken for normal price variance
if split > 0.9 and split < 1.1:
if split > 0.8 and split < 1.25:
logger.info("split-repair: Split ratio too close to 1. Won't repair")
return df
df_debug = df.copy()
if logger.level == logging.DEBUG:
df_debug = df.copy()
df_debug = df_debug.drop(['Adj Close', 'Low', 'High', 'Volume', 'Dividends', 'Repaired?'], axis=1)
# Calculate daily price % change.
_1d_change_x = _np.full(df.shape[0], 1.0)
_1d_change_x[1:] = df[price_col].to_numpy()[1:] / df[price_col].to_numpy()[:-1]
df_debug['1D change X'] = _1d_change_x
# Calculate daily price % change. To reduce effect of price volatility,
# calculate change for each OHLC column and select value nearest 1.0.
_1d_change_x = _np.full((df.shape[0], 4), 1.0)
_1d_change_x[1:] = df[price_cols].to_numpy()[1:,] / df[price_cols].to_numpy()[:-1,]
diff = _np.abs(_1d_change_x - 1.0)
j_indices = _np.argmin(diff, axis=1)
_1d_change_x = _1d_change_x[_np.arange(_1d_change_x.shape[0]), j_indices]
x = pd.DataFrame(_1d_change_x, index=df.index)
if logger.level == logging.DEBUG:
df_debug['1D change X'] = _1d_change_x
# Calculate the true price variance, i.e. remove effect of bad split-adjustments
avg = _np.mean(_1d_change_x)
if split < 1.0:
logger.debug("split-repair: Expect true prices to be the smaller cluster")
# Calculate the variance of changes, excluding changes ABOVE mean which may be changes from bad split adjustment
f_inclusion = _1d_change_x < avg
else:
logger.debug("split-repair: Expect true prices to be the larger cluster")
# Calculate the variance of changes, excluding changes BELOW mean which may be changes from bad split adjustment
f_inclusion = _1d_change_x > avg
_1d_change_x_inclusion = _1d_change_x[f_inclusion]
variance = _np.var(_1d_change_x_inclusion)
sd = _np.sqrt(variance)
logger.debug(f"split-repair: Estimation of StdDev = {sd:.2f}")
# Next step is a better guess at identifying all good changes.
# 1) calculate mean of _1d_change_x_inclusion
avg = _np.mean(_1d_change_x_inclusion)
logger.debug(f"split-repair: Naive estimation of avg change = {avg:.2f}")
# 2) identify changes from original data within 3 SDs of mean
f = _np.abs(_1d_change_x - avg) <= 3*sd
if not f.any():
logger.debug(f'split-repair: Fault in logic identifying true price variance')
# If all 1D changes are closer to 1.0 than split, exit
split_max = max(split, split_rcp)
if _np.max(_1d_change_x) < (split_max-1)*0.5+1 and _np.min(_1d_change_x) > 1.0/((split_max-1)*0.5 +1):
logger.info(f"split-repair: No bad splits detected")
return df
# 3) re-calculate the statistics
# Calculate the true price variance, i.e. remove effect of bad split-adjustments.
# Key = ignore 1D changes outside of interquartile range
q1, q3 = _np.percentile(_1d_change_x, [25, 75])
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
f = (_1d_change_x >= lower_bound) & (_1d_change_x <= upper_bound)
avg = _np.mean(_1d_change_x[f])
sd = _np.std(_1d_change_x[f])
logger.debug(f"split-repair: Improved estimation of avg change = {avg:.2f} and StdDev = {sd:.4f}")
# Now can calculate SD as % of mean
sd_pct = sd / avg
logger.debug(f"split-repair: SD % mean = {sd_pct:.4f}")
logger.debug(f"split-repair: Estimation of true 1D change stats: mean = {avg:.2f}, StdDev = {sd:.4f} ({sd_pct*100.0:.1f}% of mean)")
# Only proceed if split adjustment far exceeds normal 1D changes
if (split < 1.0 and 100*split_rcp < 5*sd_pct) or \
(split > 1.0 and 100*split < 5*sd_pct):
largest_change_pct = 5*sd_pct
if (max(split, split_rcp) < 1.0+largest_change_pct):
logger.info("split-repair: Split ratio too close to normal price volatility. Won't repair")
# if logger.level == logging.DEBUG:
# logger.debug(f"split-repair: my workings:")
# logger.debug('\n' + str(df_debug))
return df
# Now can detect bad split adjustments
# Set threshold to halfway between split ratio and largest expected normal price change
r = _1d_change_x / split_rcp
# - within 50% => more likely to be bad split adjustment than within normal price variance
f1 = (r > 0.5) & (r < 1.5)
r = _1d_change_x / split
f2 = (r > 0.5) & (r < 1.5)
split_max = max(split, split_rcp)
threshold = (split_max + largest_change_pct) * 0.5
logger.debug(f"split-repair: threshold={threshold:.3f}")
f1 = _1d_change_x < 1.0/threshold
f2 = _1d_change_x > threshold
f = f1 | f2
# df_debug['f'] = f
# df_debug['f1'] = f1
# df_debug['f2'] = f2
if logger.level == logging.DEBUG:
df_debug['r'] = r
df_debug['f1'] = f1
df_debug['f2'] = f2
if not f.any():
logger.info('split-repair: No bad split adjustments detected')
return df
true_indices = _np.where(f)[0]
ranges = []
# mask = _np.zeros_like(f, dtype=bool)
if logger.level == logging.DEBUG:
bad = _np.zeros_like(f, dtype=bool)
for i in range(len(true_indices) - 1):
if i % 2 == 0:
# mask[true_indices[i]:true_indices[i + 1]] = True
adj = 'split' if f1[true_indices[i]] else '1.0/split'
if logger.level == logging.DEBUG:
bad[true_indices[i]:true_indices[i + 1]] = True
if split > 1.0:
adj = 'split' if f1[true_indices[i]] else '1.0/split'
else:
adj = '1.0/split' if f1[true_indices[i]] else 'split'
ranges.append((true_indices[i], true_indices[i+1], adj))
if len(true_indices) % 2 != 0:
# mask[true_indices[-1]:] = True
adj = 'split' if f1[true_indices[-1]] else '1.0/split'
if logger.level == logging.DEBUG:
bad[true_indices[-1]:] = True
if split > 1.0:
adj = 'split' if f1[true_indices[-1]] else '1.0/split'
else:
adj = '1.0/split' if f1[true_indices[-1]] else 'split'
ranges.append((true_indices[-1], len(f), adj))
# print("ranges:") ; pprint(ranges)
# df_debug['mask'] = mask
# if logger.level == logging.DEBUG:
# from pprint import pprint ; print("ranges:") ; pprint(ranges)
if logger.level == logging.DEBUG:
df_debug['Bad?'] = bad
for r in ranges:
if r[2] == 'split':
@ -1177,6 +1197,7 @@ class TickerBase:
else:
m = split_rcp
m_rcp = split
# logger.debug(f"split-repair: range={r} m={m}")
for c in ['Open', 'High', 'Low', 'Close', 'Adj Close']:
df.iloc[r[0]:r[1], df.columns.get_loc(c)] *= m
df.iloc[r[0]:r[1], df.columns.get_loc("Volume")] *= m_rcp
@ -1194,9 +1215,11 @@ class TickerBase:
else:
msg = f"split-repair: Corrected bad split adjustment across intervals {start} -> {end} (inclusive)"
logger.info(msg)
df['Volume'] = df['Volume'].round(0).astype('int')
# print(df_debug.drop(['Close', 'Low', 'High', 'Volume', 'Dividends'], axis=1))
# print(df.drop(['Close', 'Low', 'High', 'Volume', 'Dividends'], axis=1))
# if logger.level == logging.DEBUG:
# logger.debug(f"split-repair: my workings:")
# logger.debug('\n' + str(df_debug))
return df