Last few weeks has been a nightmare of sorts for us. We have had issues with our Bank and Backoffice which had choked the entire support system here. This had like a domino affect and hurt our response times for even the normal tickets/queries. Below is a summary and what we have done to get over it.
Issues from our banking partner HDFC
On 9th April HDFC Bank did a major update to their core banking service. When they did, their solution provided to us for fund transfer update broke. So what this meant is that if funds were transferred by a client using NEFT/RTGS/IMPS, we were not getting to know which bank account number the funds were coming from. Since we don’t know which account money is coming from, we were not able to update funds to the trading account on time. We had to manually download bank statements and cross check and update funds manually. Whenever there is manual intervention, there are bound to be errors. We get tens of thousands of fund transfers every day, the entire support system suddenly choked because of firstly delay in the fund updates on client accounts but also the errors.
This issue is behind us now. There were no issues for clients using the payment gateway. We got HDFC to give us a different report until they fix their core banking update issue. For everyone using NEFT/RTGS/IMPS, using ZERNSE/ZERMCX to transfer funds as mentioned here, will mean a faster update on the trading account.
Q related issues
Markets hitting all time highs has meant that we have seen a huge surge in the number of clients trading and also in terms of number of holdings. We suddenly realized that our earlier logic of calculating P&L’s or holding values is tough to support at this scale.
Here is one thing that I want everyone to know, P&L and holding buy value calculation is an analytic layer only. This has no bearing on the actual trading account balance or the number of shares/positions held. The actual funds or # of holdings has never been wrong till date, as it gets reconciled with the exchanges every day. P&L and holding buy average are us building another report over this to show the performance of the account. The way P&L/holding price is calculated is different compared to how the end of trade process happens to determine ledger balance. If you do P&L based on only ledger entries, it will match 100%. But since P&L’s are done based on trades, the mismatch can happen - not just for us but across brokers (especially when there are corporate actions on underlying stocks or stocks transferred in from another broker).
Some of the things that have backfired with Q, which we had done with the intention to help clients
- Ability to add buy average price for stocks transferred from another demat to us (we are the only ones in India who allow this). When this price is entered, we create an artificial trade of sorts in our tradebook database. When this is entered, we have to go back in time and recalculate the holding buy average price and P&L.
- The way we calculate holding buy average price or P&L using FIFO. What this means is that when you sell something, the stocks held first are removed, to show the latest average price. This is the right way to do it, even for taxation purposes. All brokers that I know of just do a simple average of everything bought till now to determine buy average. What this means for us is that, everyday we have to look at all the 1 million + lines of holdings with us and go back in time to apply FIFO.
- Most brokers give P&L only for a financial year or for between a period within the year. Makes life very simple as the load on their database drops significantly. With us, we are allowing to pull P&L reports for multiple years. (even ur bank and credit card statements without any P&L calculation have a time limit that you can pull for).
Similarly a lot of these features/reports on Q, that worked well when we were smaller, started behaving weirdly with the surge of business this year and completely fail for few weeks. What has made it worse for us is that we rely on a vendor (HarsaIT when we started the business, they got bought over by Omnesys, Omnesys got bought by Thomson Reuters) for the backend trade process and they have done a horrible job supporting us to handle scale.
For now, Q issues have been sorted by us moving into a mega-powerful server (we have removed some of the reports which aren’t essential). We have been working on Crux (in-house trade process platform) for over 18 months. This has taken us much longer than anticipated. We have started replacing the backend bits from our old vendor to the in-house tool (crux). Once done we will launch new Q with much better reporting. The way crux has been built is that we will soon be able to support everything that we had originally envisioned along with things like instant fund withdrawal requests, turn Q into a trading journal, pre-calculated P&L’s, much better visualizations, and more.
These are not excuses, I know that as a client you don’t really care for what is causing the issue, you’d expect us to take care of these and ensure that you get top notch service. I want to assure you that we are all slogging our butts to make sure that you get the best experience trading at Zerodha.