Hi,
I’m trying to make use of the top market movers endpoint, but the figures seem wild, as though they haven’t been reset. The documentation says “For stocks, the endpoint resets at market open.”.
Today the first showing up is ATNFW:
Based on the figures, it would suggest the open price for the day would be 0.1065. The actual open price for today was 0.57:
Is anyone able to explain where the movers endpoint is getting the data from? It’s troubling me that a stock which has lost value today, is actually showing as the top gainer.
Thanks,
Mat
@Mathewrimmington The market movers endpoint calculates gain as the (current_price / prev_eod_close) - 1
Notice it is comparing to the previous end of day close price and not the current day open price. In your example, if you check the close on 2025-08-12 you will see it is .1065 as you calculated.
The note in the documentation states “For stocks, the endpoint resets at market open. Until then, it shows the previous market day’s movers.” This implies the top movers endpoint should generally only be called after markets open otherwise you will be getting old data from the previous day.
Hope that helps.
Hi Dan,
Thanks for getting back to me with the info. I’m not sure I follow this very well though.
The market was open when I made a call to the endpoint. It is still open at 16:29 UTC and the endpoint is still showing ATNFW as the top gainer.
I get that if the endpoint is called before the market opens that the figures would be for the previous day, but after the market opens and the reset occurs, why would data from the previous day still be getting used?
Mat
@Mathewrimmington At 2025-08-13 16:29 UTC the price of ATNFW was around 0.4726. The previous end of day close on 2025-08-12 was .1065. The gain was therefore (0.4726 / .1065) -1
or ~340%. That is why it’s in the top gainers.
The comparison is always to the previous end of day close. Before markets open it’s still showing the previous gain which is compared to the the close 2 days ago.
I understand now thanks. I interpreted the documentation slightly, and that the reset would use the market open of the current day once the market opens.
@Mathewrimmington Completely understandable. The docs are a bit confusing. Something to consider though when looking at various “Top Movers” list. What is the ‘baseline’ price for comparison? The four I have seen are:
- the previous end of market hour day close which Alpaca uses (ie typically 16:00 ET)
- the previous end of extended hour trading day close (ie typically 20:00)
- the current day pre-market open price (ie 4:00 AM ET)
- the current day market open (ie 9:30 AM ET)
1 Like