Introduction to Financial Markets – Reading Guide

Now and again, people ask me where to start if they would like to acquire knowledge about financial markets. So I have put together a little initial reading list.


Larry Harris (2012), Trading and Exchanges: Microstructure for Practitioners

Investment & Advisory

Glen Arnold (2014), FT Guide to Banking

Frank J. Fabozzi and Harry M. Markowitz (2011), The Theory and Practice of Investment Management: Asset Allocation, Valuation, Portfolio Construction, and Strategies

Giuliano Iannotta (2014), Investment Banking: A Guide to Underwriting and Advisory Services Paperback


Sébastien Billot (2020), Financial Crime Compliance: Identify and Mitigate Financial Crime Risks

Wealth Management

Charlotte B. Beyer (2014), Wealth Management Unwrapped

CoViD-19: Some Surprises

In this post, I’d like to point out a few observations that have surprised me during the current pandemic.

Country behaviors. A pandemic may require responses that are more authoritarian than a society’s normal operations, and this in itself is a controversial topic. But if we accept it for the moment then what could be observed is two processes were at play in parallel in our universe: the official authorities e.g. the European Union, the British government the US Federal government at the top made announcements but it was lower-level authorities that were actually responsible for much of the day-to-day rules, and the inconsistent messaging kept confusing people. Furthermore, while there were a few acts of charity (like Romanian medical staff flying to Italy to help, or German hospitals taking in patients from France and Italy), overall people were quite country-focused. At the same time, each country’s population (and media) was keenly looking at others’ performance as a way to “benchmark” (for lack of a better term) one’s own government’s performance. This had become possible due to the Internet as a global communication enabler. Unlike a war, a pandemic attacks all of humanity in a globally connected world, so one would have hoped countries to work together to speed up the extinction of the disease.

Organizational behavior. Many companies finally switched to online work. This should have happened 15-20 years ago, but better late than never. A group of people that kept business with business flights to visit colleagues in the very same company that are just located on another continent to me has always been the biggest waste of money, at the same time creating huge environmental damage. It is refreshing how unproblematic this shift was, how quickly everything could be implemented (given that there was zero preparation), and how effective things have been running, at least in businesses that are suitable for online work. The losers were schools and government administrations: those nations talking about “one laptop per child” in developing countries were often unable to organize their own pupils. In London, the first architecture office with 50 staff has reportedly canceled their office lease, not because of financial struggles from the pandemic but responding to the insight that an office is not needed any longer (given the cost of London-based office space, that’s no surprise). I would not be surprised if in the future more companies were “mostly virtual”, with occasional meetings in physical spaces rented on demand by the hour or day to stay connected on a personal level. Companies will soon turn their attention towards recovery, and leave the pandemic memory behind. But there have been 60 pandemics from 2000-2020, so one would expect some kind of institutional learning to happen in advanced organizations (CMM level 5?).

People’s behavior. People’s personal believes and the degrees of adherence to official guidance (or mandatory rules) is interesting to observe. Generally, as is perhaps expected, earthlings are ill-equipped cognitively to deal with abstract concepts and tiny viruses invisible to the eye. So what happened is people started to take the pandemic more and more seriously as soon as someone in their personal environment was affected, but no sooner. Actual behavior often differed from projected behavior, as evidenced by various senior scientists, advisors, or ministers that were caught and reported in the media to be in violation of rules they themselves promoted. Different ethical value systems also shone through, e.g. whether trading lives against business losses was seriously being considered.

Scientist’s responses. Scientists disagree with each other, and that’s fine – at least when they among each other. What is not fine is to present only one view when communicating with external (non-scientist) audiences, as this creates a misconception of consensus. On the side of public health policies, I am stunned that no-one has forcibly argued for more alignment and standardization in the counting of the infected and dead across countries. If enough information is collected for each case, governments could easily tally up counts in more than one way, which renders invalid the argument that a particular standard would not meet a country’s internal requirements or not appropriately address its needs. Even more stunning is that no strong voices have been speaking out in favor of recurring, national/regional random sampling for CoViD-19 testing with the aim of getting an unbiased view of the pandemic’s spread. Instead, debates based on data-sets known to be heavily biased were fought, and attacked as invalid, but without attempting to implement proposals to fix it.

The source of the pandemic itself. The SARS-CoViD-2 virus and the pandemic it caused (CoViD-19) are remarkable in that the virus is not very deadly, at least in relative terms when compared e.g. to Ebola, yet it caused havoc at unanticipated scale. It turns out that one of the “success” factors of the little (30 kB of information) coronavirus is exactly that it does not kill people quickly, but lets them pass on the disease to many other individuals before symptoms get very strong.

SARS-Covid-2: A Crude Back-of-the-Envelope Estimation of Deaths

Disclaimer: I am not a medic, and not a pandemic modeling researcher. But I am a computer science researcher that has made models of various kinds since the 1990s, many published and sold, and I do have a background as a former Red Cross paramedic (yes, I know how to convert a hospital in case of an Ebola outbreak and such, and I have intubated/resuscitated folks).

This post is a response to various other models that I’ve seen and found too complicated. A complex model while we do not know much instils a lack of credibility in me.

Here is a very crude (back-of-the-envelope) calculation of the overall estimated deaths per country for two countries that I know a bit better and have been following online and offline since December.

The numbers are covering the full Corona pandemic period (not just up to a certain date). The forecast:

  • United Kingdom: between 66,500 and 798,000 deaths
  • Germany: between 8,000 and 96,000 deaths

This “model” is based on the following assumptions:

  • We don’t really know a lot, so we need wide confidence margins. Don’t believe anyone who gives you one number.
  • Because of our lack of knowledge about the disease, as tempting as it may be to run a simulation, I don’t feel comfortable with that approach, as it suggests “more science” than we have.
  • The % of population eventually infected is: 10%-60% (taken from expert statements)
  • The % of exitus letalis outcomes (% infected eventually dying from or in connection with SARS-Covid-2) is: 10%-20% (my own observation from JHU: 9%-22%, rounded to 10% best case and 20% worst case, thankfully at the time of writing we’re now down from 22% to 17%)
  • Country populations:
    Germany: 80 million
    UK: 66.5 million
  • Response effectiveness OoM: Germany: 10E-2; UK: 10E-1, the order of magnitude difference to a “do nothing” approach (which would treated as a 10E-0 multiplier) based on my observations.
  • Note there are absolutely no assumptions made about the actual duration by design – the above is a pure “part of the pie” computation.
  • Existing knowledge (model should be consistent with these):
    UK: at least 30k dead as of May 8
    Germany: at least 8k dead as of May 8

I will compare these numbers against body counts on 2021-05-05. If the model is good, the total numbers of deaths (hospital and otherwise) for the two countries will lie in the two interval brackets provided.

Potential future work includes:

  • apply to other countries;
  • refine the “response effectiveness multiplier” based on a set of critical policy elements being present or not in a country;
  • provide (separate) forecasts for the duration of the pandemic and the financial impact.

Looking into Rust

Rust is a programming language that was started around 2014 by a Mozilla employee as a private project; its inventor managed to convince the Mozilla foundation to make it an official project, and in recent years, Rust has consistently ranked top as the language most liked by developers. It competes with Go in their joint attempt to de-thrown C/C++ as the standard language for highly performant systems programming.

The reason I got interested in Rust is because it uses strong static types and type inference. Its notation inherits some elements from the functional language ML, which is close to the mathematical notation for functions, and that in turn makes the code easy to read, e.g.

fn calculate_length(s : String) -> (String, u64) {
//.. return a tuple of a string and an unsigned 64-bit integer value

Ownership and Explicit Ownership Transfer

Unlike Java, Python, LISP or Go, Rust doesn’t use garbage collection. Unlike C, it also does not use explicit malloc() / free() calls, which have been difficult for developers to keep track of an a source of bugs, crashes and security vulnerabilities. So how does Rust do it?

Basically, a (non-atomic) object that leaves the scope (function, block) gets released, unless an explicit ownership transfer is demanded. References are excluded from needing ownership to reference an object, as are slices, which are contiguous ranges of container elements:

let s = String::from("hello world");
let hello = &s[0..5];
let world = &s[6..11];

For more detail, consult:
Rust’s compiler can also figure out at compile time when there is a chance of a dangling reference. In the words of the language manual:

“The Rust language gives you control over your memory usage in the same way as other systems programming languages, but having the owner of data automatically clean up that data when the owner goes out of scope means you don’t have to write and debug extra code to get this control.”

First experiments with Rust

Downloading and trying the rustc compiler via the cargo build system command turned out to be easy. Libraries specified as dependencies (“crates”) automatically get pulled from the Rust repository, a far cry from the effort it takes to install/build basic C++ libraries that are not header-only. The Rust compiler’s
error messages are readable, they localize errors well (not hard to do better than GNU g++ on that front) and the use of colour coding distinguishes source code fragments from the error messages proper in human-friendly ways.

The Crux

The litmus tests for a new programming language are stability, community and libraries. Without a stable syntax, serious developers quickly shy away from
investing their time and making a production bet seems to risky. Without a thriving community around a language, the continuity of development tool development, library development and general problem solving are in jeopardy (you want to be coding in something so that you can find the solution to your problem on StackExchange, really). An without available libaries that provide GUI frameworks, logging tools, regex engines, database abstraction layers, CSV readers, vizualization toolkits and other daily needs (some general, some depending on your area) your productivity will be reduced by the distraction of needing “just one day more, I need to quickly implement a hashtable library”.

I may return with a report of my Rust story after gaining a bit more experience, and after finishing reading the manual.