APLIED COMPUTATIO, QUANT METHODS
RELEVANT FOR QUANTITATIVE FINANCE
Basic notion of programming required
This
blog adopts a hands-on, laboratory-based approach: concepts are
developed through direct implementation and problem solving. And
practice with real data, implementing calculations and models. The
objective is to accelerate the practical application of C++ in
computational quantitative finance, emphasizing efficiency, numerical
rigor, and real-world modeling.
The content is organized as follows (click to be redirected):
- Setup and Configuration
- Language and Syntax (moderm C++, C++20)
- Object-Oriented Programming (OOP)
- Efective and Functional Programming
- Generic Programming (GP)
- Applications in Computational Finance
- .
- .
- .
- .
- .
- Data Strcutures and Algorithms
- Reference
Each session have being public in a separate session due to the Blogger content volume restriction.
Go to the main publication (click here).
1 - Fast Setup and Configuration
Software
Standard Environment
It’s most efficient for the staff if everyone uses the same environment:
- Compiling: gcc, g++
- Debugging: gdb, some use valgrind
- About IDEs for programing: If you prefer using a GUI—which is often beneficial—Visual Studio Code is a versatile option. You may also explore other alternatives if time permits. Regardless of the IDE, your code must run correctly and be properly tested across and in standard environments.
Windows
- Use MSYS2 is a collection of tools. Or the most frequent necessary packages are available in cygwin (gcc-core, gcc-g++, gdb).
- Cywing : a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
- Check your availability or version:
gcc --version
g++ --version
gdb --version
Linux
- In the case of linux the componenst are integrate in the build essential; and you will need gdb. If you use Visual Studio Code equally you can use the public intructions too.
sudo apt-get install build-essential #or equivalent.
sudo apt-get install build-essential gdb
Setup c++ standar to 20 (linux or windows)
- Change the c_cpp_properties.json file with ["cppStandard": "gnu++20",] or add [-std=c++20], in task.json (thes files will be generate after the first execution or configuration).
2 - C++ syntax
Don’t get lost in this session. Focus on the basic idea, the structure, and a few key terms (the ones shown in the examples). Then review some additional sample code and move directly to hands-on, coding is how you will truly learn.
Any basic C++ program structure generally will fallow [#include, main() and return 0]. In this way the key elements in C++ syntax are:
Library importation: # include-
Execution starts (main function) and group of statement (scope or blocks): intmain () { } - In the scope will be the:
- Variable declaration with = (using key words for the data types as int and dimension as long).
- With variables you will use references (&) and pointers (*)
- Output definition (cout <<
) and chaining (<<) - Return Statement (return 0;
)
- The required at end of statement
: ; - Comments in a single-lin (//) and multi-line (/* */)
- You will have to add or use namespace, arithmetic operators, auto, functions, class and identifiers.
I will recommend an overview of any C++ Style Guide as the Google of University of Pensilvania. But don't spend to much time or get lose on it now, we go to see it on session 4 that is focus on efective and functional programming.
Above I show a simple and complex samples. Start with the simple, change something in the code and execute (the best way to understand it quitkly) and then go to the more complex:
//simple
#include <iostream>
int main(){
std::cout << "Hello Quant Finance C++ World!, year 2026";
return 0;
}
//adding some elements and interation
#include <iostream>
#include <vector>
#include <string>
int main(){
int year = 2026;
int& ref = year;
int* ptr = &year;
const std::vector<std::string> message{
"Hello",
"Quant Finance",
"C++",
"World",
"!"
};
for (const auto& word : message){
std::cout << word << ' ';
}
std::cout << '\n';
std::cout << "year: " << year << '\n';
std::cout << "ref (alias of year): " << ref << '\n';
std::cout << "ptr (address of year): " << ptr << '\n';
std::cout << "*ptr (value at that address): " << *ptr << '\n';
return 0;
}
[I STEEL WORKING ON THE COMPLEX ILUSTRATIVE AND UNDERSTABLE SAMPLE]
Library (Header or Header files .h)
The C++ Standard Library is included via header files or at the beginning of a program. See above a header ilustration as in the previous code samples:
# include <iostream> // for standard I/O
# include <vector> // for std :: vector
// consult in cppreference what are thes two for:
#include <string>
#include <ranges>
# include <map> // for std :: map
# include <set> // for std :: set
# include <algorithm> // for std :: sort , std :: accumulate
# include <functional> // for std :: function
# include <memory> // for smart pointers
# include <iterator> // for iterators
Data types and variables
Here I go to be focuses in the most relevant and regularly use in quantitative finance (base on consult reference). You can view in deep the data types in
cppreference documentation.
The recomended for quant finance data type:
But there are to many options and convination posibiliities, in priority order in the contex of finance you can see:
/* FUNDAMENTAL (Built-in) data types */
| Category | Type | Size (64-bit) | Precision / Range | Description | Finance Usage |
| --------- | -------------- | ------------- | ------------------------------------------- | -------------------- | ------------------------ |
| Boolean | `bool` | 1 byte | 1 bit (true/false) | true / false | Flags, model conditions |
| Character | `char` | 1 byte | −128 to 127 (signed) | 0 to 255 (unsigned) | Single character | Rare |
| Integer | `short` | 2 bytes | −32,768 to 32,767 | Small integer | Rare |
| Integer | `int` | 4 bytes | −2.1×10⁹ to 2.1×10⁹ | Standard integer | Counters |
| Integer | `long` | 8 bytes* | −9.2×10¹⁸ to 9.2×10¹⁸ | Larger integer | System dependent |
| Integer | `long long` | 8 bytes | −9.2×10¹⁸ to 9.2×10¹⁸ | Very large integer | Timestamps |
| Unsigned | `unsigned int` | 4 bytes | 0 to 4.29×10⁹ | Non-negative integer | IDs |
| Floating | `float` | 4 bytes | ~7 decimal digits | Single precision | Avoid in pricing |
| Floating | `double` | 8 bytes | ~15–16 decimal digits | Double precision | **Standard for pricing** |
| Floating | `long double` | 8–16 bytes | ~18–21 decimal digits (platform dependent) | Extended precision | *Advanced models* |
| Void | `void` | — | — | No value | Function return type |
And there are son type utilities in moderm c++ that will help:
| Feature | Description | Finance Application |
| ------------------ | -------------------------- | ----------------------- |
| `auto` | Automatic type deduction | Clean code |
| `decltype` | Extract type of expression | Template programming |
| `using` | Type alias | Cleaner model code |
| `std::optional<T>` | Nullable type | Missing data |
| `std::variant` | Type-safe union | Flexible pricing engine |
The following is a list of key reserved words in C++.

Now we can see this in an applied example:
[pendiente]
Operators and expressions
Control flow and loops
Arrays and data aggregates