A Qt-based application for managing financial instruments with real-time attribute editing and dependency tracking. Supports options, swaps, and other derivative products.
- 📊 Dual-view interface:
- Product list view (name + price)
- Detailed attribute editor (name, value, type, default)
- ✏️ In-place editing of financial product attributes
- 🔄 Automatic dependency resolution (e.g., updating price/quantity affects total)
- 🚦 Validation and type conversion system
- ⏱️ Timestamped status messages with success/failure feedback
- 📈 Supports multiple product types:
- Options (with strike price, expiration, volatility)
- Swaps (with fixed rate, notional value)
- Qt6 Core & Widgets
- C++20 compatible compiler
- CMake 3.16+
Ubuntu:
sudo apt install qt6-base-dev qt6-tools-dev-tools cmake build-essential-
Main Window
- Displays list of financial products
- Double-click to open detail view
-
Detail Window
- Editable fields (Value column only)
- Non-editable "Total" field (auto-calculated)
- Type validation with error feedback
- Dependency-aware updates
cpp/
├── CMakeLists.txt
├── FinancialProductModel.cpp # Attribute table model
├── FinancialProductModel.h
├── ProductListModel.cpp # Product list model
├── ProductListModel.h
├── FinancialProduct.cpp # Base product class
├── FinancialProduct.h
├── Option.cpp # Option derivatives
├── Option.h
├── Swap.cpp # Swap contracts
├── Swap.h
└── main.cpp # Application entry point
- Dynamic Attribute System: Uses Qt meta-object system (Q_PROPERTY) for property management
- Type Safety: QMetaType conversions with fallback to defaults
- Efficient Updates: Model resetting with beginResetModel/endResetModel
- Case-Insensitive Checks: For "Total" field identification
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/path/to/qt6/lib/cmake ..
make
./FinancialProductsSee py/ directory for PyQt6 version with:
- Similar functionality in Python 3.10+
- Dataclass-based product definitions
- Signal-based validation system
pip install -r requirements.txt
python py/main.py
MIT License - See LICENSE for details