mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-02 07:23:25 +00:00
refactored TreasuryRates for fixedincome.treasury
This commit is contained in:
@@ -1,49 +1,51 @@
|
||||
"""FMP Treasury Rates fetcher."""
|
||||
|
||||
|
||||
from datetime import date as dateType
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.fetcher import Fetcher
|
||||
from openbb_provider.helpers import get_querystring
|
||||
from openbb_provider.models.treasury_rates import (
|
||||
TreasuryRatesData,
|
||||
TreasuryRatesQueryParams,
|
||||
)
|
||||
from pydantic import Field
|
||||
|
||||
from openbb_fmp.utils.helpers import get_data_many
|
||||
from openbb_fmp.utils.helpers import get_querystring, get_data_many
|
||||
|
||||
from pydantic import validator
|
||||
|
||||
|
||||
class FMPTreasuryRatesQueryParams(TreasuryRatesQueryParams):
|
||||
"""FMP Stock News query.
|
||||
"""FMP Stock News Query.
|
||||
|
||||
Source: https://site.financialmodelingprep.com/developer/docs/treasury-rates-api/
|
||||
|
||||
Parameter
|
||||
---------
|
||||
start_date : str
|
||||
The start date of the data.
|
||||
end_date : str
|
||||
The end date of the data. Default is today.
|
||||
Maximum time interval can be 3 months.
|
||||
"""
|
||||
|
||||
|
||||
class FMPTreasuryRatesData(Data):
|
||||
date: dateType
|
||||
month1: float = Field(alias="month_1")
|
||||
month2: float = Field(alias="month_2")
|
||||
month3: float = Field(alias="month_3")
|
||||
month6: float = Field(alias="month_6")
|
||||
year1: float = Field(alias="year_1")
|
||||
year2: float = Field(alias="year_2")
|
||||
year3: float = Field(alias="year_3")
|
||||
year5: float = Field(alias="year_5")
|
||||
year7: float = Field(alias="year_7")
|
||||
year10: float = Field(alias="year_10")
|
||||
year20: float = Field(alias="year_20")
|
||||
year30: float = Field(alias="year_30")
|
||||
class FMPTreasuryRatesData(TreasuryRatesData):
|
||||
"""FMP Treasury Rates Data."""
|
||||
|
||||
class Config:
|
||||
fields = {
|
||||
"month_1": "month1",
|
||||
"month_2": "month2",
|
||||
"month_3": "month3",
|
||||
"month_6": "month6",
|
||||
"year_1": "year1",
|
||||
"year_2": "year2",
|
||||
"year_3": "year3",
|
||||
"year_5": "year5",
|
||||
"year_7": "year7",
|
||||
"year_10": "year10",
|
||||
"year_20": "year20",
|
||||
"year_30": "year30",
|
||||
}
|
||||
|
||||
@validator("date", pre=True, check_fields=False)
|
||||
def date_validate(cls, v): # pylint: disable=E0213
|
||||
return datetime.strptime(v, "%Y-%m-%d")
|
||||
|
||||
|
||||
class FMPTreasuryRatesFetcher(
|
||||
@@ -64,10 +66,15 @@ class FMPTreasuryRatesFetcher(
|
||||
) -> List[FMPTreasuryRatesData]:
|
||||
api_key = credentials.get("fmp_api_key") if credentials else ""
|
||||
|
||||
query.start_date = (datetime.now() - timedelta(91)).date()
|
||||
query.end_date = (datetime.now() - timedelta(1)).date()
|
||||
|
||||
base_url = "https://financialmodelingprep.com/api/v4/"
|
||||
query_str = get_querystring(query.dict(by_alias=True), [])
|
||||
# query_str = get_querystring(query.dict(by_alias=True), [])
|
||||
query_str = get_querystring(query.dict(), [])
|
||||
query_str = query_str.replace("start_date", "from").replace("end_date", "to")
|
||||
url = f"{base_url}treasury?{query_str}&apikey={api_key}"
|
||||
|
||||
return get_data_many(url, FMPTreasuryRatesData)
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -1,82 +1,42 @@
|
||||
"""Treasury Rates Data Model."""
|
||||
|
||||
|
||||
from datetime import (
|
||||
date as dateType,
|
||||
datetime,
|
||||
)
|
||||
from datetime import date as dateType
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
from openbb_provider.descriptions import QUERY_DESCRIPTIONS
|
||||
from openbb_provider.descriptions import QUERY_DESCRIPTIONS, DATA_DESCRIPTIONS
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
|
||||
class TreasuryRatesQueryParams(QueryParams):
|
||||
"""Treasury Rates query.
|
||||
"""Treasury Rates Query."""
|
||||
|
||||
Parameter
|
||||
---------
|
||||
start_date : Optional[str]
|
||||
Start date of the data, default is None.
|
||||
end_date : Optional[str]
|
||||
End date of the data, default is today.
|
||||
"""
|
||||
|
||||
start_date: Optional[str] = Field(
|
||||
default=None, description=QUERY_DESCRIPTIONS["start_date"]
|
||||
start_date: Optional[dateType] = Field(
|
||||
default=None,
|
||||
description=QUERY_DESCRIPTIONS.get("start_date", ""),
|
||||
)
|
||||
end_date: Optional[str] = Field(
|
||||
default=datetime.today().strftime("%Y-%m-%d"),
|
||||
description=QUERY_DESCRIPTIONS["end_date"],
|
||||
end_date: Optional[dateType] = Field(
|
||||
default=None,
|
||||
description=QUERY_DESCRIPTIONS.get("end_date", ""),
|
||||
)
|
||||
|
||||
|
||||
class TreasuryRatesData(Data):
|
||||
"""Return Treasury Rates Data.
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
Returns
|
||||
-------
|
||||
date : dateType
|
||||
The date of the treasury rates.
|
||||
month_1 : float
|
||||
The 1 month treasury rate.
|
||||
month_2 : float
|
||||
The 2 month treasury rate.
|
||||
month_3 : float
|
||||
The 3 month treasury rate.
|
||||
month_6 : float
|
||||
The 6 month treasury rate.
|
||||
year_1 : float
|
||||
The 1 year treasury rate.
|
||||
year_2 : float
|
||||
The 2 year treasury rate.
|
||||
year_3 : float
|
||||
The 3 year treasury rate.
|
||||
year_5 : float
|
||||
The 5 year treasury rate.
|
||||
year_7 : float
|
||||
The 7 year treasury rate.
|
||||
year_10 : float
|
||||
The 10 year treasury rate.
|
||||
year_20 : float
|
||||
The 20 year treasury rate.
|
||||
year_30 : float
|
||||
The 30 year treasury rate.
|
||||
"""
|
||||
|
||||
date: dateType
|
||||
month_1: float
|
||||
month_2: float
|
||||
month_3: float
|
||||
month_6: float
|
||||
year_1: float
|
||||
year_2: float
|
||||
year_3: float
|
||||
year_5: float
|
||||
year_7: float
|
||||
year_10: float
|
||||
year_20: float
|
||||
year_30: float
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
month_1: float = Field(description="The 1 month treasury rate.")
|
||||
month_2: float = Field(description="The 2 month treasury rate.")
|
||||
month_3: float = Field(description="The 3 month treasury rate.")
|
||||
month_6: float = Field(description="The 6 month treasury rate.")
|
||||
year_1: float = Field(description="The 1 year treasury rate.")
|
||||
year_2: float = Field(description="The 2 year treasury rate.")
|
||||
year_3: float = Field(description="The 3 year treasury rate.")
|
||||
year_5: float = Field(description="The 5 year treasury rate.")
|
||||
year_7: float = Field(description="The 7 year treasury rate.")
|
||||
year_10: float = Field(description="The 10 year treasury rate.")
|
||||
year_20: float = Field(description="The 20 year treasury rate.")
|
||||
year_30: float = Field(description="The 30 year treasury rate.")
|
||||
|
||||
Reference in New Issue
Block a user