Getting to Know Dmitri Nesteruk: Quant Finance and Developer Tools

Dmitri NesterukIn this interview we speak with Dmitri Nesteruk (@dnesteruk), JetBrains Developer Evangelist. We will talk a bit about his background, learn about his interest in Quantitative Finance, and hear his opinion on the impact of our upcoming JetBrains C++ Tools. Meet Dmitri in Prague, December 18th, for our free evening event, JetBrains Tools for .NET Developers.

Welcome Dmitri. Can you tell us a bit about yourself and your background?

Well, I was born in Russia but left it just before the collapse of the Soviet Union, and grew up in Sweden and the UK. I got a B.Sc. in Computer Science from the University of Southampton, and even took a shot at doing a PhD but bailed out and ended up working as a developer and then process manager for the European subsidiaries of Emerson Electric. My background is in software engineering, particularly C++ and C#. I’ve done a bit of everything, starting from WinForms/ASP.NET going to pure numerics in C++ and MATLAB. Most of my recent endeavors involve applications of technology in finance.

How long have you worked at JetBrains and what are your responsibilities?

I’ve been with JetBrains just over 3 years. My official job title is Developer Evangelist, and my work mainly involves travel to events to give talks on various products and technologies. I stick mainly to the .NET side of things, but am very excited that we’re going to have a C++ presence very soon.

You are an instructor of an entry-level course in Quantitative Finance. What is it, why should we care and how does it relate to your job at JetBrains?

quant finance

Well, first of all, it’s worth noting that developer evangelists are, by and large, very much into consulting and doing trainings/workshops, and typically get exposure in specific fields of technology application. That field could be cloud computing, infrastructure management, practically any domain that uses computers. It can, of course, be the domain of software engineering itself, which is what JetBrains is about – tools by engineers, for engineers.

My domain of choice is Quantitative Finance, and it’s basically the application of mathematical and statistical apparatus for the analysis of the financial markets. Quant Finance is actually a marriage of three disciplines: finance, mathematics, and computing. It puts heavy demands on the person’s skills as it’s mainly a mathematical discipline where knowledge of technology is simply ‘assumed.’ However, there’s also a lot of programming involved.

I certainly don’t claim to be in any way an expert in the field, but I do run an online intro-level course on Quant Finance that helps students get acquainted with the subject while at the same time helping me get acquainted with some of the trickier aspects of the field that I come across. Of course, my participation in the field is not limited only to tuition.

Tell us about the tools used in Quant Finance. What kind of hardware, software and programming languages are being used?

Let’s start with hardware, first of all. As you can imagine, the financial world is one of the main consumers not just of business-grade equipment (that’s a given) but also all sorts of cutting-edge hardware. High-frequency trading firms will do just about anything to win the speed race, which implies using technologies like CUDA as well as custom hardware (e.g., FPGA-based feed handlers). Anything to get the calculations and data processing done faster.

And speaking of calculations, there’s lots of requirements there as well. A single-day market order snapshot, for example, can come in at over 8 GB, and if you need to process three months of them, this requires quite a bit of processing power, so in the quant world, Xeon-based desktop setups with 192+ GB RAM as well as PCI-based SSDs are not unheard of. Computer setups with lots of monitors are also very common – and not just for traders!

As far as software is concerned, there is a divide here between what’s used for analysis and what’s used for execution (i.e., the software that actually performs trades). A large proportion of analysis happens either in Excel or in computer algebra systems such as MATLAB. But when simulations get too big or too slow using these tools, people write those themselves, quite often using C++ and popular libraries such as QuantLib. We also see an interest in other programming languages, most notably F# (see, for example, the recent F# in Finance events), as well as Python (NumPy), which can also be used for numerics.

Incidentally, analysis of large volumes of data is quite often done across computer clusters rather than individual machines. This is particularly the case for Monte-Carlo simulations, where the same process is simulated over and over and having more realizations of the process to look at increases the statistical strength of the results. Personally, I conduct most simulations using a large cluster of CPUs as well as NVIDIA Tesla and Intel Xeon Phi cards. On the execution side, I also use GPUs plus some custom-built hardware that’s specifically designed to calculate certain models or parse certain data formats ‘in silicon.’

Have people in Quant Finance heard of JetBrains? Why should they care?

You have to keep in mind that an investment institution’s activities involve a lot more than math: there’s document management, compliance and a myriad of things that make an investment business function. A lot of software is either written in-house or subcontracted to third parties. This software can use a large array of languages, and we’ve got IDEs that cover the spectrum, plus tools for profiling, bug tracking, continuous integration, etc.

Of course, if we’re talking purely about Quant Finance, the #1 reason that financial institutions  should care, is that JetBrains is entering the C++ space, aiming to bring the convenience of our C# and Java-based tooling to all users of C++. For users of Visual Studio, we’ll have awesome C++ support in ReSharper, and by awesome I mean being able to flawlessly handle preprocessor definitions and template recursion/metaprogramming scenarios. And for all other users, we’ll have a standalone IDE that will bring similar benefits to all platforms.

Do you have a good Quant Finance joke to leave us with?

I really like this joke, which is a variation on the popular “engineers and accountants” joke.

“A group of quants and actuaries are all traveling to the same conference. The actuaries go by train and spend the entire trip cramped in a single bathroom to avoid buying tickets. The quants take the corporate jet.”

Thank you Dmitri for your time. We look forward to your JetBrains .NET Tools Evening in Prague.

We encourage you to have a look at Dmitri’s courses on Pluralsight: MATLAB Fundamentals and Parallel Computing with CUDA.

This entry was posted in Interviews and tagged , , . Bookmark the permalink.

6 Responses to Getting to Know Dmitri Nesteruk: Quant Finance and Developer Tools

  1. Pingback: F# Weekly #49, 2013 | Sergey Tihon's Blog

  2. Alexandre Verri says:

    Very interesting interview. I have the same passion by programming and I have started in the Quant Finance too. I have developed an automated trading system in Brazil. It is good to know about the cutting-edge technologies in Quant Finance.

  3. Dino Esposito says:

    Love quants :)

  4. Kirk says:

    When will we hear more about ReSharper for C++ (and extra bonus points if it works with CUDA!)

    • Robert Demmer says:

      Hello Kirk.

      There’s no additional information that we can share at the moment, however there’s still the form to subscribe to private EAP (http://www.jetbrains.com/resharper/features/cpp.html) with builds coming out once or twice a month.

    • Dmitri Nesteruk says:

      CUDA’s a tough one. We’re going to start by supporting the ‘canonical’ development platforms – MSVC on Windows, and Clang elsewhere. CUDA support is something that will come one the support for the underlying compilers has been ironed out.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>