A simple curve bootstraping tool based on ORE/QuantLib
Project description
CurveEngine
A simple curve bootstrapping tool. It uses ORE as backend and parses configuration files (see example below) and transform them into QL/ORE objects.
Documentation
Documentation is available at https://jmelo11.github.io/curveenginedocs/
Build
For building the project, you need to have cmake installed. Then, run the following commands:
python -m build
Example
For a more detail example, visit the example folder.
{
"refDate": "2023-02-14",
"curves": [
{
"curveName": "SOFR",
"curveConfig": {
"curveType": "Piecewise",
"dayCounter": "Actual360",
"enableExtrapolation": true,
"rateHelpers": [
{
"helperType": "Deposit",
"helperConfig": {
"dayCounter": "Actual360",
"tenor": "1D",
"calendar": "NullCalendar",
"settlementDays": 0,
"endOfMonth": false,
"convention": "Unadjusted"
},
"marketConfig": {
"rate": {
"value": 0.0455,
"ticker": "SOFRRATE CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "1W",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.045555000000000005,
"ticker": "USOSFR1Z CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "2W",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.045568,
"ticker": "USOSFR2Z CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "1M",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.04564,
"ticker": "USOSFRA CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "3M",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.047723,
"ticker": "USOSFRC CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "6M",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.050135,
"ticker": "USOSFRF CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "12M",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.051856,
"ticker": "USOSFR1 CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "3Y",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.042443,
"ticker": "USOSFR3 CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "5Y",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.037866,
"ticker": "USOSFR5 CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "7Y",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.035910000000000004,
"ticker": "USOSFR7 CURNCY"
}
}
},
{
"helperType": "OIS",
"helperConfig": {
"tenor": "10Y",
"dayCounter": "Actual360",
"calendar": "NullCalendar",
"convention": "Following",
"endOfMonth": true,
"frequency": "Annual",
"settlementDays": 2,
"paymentLag": 2,
"telescopicValueDates": true,
"index": "SOFR",
"fixedLegFrequency": "Semiannual",
"fwdStart": "0D"
},
"marketConfig": {
"rate": {
"value": 0.03464,
"ticker": "USOSFR10 CURNCY"
}
}
}
]
},
"curveIndex": {
"indexType": "OvernightIndex",
"tenor": "1D",
"dayCounter": "Actual360",
"currency": "USD",
"fixingDays": 0,
"calendar": "NullCalendar",
"endOfMonth": false,
"convention": "Unadjusted"
}
}
]
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file curveengine-1.1.7.tar.gz.
File metadata
- Download URL: curveengine-1.1.7.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7bed43b485a4e613e26a47ded930340dc67a8c3d9539183b7083ca1ed7dc278
|
|
| MD5 |
24b6666f899c8d3dacc8db30575555ed
|
|
| BLAKE2b-256 |
d831e6def07c6a75c0a66e7c3b6a817cb5f80505bcb696c6bd89eaf4b82819ec
|
File details
Details for the file curveengine-1.1.7-py3-none-any.whl.
File metadata
- Download URL: curveengine-1.1.7-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76973eed1d4943cf9b81f8b3bb053dca20da26db1936e832b0d354c4bc87dd26
|
|
| MD5 |
47cd83b8caa01bcd22773f877ae13012
|
|
| BLAKE2b-256 |
e898f387a996b8bff46ae9b4b5253c2eb13427a6b4581d08f237cb78875521eb
|