Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement] Fixed Income Enhancements #6490

Merged
merged 29 commits into from
Jun 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
bef7003
improve effr and move sofr to fixedincome.rate
deeleeramone Jun 6, 2024
25ef9e8
federal_reserve default start date
deeleeramone Jun 6, 2024
7ef0dee
fred cassette
deeleeramone Jun 6, 2024
692ffc3
commercial paper
deeleeramone Jun 7, 2024
dc8aa38
cp series map
deeleeramone Jun 7, 2024
d558b79
merge branch develop
deeleeramone Jun 7, 2024
3ed1f59
update sofr and add federal_reserve to endpoint
deeleeramone Jun 8, 2024
ebd07af
examples
deeleeramone Jun 8, 2024
b18f544
update ameribor
deeleeramone Jun 10, 2024
81e6ed7
maturity_dict
deeleeramone Jun 10, 2024
8fca1ba
add overnight bank funding rate
deeleeramone Jun 10, 2024
a335fe2
add federal reserve to obfr
deeleeramone Jun 11, 2024
7587bbf
pop footnoteId
deeleeramone Jun 11, 2024
da05476
central bank holdings descriptions
deeleeramone Jun 11, 2024
aab066b
move moody's bond indices to the bond_indices endpoint
deeleeramone Jun 11, 2024
8725c19
add it to the INDEX_CHOICES
deeleeramone Jun 11, 2024
2bf8f68
improve hqm
deeleeramone Jun 11, 2024
d202376
handle none
deeleeramone Jun 11, 2024
4101af7
add treasury minus fed funds to yield curve
deeleeramone Jun 11, 2024
ee2738e
static assets
deeleeramone Jun 11, 2024
3c392c8
estr
deeleeramone Jun 12, 2024
a60bde2
description
deeleeramone Jun 12, 2024
a4a6c24
Merge branch 'develop' of https://github.com/OpenBB-finance/OpenBBTer…
deeleeramone Jun 12, 2024
0a55413
missed file in commit
deeleeramone Jun 12, 2024
dca19db
Merge branch 'develop' into feature/effr
deeleeramone Jun 13, 2024
b990c2a
Merge branch 'develop' into feature/effr
deeleeramone Jun 14, 2024
7e92f3d
merge branch develop
deeleeramone Jun 17, 2024
31331e1
merge branch develop
deeleeramone Jun 18, 2024
7c4ac6b
second return statement
deeleeramone Jun 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
)


class AMERIBORQueryParams(QueryParams):
class AmeriborQueryParams(QueryParams):
"""AMERIBOR Query."""

start_date: Optional[dateType] = Field(
Expand All @@ -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.",
)
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.",
)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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},
)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""Federal Funds 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 FederalFundsRateQueryParams(QueryParams):
"""Federal Funds 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 FederalFundsRateData(Data):
"""Federal Funds Rate Data."""

date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
rate: float = Field(
description="Effective federal funds rate.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
target_range_upper: Optional[float] = Field(
default=None,
description="Upper bound of the target range.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
target_range_lower: Optional[float] = Field(
default=None,
description="Lower bound of the target range.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
percentile_1: Optional[float] = Field(
default=None,
description="1st percentile of the distribution.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
percentile_25: Optional[float] = Field(
default=None,
description="25th percentile of the distribution.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
percentile_75: Optional[float] = Field(
default=None,
description="75th percentile of the distribution.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
percentile_99: Optional[float] = Field(
default=None,
description="99th percentile of the distribution.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
volume: Optional[float] = Field(
default=None,
description=DATA_DESCRIPTIONS.get("volume", "")
+ "The notional volume of transactions (Billions of $).",
json_schema_extra={
"x-unit_measurement": "currency",
"x-frontend_multiply": 1e9,
},
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from datetime import (
date as dateType,
)
from typing import Literal, Optional
from typing import Optional, Union

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
Expand All @@ -18,26 +18,18 @@
class HighQualityMarketCorporateBondQueryParams(QueryParams):
"""High Quality Market Corporate Bond Query."""

date: Optional[dateType] = Field(
date: Optional[Union[dateType, str]] = Field(
default=None,
description=QUERY_DESCRIPTIONS.get("date", ""),
)
yield_curve: Literal["spot", "par"] = Field(
default="spot",
description="The yield curve type.",
)

@field_validator("yield_curve", 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 HighQualityMarketCorporateBondData(Data):
"""High Quality Market Corporate Bond Data."""

date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
rate: Optional[float] = Field(description="HighQualityMarketCorporateBond Rate.")
rate: float = Field(
description="Interest rate.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
maturity: str = Field(description="Maturity.")
yield_curve: Literal["spot", "par"] = Field(description="The yield curve type.")
Loading
Loading