mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-28 16:28:52 +08:00
4fcf31730c
When the following conditions occur, - a `nan` occurred after a half day (e.g. on the Monday after Thanksgiving, where the Friday would be a half day.) -data was written to the span between the early close and where the market close would have been if it were not an early close session - a `nan` also occured on the last minute of the early market session. the exisitng implementation would incorrectly return a `nan` when requesting a forward filled price. The steps that caused this error were. 1. Request for `'price'` on the market open of the day after the early close. 2. `nan` is found for that minute 3. `get_last_traded_dt` is called, and finds a volume that occurs after the early close. e.g. `18:47` when the market close was `18:00`. 4. The minute position for `18:47` is used, when calling `find_positon_of_minute`, since that value is after the `market_close` the minute is set to the position of `18:00`` due to the delta logic in 5. Since there is also no data in at `18:00`, a `nan` is returned, even though there were valid minutes earlier in the session. e.g. a non-zero volume at `16:47` should have been used, but was not. Fix by checking the current minute against the minute close when searching for the last traded minute. If the minute is greater than the market close for the corresponding day, continue the search until the minute position is within the trading session. This could also be fixed by enforcing that only zeros can be written between an early close and the minute where the close would have been, but this fix allows the reader to work with existing data.