When I graduated from Cambridge I was looking forward to putting my computer science education to good use in the hi-tech world of finance. So when I was given the job of building a plugin for Microsoft Excel as one of my first real-world tasks as a graduate developer, when other developers were working on greenfield cloud technologies, my enthusiasm couldn’t be described as off the charts. It can be hard to get excited about spreadsheets, especially if your most recent experience was to keep track of what scores you needed in each exam to get the grade you want.
I wasn’t surprised to discover that traders and quants love dabbling with Excel, but what I didn’t know was that Excel can work with real time market data, giving users freedom to quickly experiment and prototype new ideas. Subsequently, it didn’t take me long to realise that this wouldn’t be a project spent solely with Excel and VBA. Through the project, I’ve used multiple programming languages, built REST APIs, .NET libraries, Windows Installers, worked on our core trading systems and even visited clients.
Coming from a Java background, the first challenge was to learn C# in order to build the libraries to connect to the BidFX price feeds and the Real-Time Data (RTD) server that communicates with Excel. It turns out that C# is pretty easy for a Java developer to pick up. There is a lot of commonality between the two languages. Next came building the interface with Excel using VBA, of which I’d had about 4 hours experience with ten years ago. Fortunately, very little BASIC coding is required beyond simple plumbing. Finally, I needed to package everything into an installer that would enable the add-in and register the libraries with Windows. That involved learning to use InnoSetup, integrating it with Excel, and an exhausting amount of QA testing.
So I finally got streaming/RFS pricing working in an Excel add-in that could be delivered in a single executable, and produced a C# library that can be used by clients if they wish to build their own .NET applications. It was then time to swap my jeans and T-shirt for a suit and tie and present a demo for a major hedge fund client.
The next feature on the board was the ability to register orders via Excel. With clients asking for the ability to trade via REST, we built a new RESTful service for FX along with the team from TradingScreen who built equivalent components for Equities, Futures, and Options. I then implemented the REST API calls with within our C# library and exposed them as Excel functions, enabling the staging of FX limit and market orders through Excel. Staged orders can be auto-routed to the BidFX Strategy server for best execution with the most competitive LP and are automatically displayed in the user’s TradeSmart™ GUI.
The team at BidFX were in constant communication with our clients, ensuring that the REST API had the capabilities they required, and using feedback to focus on the next features to implement. The demand for the APIs has been fantastic – with clients around the world installing the plugin.
One client had a need to get FX Swap pricing via a request-for-quote (RFQ) workflow. Supporting this functionality through the APIs required upgrades to our core pricing infrastructure, so I got to re-hone my Java skills for a while.
Through all this, we’ve created a .NET library that can handle hundreds of price subscriptions in real time, a REST API for order management, and an Excel plugin that leverages both to enable users familiar with Excel to interface with BidFX in an intuitive manner. I also learnt a lot about FX along the way. The work doesn’t end there though. My colleagues and I will continue to extend and improve our APIs to allow clients to get even more hands-on with their data. It turns out that Excel can be interesting after all.