It’s been a labor of love creating and running Custom Stock Alerts. Since inception it’s been a non-stop endeavor of fixing bugs and bringing new features and enhancements. One of the most requested features was for real time data. There have been numerous challenges with actually pulling this off, namely real-time data feeds can run in the tens of thousands of dollars per year. Through the free data offerings provided by IEX this is now become a reality. I’m incredibly proud to announce that real time data and alerting is now live.
You may say, if only now it is real time, what was it before? Previously based on data source availability there was about a five minute delay. Not much and for 99% of use cases it was plenty fast enough to fit the bill. The other 1% would be the day trading crowd. A five minute delay could mean the difference in trading results for those folks and it was critical to have this function in real time. Never shying away from a challenge, I made the necessary architectural changes to accomplish this.
So what actually changed? Well for starters, I switched the pricing data to come from IEX per their excellent API. That presented some unique challenges to properly capture all quote changes coming in as there can be tens of thousands per minute. The other half of the battle was implementing a real time alerting system. As the data streams in, it will push out alerts that have triggered. The end result is evident (and testable) with how quick you will receive alerts. In my own testing I had a text within 2 seconds of updating an alert to trigger. If you want to test this yourself, edit one of your alerts so that the target value will cause it to be immediately triggered. Example, setting a “Price Above Limit” for AAPL with a ridiculous number like $1000 (current share price is approximately $210).
Real time data and alerting has been one of the highest goals of my own to achieve through this project. I am more proud to have accomplished that for my users. If you are into day trading, that is now supported! Let me know what you think and if you hit any issues with it.