summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-06-18 13:42:55 -0700
committerGitHub <noreply@github.com>2024-06-18 20:42:55 +0000
commit1a990ba7f06e85aac6bdd039a8522a5773bb28a0 (patch)
tree668f3a4f39854d5deb0168bece94781c7b459084
parentd465f22fbd6f0c74023fe47d85dfe8dfbb687f63 (diff)
[Enhancement] Fixed Income Enhancements (#6490)
* improve effr and move sofr to fixedincome.rate * federal_reserve default start date * fred cassette * commercial paper * cp series map * update sofr and add federal_reserve to endpoint * examples * update ameribor * maturity_dict * add overnight bank funding rate * add federal reserve to obfr * pop footnoteId * central bank holdings descriptions * move moody's bond indices to the bond_indices endpoint * add it to the INDEX_CHOICES * improve hqm * handle none * add treasury minus fed funds to yield curve * static assets * estr * description * missed file in commit * second return statement
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/ameribor.py (renamed from openbb_platform/core/openbb_core/provider/standard_models/ameribor_rates.py)17
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/commercial_paper.py (renamed from openbb_platform/core/openbb_core/provider/standard_models/cp.py)35
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/estr_rates.py33
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/euro_short_term_rate.py67
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/fed_rates.py33
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/federal_funds_rate.py75
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/high_quality_market.py (renamed from openbb_platform/core/openbb_core/provider/standard_models/hqm.py)22
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/overnight_bank_funding_rate.py65
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/sofr.py65
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/sofr_rates.py33
-rw-r--r--openbb_platform/extensions/fixedincome/integration/test_fixedincome_api.py102
-rw-r--r--openbb_platform/extensions/fixedincome/integration/test_fixedincome_python.py98
-rw-r--r--openbb_platform/extensions/fixedincome/openbb_fixedincome/corporate/corporate_router.py9
-rw-r--r--openbb_platform/extensions/fixedincome/openbb_fixedincome/fixedincome_router.py8
-rw-r--r--openbb_platform/extensions/fixedincome/openbb_fixedincome/rate/rate_router.py63
-rw-r--r--openbb_platform/openbb/assets/reference.json1147
-rw-r--r--openbb_platform/openbb/package/economy.py26
-rw-r--r--openbb_platform/openbb/package/fixedincome.py89
-rw-r--r--openbb_platform/openbb/package/fixedincome_corporate.py117
-rw-r--r--openbb_platform/openbb/package/fixedincome_government.py2
-rw-r--r--openbb_platform/openbb/package/fixedincome_rate.py473
-rw-r--r--openbb_platform/providers/federal_reserve/openbb_federal_reserve/__init__.py12
-rw-r--r--openbb_platform/providers/federal_reserve/openbb_federal_reserve/models/central_bank_holdings.py91
-rw-r--r--openbb_platform/providers/federal_reserve/openbb_federal_reserve/models/fed_rates.py83
-rw-r--r--openbb_platform/providers/federal_reserve/openbb_federal_reserve/models/federal_funds_rate.py139
-rw-r--r--openbb_platform/providers/federal_reserve/openbb_federal_reserve/models/overnight_bank_funding_rate.py120
-rw-r--r--openbb_platform/providers/federal_reserve/openbb_federal_reserve/models/sofr.py107
-rw-r--r--openbb_platform/providers/federal_reserve/tests/record/http/test_federal_reserve_fetchers/test_federal_reserve_fed_fetcher.yaml53
-rw-r--r--openbb_platform/providers/federal_reserve/tests/record/http/test_federal_reserve_fetchers/test_federal_reserve_federal_funds_rate_fetcher.yaml92
-rw-r--r--openbb_platform/providers/federal_reserve/tests/record/http/test_federal_reserve_fetchers/test_federal_reserve_overnight_bank_funding_rate_fetcher.yaml63
-rw-r--r--openbb_platform/providers/federal_reserve/tests/record/http/test_federal_reserve_fetchers/test_federal_reserve_sofr_fetcher.yaml64
-rw-r--r--openbb_platform/providers/federal_reserve/tests/test_federal_reserve_fetchers.py36
-rw-r--r--openbb_platform/providers/fred/openbb_fred/__init__.py26
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/ameribor.py227
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/ameribor_rates.py92
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/bond_indices.py16
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/commercial_paper.py372
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/cp.py87
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/estr_rates.py81
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/euro_short_term_rate.py194
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/fed_rates.py80
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/federal_funds_rate.py203
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/high_quality_market.py143
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/hqm.py110
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/overnight_bank_funding_rate.py196
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/sofr.py216
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/sofr_rates.py71
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/yield_curve.py17
-rw-r--r--openbb_platform/providers/fred/openbb_fred/utils/commercial_paper.csv241
-rw-r--r--openbb_platform/providers/fred/openbb_fred/utils/fred_helpers.py7
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_ameribor_fetcher.yaml130
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_commercial_paper_fetcher.yaml109
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_euro_short_term_rate_fetcher.yaml785
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_federal_funds_rate_fetcher.yaml146
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_high_quality_market_corporate_bond_fetcher.yaml611
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_overnight_bank_funding_rate_fetcher.yaml684
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fred_sofr_fetcher.yaml1030
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fredameribor_fetcher.yaml538
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fredestr_fetcher.yaml179
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fredfed_fetcher.yaml597
-rw-r--r--openbb_platform/providers/fred/tests/record/http/test_fred_fetchers/test_fredsofr_fetcher.yaml212
-rw-r--r--openbb_platform/providers/fred/tests/test_fred_fetchers.py84
62 files changed, 7500 insertions, 3423 deletions
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/ameribor_rates.py b/openbb_platform/core/openbb_core/provider/standard_models/ameribor.py
index 4dad428a6a1..2edf6f66b67 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/ameribor_rates.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/ameribor.py
@@ -13,7 +13,7 @@ from openbb_core.provider.utils.descriptions import (
)
-class AMERIBORQueryParams(QueryParams):
+class AmeriborQueryParams(QueryParams):
"""AMERIBOR Query."""
start_date: Optional[dateType] = Field(
@@ -26,8 +26,19 @@ class AMERIBORQueryParams(QueryParams):
)
-class AMERIBORData(Data):
+class AmeriborData(Data):
"""AMERIBOR Data."""
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
- rate: Optional[float] = Field(description="AMERIBOR rate.")
+ symbol: Optional[str] = Field(
+ default=None, description=DATA_DESCRIPTIONS.get("symbol", "")
+ )
+ maturity: str = Field(description="Maturity length of the item.")
+ rate: float = Field(
+ description="Interest rate.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
+ )
+ title: Optional[str] = Field(
+ default=None,
+ description="Title of the series.",
+ )
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/cp.py b/openbb_platform/core/openbb_core/provider/standard_models/commercial_paper.py
index 8fbc9888f4b..2f4fc5cdb5c 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/cp.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/commercial_paper.py
@@ -3,9 +3,9 @@
from datetime import (
date as dateType,
)
-from typing import Literal, Optional
+from typing import Optional
-from pydantic import Field, field_validator
+from pydantic import Field
from openbb_core.provider.abstract.data import Data
from openbb_core.provider.abstract.query_params import QueryParams
@@ -26,28 +26,21 @@ class CommercialPaperParams(QueryParams):
default=None,
description=QUERY_DESCRIPTIONS.get("end_date", ""),
)
- maturity: Literal["overnight", "7d", "15d", "30d", "60d", "90d"] = Field(
- default="30d",
- description="The maturity.",
- )
- category: Literal["asset_backed", "financial", "nonfinancial"] = Field(
- default="financial",
- description="The category.",
- )
- grade: Literal["aa", "a2_p2"] = Field(
- default="aa",
- description="The grade.",
- )
-
- @field_validator("maturity", "category", "grade", mode="before", check_fields=False)
- @classmethod
- def to_lower(cls, v: Optional[str]) -> Optional[str]:
- """Convert field to lowercase."""
- return v.lower() if v else v
class CommercialPaperData(Data):
"""Commercial Paper Data."""
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
- rate: Optional[float] = Field(description="Commercial Paper Rate.")
+ symbol: Optional[str] = Field(
+ default=None, description=DATA_DESCRIPTIONS.get("symbol", "")
+ )
+ maturity: str = Field(description="Maturity length of the item.")
+ rate: float = Field(
+ description="Interest rate.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
+ )
+ title: Optional[str] = Field(
+ default=None,
+ description="Title of the series.",
+ )
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/estr_rates.py b/openbb_platform/core/openbb_core/provider/standard_models/estr_rates.py
deleted file mode 100644
index 0745183360c..00000000000
--- a/openbb_platform/core/openbb_core/provider/standard_models/estr_rates.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""ESTR Standard Model."""
-
-from datetime import date as dateType
-from typing import Optional
-
-from pydantic import Field
-
-from openbb_core.provider.abstract.data import Data
-from openbb_core.provider.abstract.query_params import QueryParams
-from openbb_core.provider.utils.descriptions import (
- DATA_DESCRIPTIONS,
- QUERY_DESCRIPTIONS,
-)
-
-
-class ESTRQueryParams(QueryParams):
- """ESTR Query."""
-
- start_date: Optional[dateType] = Field(
- default=None,
- description=QUERY_DESCRIPTIONS.get("start_date", ""),
- )
- end_date: Optional[dateType] = Field(
- default=None,
- description=QUERY_DESCRIPTIONS.get("end_date", ""),
- )
-
-
-class ESTRData(Data):
- """ESTR Data."""
-
- date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
- rate: Optional[float] = Field(description="ESTR rate.")
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/euro_short_term_rate.py b/openbb_platform/core/openbb_core/provider/standard_models/euro_short_term_rate.py
new file mode 100644
index 00000000000..dfe1959d37a
--- /dev/null
+++ b/openbb_platform/core/openbb_core/provider/standard_models/euro_short_term_rate.py
@@ -0,0 +1,67 @@
+"""Euro Short Term Rate Standard Model."""
+
+from datetime import date as dateType
+from typing import Optional
+
+from pydantic import Field
+
+from openbb_core.provider.abstract.data import Data
+from openbb_core.provider.abstract.query_params import QueryParams
+from openbb_core.provider.utils.descriptions import (
+ DATA_DESCRIPTIONS,
+ QUERY_DESCRIPTIONS,
+)
+
+
+class EuroShortTermRateQueryParams(QueryParams):
+ """Euro Short Term Rate Query."""
+
+ start_date: Optional[dateType] = Field(
+ default=None,
+ description=QUERY_DESCRIPTIONS.get("start_date", ""),
+ )
+ end_date: Optional[dateType] = Field(
+ default=None,
+ description=QUERY_DESCRIPTIONS.get("end_date", ""),
+ )
+
+
+class EuroShortTermRateData(Data):
+ """Euro Short Term Rate Data."""
+
+ date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
+ rate: float = Field(
+ description="Volume-weighted trimmed mean rate.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
+ )
+ percentile_25: Optional[float] = Field(
+ default=None,
+ description="Rate at 25th percentile of volume.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
+ )
+ percentile_75: Optional[float] = Field(
+ default=None,
+ description="Rate at 75th percentile of volume.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
+ )
+ volume: Optional[float] = Field(
+ default=None,
+ description=DATA_DESCRIPTIONS.get("volume", "")+ " (Millions of €EUR).",
+ json_schema_extra={
+ "x-unit_measurement": "currency",
+ "x-frontend_multiply": 1e6,
+ },
+ )
+ transactions: Optional[int] = Field(
+ default=None,
+ description="Number of transactions.",
+ )
+ number_of_banks: Optional[int] = Field(
+ default=None,
+ description="Number of active banks.",
+ )
+ large_bank_share_of_volume: Optional[float] = Field(
+ default=None,
+ description="The percent of volume attributable to the 5 largest active banks.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
+ )
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/fed_rates.py b/openbb_platform/core/openbb_core