Chapter 7. Dates and Fixed Income Securities

Very special thanks to Kenneth J. Adams, who coauthored this chapter.

Dates and date calculations might not seem like the most fascinating topic to discuss, but they are vitally important in quantitative finance, particularly in fixed income trading and analytics. To handle date calculations in the past, financial C++ programmers were left with two options: either write their own date classes and functions, or use a commercial or open source external library. This has changed with C++20. It includes a date class that is determined by the integer year, month, and day values. This class relies both on the already existing (since C++11) std::chrono foundation of durations, time points, and the system clock (i.e., chronological computations) as well as newer C++20 calendrical computations, which are based on the number of days relative to an epoch. These take into account the nonuniform number of days in each month.

We will start by covering how dates are represented and instantiated in C++20, primarily with the year_month_day class now included in the std::chrono namespace. Certain characteristics of a date are important in financial applications, such as whether a day falls on a weekday or weekend, at the end of the month, or during a leap year. The std::chrono namespace conveniently provides ways of determining these possible states of a date. You can also add years and months by using calendrical options in std::chrono, but adding ...

Get Learning Modern C++ for Finance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.