C++ 20 Techniques for Algorithmic Trading
Why do the biggest and most profitable trading firms use C++? In this webinar we will address this question and present one of the most anticipated features of C++20 standard: Ranges.
Meet Our Panel
To start us off, C++ ISO committee member, Antony Peacock, will describe what modern day C++ looks like at leading market-maker and proprietary trading firm Maven Securities where he is a senior developer.
Rainer Grimm of Modernes C++ will then give us a detailed overview of the Ranges library and provide a soupçon of concepts in C++20.
Finally, Richard Hickling will run a C++ algo trading strategy in a live environment on the crypto exchange FTX, whilst managing the risk and PnL using ProfitView. All the code will be made available open-source to webinar participants.
C++ – A New Language Every 3 Years
While C++ is considered an old language, it is in its nature to improve.
In fact, it is in its name: “++” is its increment operator. And, through the process of ISO standardization, that increment happens every three years. This momentum of improvement has led to a renewal of the C++ community and a huge surge in its usage and importance.
While in the 2000s C++ looked to be losing mind-share to Java and C#, it has now outpaced those ecosystems and remains relevant even compared to the many upstarts like Rust and Go and the Web 2.0 contenders like Python and Javascript.
As experienced C++ developers know, the increments are significant. In fact, back in 2011 when this 3 year cadence first began, the inventor of C++ Bjarne Stroustrup said the updated C++ “feels like a new language”. The same has been true for C++14 and C++17. C++20 however seems like another level – huge and powerful improvements.
Modernes C++ Mentoring
Do you want to stay informed: Subscribe.
But with powerful new features comes complexity. This has two large implications. One, if development teams fall behind, sticking with C++14 – or even C++11, the subsequent upgrade path will be painful and risky. Many choose to wait – they stay an increment behind as a matter of policy.
There is a cost to this. The new functionality is not for nothing: it significantly improves productivity and performance. Further, C++ developers often find being behind the times hard to take. There is a great thrill in using smart new features (like Ranges which are the feature of this webinar). To be aware of new tools while unable to use them is frustrating.
Secondly, the correct use of these features requires deep understanding of their intent and workings. C++ complexity is anyway legendary. While it used to be the case that, as a badge of expertise, the top C++ gurus would outdo each other with the completeness and depth of their understanding of the language, those days are over. Our panelist Antony Peacock relates an incident from at a recent C++ standardization meeting with most of the well-known luminaries of the language present. Nevertheless, it was necessary to send someone out to find the one person known to understand a particular feature (coroutines). No-one on the committee understood them properly.
So what is one to do about this complexity? Our panelists can help.
Keep Up and Keep Learning
Antony Peacock started his C++ journey with the video game industry. For those who know both industries, that he has transitioned into finance is not a surprise. Finance is often modelled with the mathematics of Game Theory (remember John Nash’s beautiful mind). Game playing depends on consistent rules. Perhaps that’s what led Antony to start participating and eventually taking a leading role in C++ standardization. Now, as a voting member of the ISO Standardization Committee, he actively directs the C++ increments.
Therefore, at Maven Securities, where Antony is a senior developer, they do not let themselves fall behind C++ standards. Instead, they actively bring in the new compiler versions as they are released. Necessarily, they have developed extensive test mechanisms to minimize the risk of the process. If you want to use the latest C++ features – Maven may be the place for you.
In this webinar, Antony will give you some insight into the life of high-frequency trading C++ developers at Maven.
But it’s not enough just to let new hires loose on a code base – at least, not anymore. In earlier days, so long as developers had properly read two or three text-books, they could start contributing. Now, institutions who use C++ at a serious scale need to go further. Their developers need training. That’s where our second panelist, Rainer Grimm comes in.
Rainer, with Modernes C++, has put together a training process that cuts C++ into “bite size” chunks that can each be explained fully in a reasonable sequence. Organizations starting new C++ projects can integrate developer training into their planning. Their architects may decide that Coroutines or Ranges, say, are vital parts of their system. That’s fine – they can forward plan to upgrade their collective skill-sets with the aid of Rainer’s courses.
With Modernes C++’s new Mentoring Program, Rainer lets you take this training home with you. Now you can build your skill-set to an expert level without impacting your day job.
Rainer in this webinar will focus on the C++20 feature Ranges and the C++ Concepts that are associated with them. C++ literate webinar participants will come away a good understanding of Ranges and how they can be used.
The Proof is in the Execution
As those who have participated in our previous webinars will be aware, we don’t restrict ourselves to the theoretical. We always want to make it real by taking the subject of our discussions, writing code that uses it. In particular, we run live trading algorithms. This time will be no exception. We will show a simple mean-reversion algo, adjusted in a way that makes use of Ranges.
Richard Hickling will walk through the algo, explaining its limitations. He will then run it, trading live on the FTX crypto exchange. It might even make us some money!
{loadmoduleid 155}
Thanks a lot to my Patreon Supporters: Matt Braun, Roman Postanciuc, Tobias Zindl, G Prvulovic, Reinhold Dröge, Abernitzke, Frank Grimm, Sakib, Broeserl, António Pina, Sergey Agafyin, Андрей Бурмистров, Jake, GS, Lawton Shoemake, Jozo Leko, John Breland, Venkat Nandam, Jose Francisco, Douglas Tinkham, Kuchlong Kuchlong, Robert Blanch, Truels Wissneth, Mario Luoni, Friedrich Huber, lennonli, Pramod Tikare Muralidhara, Peter Ware, Daniel Hufschläger, Alessandro Pezzato, Bob Perry, Satish Vangipuram, Andi Ireland, Richard Ohnemus, Michael Dunsky, Leo Goodstadt, John Wiederhirn, Yacob Cohen-Arazi, Florian Tischler, Robin Furness, Michael Young, Holger Detering, Bernd Mühlhaus, Stephen Kelley, Kyle Dean, Tusar Palauri, Juan Dent, George Liao, Daniel Ceperley, Jon T Hess, Stephen Totten, Wolfgang Fütterer, Matthias Grün, Phillip Diekmann, Ben Atakora, Ann Shatoff, Rob North, Bhavith C Achar, Marco Parri Empoli, Philipp Lenk, Charles-Jianye Chen, Keith Jeffery, Matt Godbolt, and Honey Sukesan.
Thanks, in particular, to Jon Hess, Lakshman, Christian Wittenhorst, Sherhy Pyton, Dendi Suhubdy, Sudhakar Belagurusamy, Richard Sargeant, Rusty Fleming, John Nebel, Mipko, Alicja Kaminska, Slavko Radman, and David Poole.
My special thanks to Embarcadero | |
My special thanks to PVS-Studio | |
My special thanks to Tipi.build | |
My special thanks to Take Up Code | |
My special thanks to SHAVEDYAKS |
Modernes C++ GmbH
Modernes C++ Mentoring (English)
Rainer Grimm
Yalovastraße 20
72108 Rottenburg
Mail: schulung@ModernesCpp.de
Mentoring: www.ModernesCpp.org
Modernes C++ Mentoring,
Leave a Reply
Want to join the discussion?Feel free to contribute!