mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-31 22:41:19 +00:00
* small changes - moving provider inside the core * uptade readme * lint * remove old provider readme * leftovers * refactor website examples * ruff * fix nox * relock * fix fails_to_deliver headers * fix for tests that have renamed endpoints * fix discovery * removed test for renamed endpoint * fix broken syntax - test_search_financial_attributes * fix cash/income/balance * fix derivatives tests * fix etf tests * fix news tests * fix regulators * black * wrong test param * sort equity gainers/losers by percent * platform markdown generation import * Hotfix/fix int tests core merge (#5779) * removing tests on old endpoint * removing visualization on old endpoint * fixing equity tests * fixing examples * fix news tests * fix index test * example * add comments * example --------- Co-authored-by: Diogo Sousa <montezdesousa@gmail.com> --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Diogo Sousa <montezdesousa@gmail.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Pratyush Shukla <ps4534@nyu.edu>
89 lines
2.5 KiB
Python
89 lines
2.5 KiB
Python
"""FRED Selected Treasury Constant Maturity Model."""
|
|
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from openbb_core.provider.abstract.fetcher import Fetcher
|
|
from openbb_core.provider.standard_models.ffrmc import (
|
|
SelectedTreasuryConstantMaturityData,
|
|
SelectedTreasuryConstantMaturityQueryParams,
|
|
)
|
|
from openbb_fred.utils.fred_base import Fred
|
|
from pydantic import field_validator
|
|
|
|
FFRMC_PARAMETER_TO_FRED_ID = {
|
|
"10y": "T10YFF",
|
|
"5y": "T5YFF",
|
|
"1y": "T1YFF",
|
|
"6m": "T6MFF",
|
|
"3m": "T3MFF",
|
|
}
|
|
|
|
|
|
class FREDSelectedTreasuryConstantMaturityQueryParams(
|
|
SelectedTreasuryConstantMaturityQueryParams
|
|
):
|
|
"""FRED Selected Treasury Constant Maturity Query."""
|
|
|
|
|
|
class FREDSelectedTreasuryConstantMaturityData(SelectedTreasuryConstantMaturityData):
|
|
"""FRED Selected Treasury Constant Maturity Data."""
|
|
|
|
__alias_dict__ = {"rate": "value"}
|
|
|
|
@field_validator("rate", mode="before", check_fields=False)
|
|
@classmethod
|
|
def value_validate(cls, v):
|
|
"""Validate rate."""
|
|
try:
|
|
return float(v)
|
|
except ValueError:
|
|
return None
|
|
|
|
|
|
class FREDSelectedTreasuryConstantMaturityFetcher(
|
|
Fetcher[
|
|
FREDSelectedTreasuryConstantMaturityQueryParams,
|
|
List[FREDSelectedTreasuryConstantMaturityData],
|
|
]
|
|
):
|
|
"""Transform the query, extract and transform the data from the FRED endpoints."""
|
|
|
|
data_type = FREDSelectedTreasuryConstantMaturityData
|
|
|
|
@staticmethod
|
|
def transform_query(
|
|
params: Dict[str, Any]
|
|
) -> FREDSelectedTreasuryConstantMaturityQueryParams:
|
|
"""Transform query."""
|
|
return FREDSelectedTreasuryConstantMaturityQueryParams(**params)
|
|
|
|
@staticmethod
|
|
def extract_data(
|
|
query: FREDSelectedTreasuryConstantMaturityQueryParams,
|
|
credentials: Optional[Dict[str, str]],
|
|
**kwargs: Any
|
|
) -> list:
|
|
"""Extract data."""
|
|
key = credentials.get("fred_api_key") if credentials else ""
|
|
fred = Fred(key)
|
|
|
|
data = fred.get_series(
|
|
series_id=FFRMC_PARAMETER_TO_FRED_ID[query.maturity],
|
|
start_date=query.start_date,
|
|
end_date=query.end_date,
|
|
**kwargs,
|
|
)
|
|
|
|
return data
|
|
|
|
@staticmethod
|
|
def transform_data(
|
|
query: FREDSelectedTreasuryConstantMaturityQueryParams,
|
|
data: list,
|
|
**kwargs: Any
|
|
) -> List[FREDSelectedTreasuryConstantMaturityData]:
|
|
"""Transform data."""
|
|
return [
|
|
FREDSelectedTreasuryConstantMaturityData.model_validate(d) for d in data
|
|
]
|