mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
fix buggy docstring for methods
This commit is contained in:
@@ -9,39 +9,25 @@ class Extensions(Container):
|
||||
"""
|
||||
Routers:
|
||||
/crypto
|
||||
/econometrics
|
||||
/economy
|
||||
/fixedincome
|
||||
/forex
|
||||
/futures
|
||||
/news
|
||||
/qa
|
||||
/stocks
|
||||
/ta
|
||||
|
||||
Extensions:
|
||||
- crypto@0.1.0a2
|
||||
- econometrics@0.1.0a2
|
||||
- economy@0.1.0a2
|
||||
- fixedincome@0.1.0a2
|
||||
- forex@0.1.0a2
|
||||
- futures@0.1.0a2
|
||||
- news@0.1.0a2
|
||||
- openbb_charting@0.1.0a2
|
||||
- qa@0.1.0a2
|
||||
- stocks@0.1.0a2
|
||||
- ta@0.1.0a2
|
||||
|
||||
- alpha_vantage@0.1.0a2
|
||||
- benzinga@0.1.0a2
|
||||
- cboe@0.1.0a2
|
||||
- fmp@0.1.0a2
|
||||
- fred@0.1.0a2
|
||||
- intrinio@0.1.0a2
|
||||
- oecd@0.1.0a2
|
||||
- polygon@0.1.0a2
|
||||
- quandl@0.1.0a2
|
||||
- yfinance@0.1.0a2 """
|
||||
- polygon@0.1.0a2 """
|
||||
# fmt: on
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
@@ -52,12 +38,6 @@ Extensions:
|
||||
|
||||
return crypto.ROUTER_crypto(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def econometrics(self): # route = "/econometrics"
|
||||
from . import econometrics
|
||||
|
||||
return econometrics.ROUTER_econometrics(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def economy(self): # route = "/economy"
|
||||
from . import economy
|
||||
@@ -76,32 +56,14 @@ Extensions:
|
||||
|
||||
return forex.ROUTER_forex(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def futures(self): # route = "/futures"
|
||||
from . import futures
|
||||
|
||||
return futures.ROUTER_futures(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def news(self): # route = "/news"
|
||||
from . import news
|
||||
|
||||
return news.ROUTER_news(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def qa(self): # route = "/qa"
|
||||
from . import qa
|
||||
|
||||
return qa.ROUTER_qa(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def stocks(self): # route = "/stocks"
|
||||
from . import stocks
|
||||
|
||||
return stocks.ROUTER_stocks(command_runner=self._command_runner)
|
||||
|
||||
@property
|
||||
def ta(self): # route = "/ta"
|
||||
from . import ta
|
||||
|
||||
return ta.ROUTER_ta(command_runner=self._command_runner)
|
||||
|
||||
@@ -6,9 +6,9 @@ from typing import List, Literal, Optional, Union
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class ROUTER_crypto(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def load(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -39,7 +39,7 @@ class ROUTER_crypto(Container):
|
||||
description="End date of the data, in YYYY-MM-DD format."
|
||||
),
|
||||
] = None,
|
||||
provider: Optional[Literal["fmp", "polygon", "yfinance"]] = None,
|
||||
provider: Optional[Literal["fmp", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Crypto Historical Price.
|
||||
@@ -52,14 +52,14 @@ class ROUTER_crypto(Container):
|
||||
Start date of the data, in YYYY-MM-DD format.
|
||||
end_date : Optional[datetime.date]
|
||||
End date of the data, in YYYY-MM-DD format.
|
||||
provider : Optional[Literal['fmp', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
no default.
|
||||
timeseries : Optional[Annotated[int, Ge(ge=0)]]
|
||||
Number of days to look back. (provider: fmp)
|
||||
interval : Optional[Union[Literal['1min', '5min', '15min', '30min', '1hour', '4hour', '1day'], Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo']]]
|
||||
Data granularity. (provider: fmp, yfinance)
|
||||
interval : Literal['1min', '5min', '15min', '30min', '1hour', '4hour', '1day']
|
||||
Data granularity. (provider: fmp)
|
||||
multiplier : int
|
||||
Multiplier of the timespan. (provider: polygon)
|
||||
timespan : Literal['minute', 'hour', 'day', 'week', 'month', 'quarter', 'year']
|
||||
@@ -70,15 +70,13 @@ class ROUTER_crypto(Container):
|
||||
The number of data entries to return. (provider: polygon)
|
||||
adjusted : bool
|
||||
Whether the data is adjusted. (provider: polygon)
|
||||
period : Optional[Literal['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']]
|
||||
Period of the data to return. (provider: yfinance)
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[CryptoHistorical]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['fmp', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
|
||||
@@ -1,514 +0,0 @@
|
||||
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
|
||||
|
||||
from typing import Dict, List, Literal, Union
|
||||
|
||||
import pandas
|
||||
from annotated_types import Gt
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
class ROUTER_econometrics(Container):
|
||||
"""/econometrics
|
||||
bgot
|
||||
coint
|
||||
corr
|
||||
dwat
|
||||
granger
|
||||
ols
|
||||
ols_summary
|
||||
panelbols
|
||||
panelfd
|
||||
panelfmac
|
||||
panelols
|
||||
panelpols
|
||||
panelre
|
||||
unitroot
|
||||
"""
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def bgot(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
lags: Annotated[int, Gt(gt=0)] = 1,
|
||||
) -> OBBject[Data]:
|
||||
"""Perform Breusch-Godfrey Lagrange Multiplier tests for residual autocorrelation.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
lags: PositiveInt
|
||||
Number of lags to use in the test.
|
||||
Returns
|
||||
-------
|
||||
OBBject[Data]
|
||||
OBBject with the results being the score from the test.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
lags=lags,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/bgot",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def coint(
|
||||
self, data: Union[List[Data], pandas.DataFrame], columns: List[str]
|
||||
) -> OBBject[Data]:
|
||||
"""Show co-integration between two timeseries using the two step Engle-Granger test.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
columns: List[str]
|
||||
Data columns to check cointegration
|
||||
maxlag: PositiveInt
|
||||
Number of lags to use in the test.
|
||||
Returns
|
||||
-------
|
||||
OBBject[Data]
|
||||
OBBject with the results being the score from the test.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
columns=columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/coint",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def corr(self, data: Union[List[Data], pandas.DataFrame]) -> OBBject[List[Data]]:
|
||||
"""Get the corrlelation matrix of an input dataset.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Input dataset.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[List[Data]]
|
||||
Correlation matrix.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/corr",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def dwat(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Perform Durbin-Watson test for autocorrelation
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Data]
|
||||
OBBject with the results being the score from the test.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/dwat",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def granger(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_column: str,
|
||||
lag: Annotated[int, Gt(gt=0)] = 3,
|
||||
) -> OBBject[Data]:
|
||||
"""Perform Granger causality test to determine if X "causes" y.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_column: str
|
||||
Columns to use as exogenous variables.
|
||||
lag: PositiveInt
|
||||
Number of lags to use in the test.
|
||||
Returns
|
||||
-------
|
||||
OBBject[Data]
|
||||
OBBject with the results being the score from the test.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_column=x_column,
|
||||
lag=lag,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/granger",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def ols(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Perform OLS regression. This returns the model and results objects from statsmodels.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the results being model and results objects.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/ols",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def ols_summary(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Data]:
|
||||
"""Perform OLS regression. This returns the summary object from statsmodels.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the results being summary object.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/ols_summary",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def panelbols(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Perform a Between estimator regression on panel data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the fit model returned
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/panelbols",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def panelfd(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Perform a first-difference estimate for panel data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the fit model returned
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/panelfd",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def panelfmac(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Fama-MacBeth estimator for panel data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the fit model returned
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/panelfmac",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def panelols(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""One- and two-way fixed effects estimator for panel data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the fit model returned
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/panelols",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def panelpols(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Perform a Pooled coefficvient estimator regression on panel data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the fit model returned
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/panelpols",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def panelre(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
y_column: str,
|
||||
x_columns: List[str],
|
||||
) -> OBBject[Dict]:
|
||||
"""Perform One-way Random Effects model for panel data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
y_column: str
|
||||
Target column.
|
||||
x_columns: str
|
||||
List of columns to use as exogenous variables.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[Dict]
|
||||
OBBject with the fit model returned
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
y_column=y_column,
|
||||
x_columns=x_columns,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/panelre",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def unitroot(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
column: str,
|
||||
regression: Literal["c", "ct", "ctt"] = "c",
|
||||
) -> OBBject[Data]:
|
||||
"""Perform Augmented Dickey-Fuller unit root test.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: List[Data]
|
||||
Input dataset.
|
||||
column: str
|
||||
Data columns to check unit root
|
||||
regression: str
|
||||
Regression type to use in the test. Either "c" for constant only, "ct" for constant and trend, or "ctt" for
|
||||
constant, trend, and trend-squared.
|
||||
Returns
|
||||
-------
|
||||
OBBject[Data]
|
||||
OBBject with the results being the score from the test.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
column=column,
|
||||
regression=regression,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/econometrics/unitroot",
|
||||
**inputs,
|
||||
)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,27 +1,17 @@
|
||||
{
|
||||
"openbb_core_extension": [
|
||||
"crypto@0.1.0a2",
|
||||
"econometrics@0.1.0a2",
|
||||
"economy@0.1.0a2",
|
||||
"fixedincome@0.1.0a2",
|
||||
"forex@0.1.0a2",
|
||||
"futures@0.1.0a2",
|
||||
"news@0.1.0a2",
|
||||
"openbb_charting@0.1.0a2",
|
||||
"qa@0.1.0a2",
|
||||
"stocks@0.1.0a2",
|
||||
"ta@0.1.0a2"
|
||||
"stocks@0.1.0a2"
|
||||
],
|
||||
"openbb_provider_extension": [
|
||||
"alpha_vantage@0.1.0a2",
|
||||
"benzinga@0.1.0a2",
|
||||
"cboe@0.1.0a2",
|
||||
"fmp@0.1.0a2",
|
||||
"fred@0.1.0a2",
|
||||
"intrinio@0.1.0a2",
|
||||
"oecd@0.1.0a2",
|
||||
"polygon@0.1.0a2",
|
||||
"quandl@0.1.0a2",
|
||||
"yfinance@0.1.0a2"
|
||||
"polygon@0.1.0a2"
|
||||
]
|
||||
}
|
||||
@@ -6,9 +6,9 @@ from typing import List, Literal, Optional, Union
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class ROUTER_fixedincome(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def ameribor(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -101,7 +101,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def estr(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -175,7 +175,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def fed(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -249,7 +249,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def iorb(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -321,7 +321,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def projections(
|
||||
self, provider: Optional[Literal["fred"]] = None, **kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
@@ -386,7 +386,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def sofr(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -456,7 +456,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def sonia(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -529,7 +529,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def treasury(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -619,7 +619,7 @@ class ROUTER_fixedincome(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def ycrv(
|
||||
self,
|
||||
date: Annotated[
|
||||
|
||||
@@ -6,9 +6,9 @@ from typing import List, Literal, Optional, Union
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class ROUTER_forex(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def load(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -40,7 +40,7 @@ class ROUTER_forex(Container):
|
||||
description="End date of the data, in YYYY-MM-DD format."
|
||||
),
|
||||
] = None,
|
||||
provider: Optional[Literal["fmp", "polygon", "yfinance"]] = None,
|
||||
provider: Optional[Literal["fmp", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Forex Intraday Price.
|
||||
@@ -53,12 +53,12 @@ class ROUTER_forex(Container):
|
||||
Start date of the data, in YYYY-MM-DD format.
|
||||
end_date : Optional[datetime.date]
|
||||
End date of the data, in YYYY-MM-DD format.
|
||||
provider : Optional[Literal['fmp', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
no default.
|
||||
interval : Optional[Union[Literal['1min', '5min', '15min', '30min', '1hour', '4hour', '1day'], Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo']]]
|
||||
Data granularity. (provider: fmp, yfinance)
|
||||
interval : Literal['1min', '5min', '15min', '30min', '1hour', '4hour', '1day']
|
||||
Data granularity. (provider: fmp)
|
||||
multiplier : int
|
||||
Multiplier of the timespan. (provider: polygon)
|
||||
timespan : Literal['minute', 'hour', 'day', 'week', 'month', 'quarter', 'year']
|
||||
@@ -69,15 +69,13 @@ class ROUTER_forex(Container):
|
||||
The number of data entries to return. (provider: polygon)
|
||||
adjusted : bool
|
||||
Whether the data is adjusted. (provider: polygon)
|
||||
period : Optional[Literal['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']]
|
||||
Period of the data to return. (provider: yfinance)
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[ForexHistorical]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['fmp', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -135,7 +133,7 @@ class ROUTER_forex(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def pairs(
|
||||
self, provider: Optional[Literal["fmp", "intrinio", "polygon"]] = None, **kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
|
||||
@@ -1,188 +0,0 @@
|
||||
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
|
||||
|
||||
import datetime
|
||||
from typing import List, Literal, Optional, Union
|
||||
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
class ROUTER_futures(Container):
|
||||
"""/futures
|
||||
curve
|
||||
load
|
||||
"""
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
def curve(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
Union[str, List[str]],
|
||||
OpenBBCustomParameter(description="Symbol to get data for."),
|
||||
],
|
||||
date: Annotated[
|
||||
Optional[datetime.date],
|
||||
OpenBBCustomParameter(description="Historical date to search curve for."),
|
||||
] = None,
|
||||
provider: Optional[Literal["cboe", "yfinance"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Futures Historical Price.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get data for.
|
||||
date : Optional[datetime.date]
|
||||
Historical date to search curve for.
|
||||
provider : Optional[Literal['cboe', 'yfinance']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'cboe' if there is
|
||||
no default.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[FuturesCurve]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['cboe', 'yfinance']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
chart : Optional[Chart]
|
||||
Chart object.
|
||||
extra: Dict[str, Any]
|
||||
Extra info.
|
||||
|
||||
FuturesCurve
|
||||
------------
|
||||
expiration : str
|
||||
Futures expiration month.
|
||||
price : Optional[float]
|
||||
The close price of the symbol.
|
||||
symbol : Optional[str]
|
||||
The trading symbol for the tenor of future. (provider: cboe)""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
provider_choices={
|
||||
"provider": provider,
|
||||
},
|
||||
standard_params={
|
||||
"symbol": ",".join(symbol) if isinstance(symbol, list) else symbol,
|
||||
"date": date,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/futures/curve",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
def load(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
Union[str, List[str]],
|
||||
OpenBBCustomParameter(description="Symbol to get data for."),
|
||||
],
|
||||
start_date: Annotated[
|
||||
Union[datetime.date, None, str],
|
||||
OpenBBCustomParameter(
|
||||
description="Start date of the data, in YYYY-MM-DD format."
|
||||
),
|
||||
] = None,
|
||||
end_date: Annotated[
|
||||
Union[datetime.date, None, str],
|
||||
OpenBBCustomParameter(
|
||||
description="End date of the data, in YYYY-MM-DD format."
|
||||
),
|
||||
] = None,
|
||||
expiration: Annotated[
|
||||
Optional[str],
|
||||
OpenBBCustomParameter(description="Future expiry date with format YYYY-MM"),
|
||||
] = None,
|
||||
provider: Optional[Literal["yfinance"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Futures Historical Price.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get data for.
|
||||
start_date : Optional[datetime.date]
|
||||
Start date of the data, in YYYY-MM-DD format.
|
||||
end_date : Optional[datetime.date]
|
||||
End date of the data, in YYYY-MM-DD format.
|
||||
expiration : Optional[str]
|
||||
Future expiry date with format YYYY-MM
|
||||
provider : Optional[Literal['yfinance']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'yfinance' if there is
|
||||
no default.
|
||||
interval : Optional[Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo']]
|
||||
Data granularity. (provider: yfinance)
|
||||
period : Optional[Literal['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']]
|
||||
Period of the data to return. (provider: yfinance)
|
||||
prepost : bool
|
||||
Include Pre and Post market data. (provider: yfinance)
|
||||
adjust : bool
|
||||
Adjust all the data automatically. (provider: yfinance)
|
||||
back_adjust : bool
|
||||
Back-adjusted data to mimic true historical prices. (provider: yfinance)
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[FuturesHistorical]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['yfinance']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
chart : Optional[Chart]
|
||||
Chart object.
|
||||
extra: Dict[str, Any]
|
||||
Extra info.
|
||||
|
||||
FuturesHistorical
|
||||
-----------------
|
||||
date : datetime
|
||||
The date of the data.
|
||||
open : float
|
||||
The open price of the symbol.
|
||||
high : float
|
||||
The high price of the symbol.
|
||||
low : float
|
||||
The low price of the symbol.
|
||||
close : float
|
||||
The close price of the symbol.
|
||||
volume : float
|
||||
The volume of the symbol.""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
provider_choices={
|
||||
"provider": provider,
|
||||
},
|
||||
standard_params={
|
||||
"symbol": ",".join(symbol) if isinstance(symbol, list) else symbol,
|
||||
"start_date": start_date,
|
||||
"end_date": end_date,
|
||||
"expiration": expiration,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/futures/load",
|
||||
**inputs,
|
||||
)
|
||||
70
openbb_platform/openbb/package/module_map.json
vendored
70
openbb_platform/openbb/package/module_map.json
vendored
@@ -2,38 +2,13 @@
|
||||
"__extensions__": "",
|
||||
"crypto": "/crypto",
|
||||
"crypto_load": "/crypto/load",
|
||||
"econometrics": "/econometrics",
|
||||
"econometrics_bgot": "/econometrics/bgot",
|
||||
"econometrics_coint": "/econometrics/coint",
|
||||
"econometrics_corr": "/econometrics/corr",
|
||||
"econometrics_dwat": "/econometrics/dwat",
|
||||
"econometrics_granger": "/econometrics/granger",
|
||||
"econometrics_ols": "/econometrics/ols",
|
||||
"econometrics_ols_summary": "/econometrics/ols_summary",
|
||||
"econometrics_panelbols": "/econometrics/panelbols",
|
||||
"econometrics_panelfd": "/econometrics/panelfd",
|
||||
"econometrics_panelfmac": "/econometrics/panelfmac",
|
||||
"econometrics_panelols": "/econometrics/panelols",
|
||||
"econometrics_panelpols": "/econometrics/panelpols",
|
||||
"econometrics_panelre": "/econometrics/panelre",
|
||||
"econometrics_unitroot": "/econometrics/unitroot",
|
||||
"economy": "/economy",
|
||||
"economy_available_indices": "/economy/available_indices",
|
||||
"economy_const": "/economy/const",
|
||||
"economy_cot": "/economy/cot",
|
||||
"economy_cot_search": "/economy/cot_search",
|
||||
"economy_cpi": "/economy/cpi",
|
||||
"economy_european_index": "/economy/european_index",
|
||||
"economy_european_index_constituents": "/economy/european_index_constituents",
|
||||
"economy_fred_index": "/economy/fred_index",
|
||||
"economy_gdpforecast": "/economy/gdpforecast",
|
||||
"economy_gdpnom": "/economy/gdpnom",
|
||||
"economy_gdpreal": "/economy/gdpreal",
|
||||
"economy_index": "/economy/index",
|
||||
"economy_index_search": "/economy/index_search",
|
||||
"economy_index_snapshots": "/economy/index_snapshots",
|
||||
"economy_risk": "/economy/risk",
|
||||
"economy_sp500_multiples": "/economy/sp500_multiples",
|
||||
"fixedincome": "/fixedincome",
|
||||
"fixedincome_ameribor": "/fixedincome/ameribor",
|
||||
"fixedincome_estr": "/fixedincome/estr",
|
||||
@@ -47,22 +22,8 @@
|
||||
"forex": "/forex",
|
||||
"forex_load": "/forex/load",
|
||||
"forex_pairs": "/forex/pairs",
|
||||
"futures": "/futures",
|
||||
"futures_curve": "/futures/curve",
|
||||
"futures_load": "/futures/load",
|
||||
"news": "/news",
|
||||
"news_globalnews": "/news/globalnews",
|
||||
"qa": "/qa",
|
||||
"qa_capm": "/qa/capm",
|
||||
"qa_kurtosis": "/qa/kurtosis",
|
||||
"qa_normality": "/qa/normality",
|
||||
"qa_om": "/qa/om",
|
||||
"qa_quantile": "/qa/quantile",
|
||||
"qa_sh": "/qa/sh",
|
||||
"qa_skew": "/qa/skew",
|
||||
"qa_so": "/qa/so",
|
||||
"qa_summary": "/qa/summary",
|
||||
"qa_unitroot": "/qa/unitroot",
|
||||
"stocks": "/stocks",
|
||||
"stocks_ca": "/stocks/ca",
|
||||
"stocks_ca_peers": "/stocks/ca/peers",
|
||||
@@ -95,39 +56,10 @@
|
||||
"stocks_fa_shrs": "/stocks/fa/shrs",
|
||||
"stocks_fa_split": "/stocks/fa/split",
|
||||
"stocks_fa_transcript": "/stocks/fa/transcript",
|
||||
"stocks_info": "/stocks/info",
|
||||
"stocks_load": "/stocks/load",
|
||||
"stocks_multiples": "/stocks/multiples",
|
||||
"stocks_news": "/stocks/news",
|
||||
"stocks_options": "/stocks/options",
|
||||
"stocks_options_chains": "/stocks/options/chains",
|
||||
"stocks_quote": "/stocks/quote",
|
||||
"stocks_search": "/stocks/search",
|
||||
"ta": "/ta",
|
||||
"ta_ad": "/ta/ad",
|
||||
"ta_adosc": "/ta/adosc",
|
||||
"ta_adx": "/ta/adx",
|
||||
"ta_aroon": "/ta/aroon",
|
||||
"ta_atr": "/ta/atr",
|
||||
"ta_bbands": "/ta/bbands",
|
||||
"ta_cci": "/ta/cci",
|
||||
"ta_cg": "/ta/cg",
|
||||
"ta_clenow": "/ta/clenow",
|
||||
"ta_cones": "/ta/cones",
|
||||
"ta_demark": "/ta/demark",
|
||||
"ta_donchian": "/ta/donchian",
|
||||
"ta_ema": "/ta/ema",
|
||||
"ta_fib": "/ta/fib",
|
||||
"ta_fisher": "/ta/fisher",
|
||||
"ta_hma": "/ta/hma",
|
||||
"ta_ichimoku": "/ta/ichimoku",
|
||||
"ta_kc": "/ta/kc",
|
||||
"ta_macd": "/ta/macd",
|
||||
"ta_obv": "/ta/obv",
|
||||
"ta_rsi": "/ta/rsi",
|
||||
"ta_sma": "/ta/sma",
|
||||
"ta_stoch": "/ta/stoch",
|
||||
"ta_vwap": "/ta/vwap",
|
||||
"ta_wma": "/ta/wma",
|
||||
"ta_zlma": "/ta/zlma"
|
||||
"stocks_quote": "/stocks/quote"
|
||||
}
|
||||
@@ -5,9 +5,9 @@ from typing import List, Literal, Optional
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class ROUTER_news(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def globalnews(
|
||||
self,
|
||||
limit: Annotated[
|
||||
|
||||
@@ -1,375 +0,0 @@
|
||||
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
|
||||
|
||||
from typing import List, Literal, Union
|
||||
|
||||
import pandas
|
||||
from annotated_types import Ge, Gt
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_qa.qa_models import (
|
||||
CAPMModel,
|
||||
NormalityModel,
|
||||
OmegaModel,
|
||||
SummaryModel,
|
||||
UnitRootModel,
|
||||
)
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
class ROUTER_qa(Container):
|
||||
"""/qa
|
||||
capm
|
||||
kurtosis
|
||||
normality
|
||||
om
|
||||
quantile
|
||||
sh
|
||||
skew
|
||||
so
|
||||
summary
|
||||
unitroot
|
||||
"""
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def capm(
|
||||
self, data: Union[List[Data], pandas.DataFrame], target: str
|
||||
) -> OBBject[CAPMModel]:
|
||||
"""Capital Asset Pricing Model.""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/capm",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def kurtosis(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
window: Annotated[int, Gt(gt=0)],
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Kurtosis.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
window : PositiveInt
|
||||
Window size.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[List[Data]]
|
||||
Kurtosis.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
window=window,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/kurtosis",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def normality(
|
||||
self, data: Union[List[Data], pandas.DataFrame], target: str
|
||||
) -> OBBject[NormalityModel]:
|
||||
"""
|
||||
Normality Statistics.
|
||||
|
||||
- **Kurtosis**: whether the kurtosis of a sample differs from the normal distribution.
|
||||
- **Skewness**: whether the skewness of a sample differs from the normal distribution.
|
||||
- **Jarque-Bera**: whether the sample data has the skewness and kurtosis matching a normal distribution.
|
||||
- **Shapiro-Wilk**: whether a random sample comes from a normal distribution.
|
||||
- **Kolmogorov-Smirnov**: whether two underlying one-dimensional probability distributions differ.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[NormalityModel]
|
||||
Normality tests summary. See qa_models.NormalityModel for details.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/normality",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def om(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
threshold_start: float = 0.0,
|
||||
threshold_end: float = 1.5,
|
||||
) -> OBBject[List[OmegaModel]]:
|
||||
"""Omega Ratio.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
threshold_start : float, optional
|
||||
Start threshold, by default 0.0
|
||||
threshold_end : float, optional
|
||||
End threshold, by default 1.5
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[List[OmegaModel]]
|
||||
Omega ratios.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
threshold_start=threshold_start,
|
||||
threshold_end=threshold_end,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/om",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def quantile(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
window: Annotated[int, Gt(gt=0)],
|
||||
quantile_pct: Annotated[float, Ge(ge=0)] = 0.5,
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Quantile.""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
window=window,
|
||||
quantile_pct=quantile_pct,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/quantile",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def sh(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
rfr: float = 0.0,
|
||||
window: Annotated[int, Gt(gt=0)] = 252,
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Sharpe Ratio.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
rfr : float, optional
|
||||
Risk-free rate, by default 0.0
|
||||
window : PositiveInt, optional
|
||||
Window size, by default 252
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[List[Data]]
|
||||
Sharpe ratio.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
rfr=rfr,
|
||||
window=window,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/sh",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def skew(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
window: Annotated[int, Gt(gt=0)],
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Skewness.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
window : PositiveInt
|
||||
Window size.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[List[Data]]
|
||||
Skewness.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
window=window,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/skew",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def so(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
target_return: float = 0.0,
|
||||
window: Annotated[int, Gt(gt=0)] = 252,
|
||||
adjusted: bool = False,
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Sortino Ratio.
|
||||
|
||||
For method & terminology see: http://www.redrockcapital.com/Sortino__A__Sharper__Ratio_Red_Rock_Capital.pdf
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
target_return : float, optional
|
||||
Target return, by default 0.0
|
||||
window : PositiveInt, optional
|
||||
Window size, by default 252
|
||||
adjusted : bool, optional
|
||||
Adjust sortino ratio to compare it to sharpe ratio, by default False
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[List[Data]]
|
||||
Sortino ratio.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
target_return=target_return,
|
||||
window=window,
|
||||
adjusted=adjusted,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/so",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def summary(
|
||||
self, data: Union[List[Data], pandas.DataFrame], target: str
|
||||
) -> OBBject[SummaryModel]:
|
||||
"""Summary.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[SummaryModel]
|
||||
Summary table.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/summary",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call(config=dict(arbitrary_types_allowed=True))
|
||||
def unitroot(
|
||||
self,
|
||||
data: Union[List[Data], pandas.DataFrame],
|
||||
target: str,
|
||||
fuller_reg: Literal["c", "ct", "ctt", "nc"] = "c",
|
||||
kpss_reg: Literal["c", "ct"] = "c",
|
||||
) -> OBBject[UnitRootModel]:
|
||||
"""Unit Root Test.
|
||||
|
||||
Augmented Dickey-Fuller test for unit root.
|
||||
Kwiatkowski-Phillips-Schmidt-Shin test for unit root.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : List[Data]
|
||||
Time series data.
|
||||
target : str
|
||||
Target column name.
|
||||
fuller_reg : Literal["c", "ct", "ctt", "nc", "c"]
|
||||
Regression type for ADF test.
|
||||
kpss_reg : Literal["c", "ct"]
|
||||
Regression type for KPSS test.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject[UnitRootModel]
|
||||
Unit root tests summary.
|
||||
""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
data=data,
|
||||
target=target,
|
||||
fuller_reg=fuller_reg,
|
||||
kpss_reg=kpss_reg,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/qa/unitroot",
|
||||
**inputs,
|
||||
)
|
||||
@@ -7,9 +7,9 @@ from annotated_types import Ge
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -17,13 +17,11 @@ class ROUTER_stocks(Container):
|
||||
"""/stocks
|
||||
/ca
|
||||
/fa
|
||||
info
|
||||
load
|
||||
multiples
|
||||
news
|
||||
/options
|
||||
quote
|
||||
search
|
||||
"""
|
||||
|
||||
def __repr__(self) -> str:
|
||||
@@ -41,122 +39,7 @@ class ROUTER_stocks(Container):
|
||||
|
||||
return stocks_fa.ROUTER_stocks_fa(command_runner=self._command_runner)
|
||||
|
||||
@validate_call
|
||||
def info(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
Union[str, List[str]],
|
||||
OpenBBCustomParameter(description="Symbol to get data for."),
|
||||
],
|
||||
provider: Optional[Literal["cboe"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Get general price and performance metrics of a stock.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get data for.
|
||||
provider : Optional[Literal['cboe']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'cboe' if there is
|
||||
no default.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[StockInfo]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['cboe']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
chart : Optional[Chart]
|
||||
Chart object.
|
||||
extra: Dict[str, Any]
|
||||
Extra info.
|
||||
|
||||
StockInfo
|
||||
---------
|
||||
symbol : str
|
||||
Symbol to get data for.
|
||||
name : str
|
||||
Name associated with the ticker symbol.
|
||||
price : Optional[float]
|
||||
Last transaction price.
|
||||
open : Optional[float]
|
||||
Opening price of the stock.
|
||||
high : Optional[float]
|
||||
High price of the current trading day.
|
||||
low : Optional[float]
|
||||
Low price of the current trading day.
|
||||
close : Optional[float]
|
||||
Closing price of the most recent trading day.
|
||||
change : Optional[float]
|
||||
Change in price over the current trading period.
|
||||
change_percent : Optional[float]
|
||||
Percent change in price over the current trading period.
|
||||
prev_close : Optional[float]
|
||||
Previous closing price.
|
||||
type : Optional[str]
|
||||
Type of asset. (provider: cboe)
|
||||
exchange_id : Optional[int]
|
||||
The Exchange ID number. (provider: cboe)
|
||||
tick : Optional[str]
|
||||
Whether the last sale was an up or down tick. (provider: cboe)
|
||||
bid : Optional[float]
|
||||
Current bid price. (provider: cboe)
|
||||
bid_size : Optional[float]
|
||||
Bid lot size. (provider: cboe)
|
||||
ask : Optional[float]
|
||||
Current ask price. (provider: cboe)
|
||||
ask_size : Optional[float]
|
||||
Ask lot size. (provider: cboe)
|
||||
volume : Optional[float]
|
||||
Stock volume for the current trading day. (provider: cboe)
|
||||
iv30 : Optional[float]
|
||||
The 30-day implied volatility of the stock. (provider: cboe)
|
||||
iv30_change : Optional[float]
|
||||
Change in 30-day implied volatility of the stock. (provider: cboe)
|
||||
last_trade_timestamp : Optional[datetime]
|
||||
Last trade timestamp for the stock. (provider: cboe)
|
||||
iv30_annual_high : Optional[float]
|
||||
The 1-year high of implied volatility. (provider: cboe)
|
||||
hv30_annual_high : Optional[float]
|
||||
The 1-year high of realized volatility. (provider: cboe)
|
||||
iv30_annual_low : Optional[float]
|
||||
The 1-year low of implied volatility. (provider: cboe)
|
||||
hv30_annual_low : Optional[float]
|
||||
The 1-year low of realized volatility. (provider: cboe)
|
||||
iv60_annual_high : Optional[float]
|
||||
The 60-day high of implied volatility. (provider: cboe)
|
||||
hv60_annual_high : Optional[float]
|
||||
The 60-day high of realized volatility. (provider: cboe)
|
||||
iv60_annual_low : Optional[float]
|
||||
The 60-day low of implied volatility. (provider: cboe)
|
||||
hv60_annual_low : Optional[float]
|
||||
The 60-day low of realized volatility. (provider: cboe)
|
||||
iv90_annual_high : Optional[float]
|
||||
The 90-day high of implied volatility. (provider: cboe)
|
||||
hv90_annual_high : Optional[float]
|
||||
The 90-day high of realized volatility. (provider: cboe)""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
provider_choices={
|
||||
"provider": provider,
|
||||
},
|
||||
standard_params={
|
||||
"symbol": ",".join(symbol) if isinstance(symbol, list) else symbol,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/stocks/info",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def load(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -175,10 +58,7 @@ class ROUTER_stocks(Container):
|
||||
description="End date of the data, in YYYY-MM-DD format."
|
||||
),
|
||||
] = None,
|
||||
chart: bool = False,
|
||||
provider: Optional[
|
||||
Literal["alpha_vantage", "cboe", "fmp", "intrinio", "polygon", "yfinance"]
|
||||
] = None,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Load stock data for a specific ticker.
|
||||
@@ -191,28 +71,14 @@ class ROUTER_stocks(Container):
|
||||
Start date of the data, in YYYY-MM-DD format.
|
||||
end_date : Optional[datetime.date]
|
||||
End date of the data, in YYYY-MM-DD format.
|
||||
chart : bool
|
||||
Whether to create a chart or not, by default False.
|
||||
provider : Optional[Literal['alpha_vantage', 'cboe', 'fmp', 'intrinio', 'pol...
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'alpha_vantage' if there is
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
no default.
|
||||
function_ : Literal['TIME_SERIES_INTRADAY', 'TIME_SERIES_DAILY', 'TIME_SERIES_WEEKLY', 'TIME_SERIES_MONTHLY', 'TIME_SERIES_DAILY_ADJUSTED', 'TIME_SERIES_WEEKLY_ADJUSTED', 'TIME_SERIES_MONTHLY_ADJUSTED']
|
||||
The time series of your choice. (provider: alpha_vantage)
|
||||
period : Optional[Union[Literal['intraday', 'daily', 'weekly', 'monthly'], Literal['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']]]
|
||||
Period of the data to return. (provider: alpha_vantage, yfinance)
|
||||
interval : Optional[Union[Literal['1min', '5min', '15min', '30min', '60min'], Literal['1d', '1m'], Literal['1min', '5min', '15min', '30min', '1hour', '4hour', '1day'], Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo']]]
|
||||
Data granularity. (provider: alpha_vantage, cboe, fmp, yfinance)
|
||||
adjusted : Optional[bool]
|
||||
Output time series is adjusted by historical split and dividend events. (provider: alpha_vantage, polygon)
|
||||
extended_hours : Optional[bool]
|
||||
Extended trading hours during pre-market and after-hours. (provider: alpha_vantage)
|
||||
month : Optional[str]
|
||||
Query a specific month in history (in YYYY-MM format). (provider: alpha_vantage)
|
||||
outputsize : Optional[Literal['compact', 'full']]
|
||||
Compact returns only the latest 100 data points in the intraday time series; full returns trailing 30 days of the most recent intraday data if the month parameter (see above) is not specified, or the full intraday data for a specific month in history if the month parameter is specified. (provider: alpha_vantage)
|
||||
timeseries : Optional[Annotated[int, Ge(ge=0)]]
|
||||
Number of days to look back. (provider: fmp)
|
||||
interval : Literal['1min', '5min', '15min', '30min', '1hour', '4hour', '1day']
|
||||
Data granularity. (provider: fmp)
|
||||
timezone : Optional[Literal['Africa/Algiers', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Monrovia', 'Africa/Nairobi', 'America/Argentina/Buenos_Aires', 'America/Bogota', 'America/Caracas', 'America/Chicago', 'America/Chihuahua', 'America/Denver', 'America/Godthab', 'America/Guatemala', 'America/Guyana', 'America/Halifax', 'America/Indiana/Indianapolis', 'America/Juneau', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Mazatlan', 'America/Mexico_City', 'America/Monterrey', 'America/Montevideo', 'America/New_York', 'America/Phoenix', 'America/Regina', 'America/Santiago', 'America/Sao_Paulo', 'America/St_Johns', 'America/Tijuana', 'Asia/Almaty', 'Asia/Baghdad', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Chongqing', 'Asia/Colombo', 'Asia/Dhaka', 'Asia/Hong_Kong', 'Asia/Irkutsk', 'Asia/Jakarta', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kathmandu', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuwait', 'Asia/Magadan', 'Asia/Muscat', 'Asia/Novosibirsk', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tokyo', 'Asia/Ulaanbaatar', 'Asia/Urumqi', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Cape_Verde', 'Atlantic/South_Georgia', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Darwin', 'Australia/Hobart', 'Australia/Melbourne', 'Australia/Perth', 'Australia/Sydney', 'Etc/UTC', 'UTC', 'Europe/Amsterdam', 'Europe/Athens', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Helsinki', 'Europe/Istanbul', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Madrid', 'Europe/Minsk', 'Europe/Moscow', 'Europe/Paris', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/Sarajevo', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Majuro', 'Pacific/Midway', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Port_Moresby', 'Pacific/Tongatapu']]
|
||||
Returns trading times in this timezone. (provider: intrinio)
|
||||
source : Optional[Literal['realtime', 'delayed', 'nasdaq_basic']]
|
||||
@@ -231,33 +97,15 @@ class ROUTER_stocks(Container):
|
||||
Sort order of the data. (provider: polygon)
|
||||
limit : int
|
||||
The number of data entries to return. (provider: polygon)
|
||||
prepost : bool
|
||||
Include Pre and Post market data. (provider: yfinance)
|
||||
actions : bool
|
||||
Include actions. (provider: yfinance)
|
||||
auto_adjust : bool
|
||||
Adjust all OHLC data automatically. (provider: yfinance)
|
||||
back_adjust : bool
|
||||
Attempt to adjust all the data automatically. (provider: yfinance)
|
||||
progress : bool
|
||||
Show progress bar. (provider: yfinance)
|
||||
ignore_tz : bool
|
||||
When combining from different timezones, ignore that part of datetime. (provider: yfinance)
|
||||
rounding : bool
|
||||
Round to two decimal places? (provider: yfinance)
|
||||
repair : bool
|
||||
Detect currency unit 100x mixups and attempt repair. (provider: yfinance)
|
||||
keepna : bool
|
||||
Keep NaN rows returned by Yahoo? (provider: yfinance)
|
||||
group_by : Literal['ticker', 'column']
|
||||
Group by ticker or column. (provider: yfinance)
|
||||
adjusted : bool
|
||||
Output time series is adjusted by historical split and dividend events. (provider: polygon)
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[StockHistorical]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['alpha_vantage', 'cboe', 'fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -282,18 +130,8 @@ class ROUTER_stocks(Container):
|
||||
The volume of the symbol.
|
||||
vwap : Optional[Annotated[float, Gt(gt=0)]]
|
||||
Volume Weighted Average Price of the symbol.
|
||||
adj_close : Optional[Union[Annotated[float, Gt(gt=0)], float]]
|
||||
The adjusted close price of the symbol. (provider: alpha_vantage, fmp)
|
||||
dividend_amount : Optional[Annotated[float, Ge(ge=0)]]
|
||||
Dividend amount paid for the corresponding date. (provider: alpha_vantage)
|
||||
split_coefficient : Optional[Annotated[float, Ge(ge=0)]]
|
||||
Split coefficient for the corresponding date. (provider: alpha_vantage)
|
||||
calls_volume : Optional[float]
|
||||
Number of calls traded during the most recent trading period. Only valid if interval is 1m. (provider: cboe)
|
||||
puts_volume : Optional[float]
|
||||
Number of puts traded during the most recent trading period. Only valid if interval is 1m. (provider: cboe)
|
||||
total_options_volume : Optional[float]
|
||||
Total number of options traded during the most recent trading period. Only valid if interval is 1m. (provider: cboe)
|
||||
adj_close : Optional[float]
|
||||
Adjusted Close Price of the symbol. (provider: fmp)
|
||||
unadjusted_volume : Optional[float]
|
||||
Unadjusted volume of the symbol. (provider: fmp)
|
||||
change : Optional[float]
|
||||
@@ -324,7 +162,6 @@ class ROUTER_stocks(Container):
|
||||
"end_date": end_date,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
chart=chart,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
@@ -332,7 +169,7 @@ class ROUTER_stocks(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def multiples(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -343,7 +180,6 @@ class ROUTER_stocks(Container):
|
||||
Optional[int],
|
||||
OpenBBCustomParameter(description="The number of data entries to return."),
|
||||
] = 100,
|
||||
chart: bool = False,
|
||||
provider: Optional[Literal["fmp"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
@@ -355,8 +191,6 @@ class ROUTER_stocks(Container):
|
||||
Symbol to get data for.
|
||||
limit : Optional[int]
|
||||
The number of data entries to return.
|
||||
chart : bool
|
||||
Whether to create a chart or not, by default False.
|
||||
provider : Optional[Literal['fmp']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
@@ -508,7 +342,6 @@ class ROUTER_stocks(Container):
|
||||
"limit": limit,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
chart=chart,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
@@ -516,7 +349,7 @@ class ROUTER_stocks(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def news(
|
||||
self,
|
||||
symbols: Annotated[
|
||||
@@ -526,10 +359,7 @@ class ROUTER_stocks(Container):
|
||||
Optional[Annotated[int, Ge(ge=0)]],
|
||||
OpenBBCustomParameter(description="Number of results to return per page."),
|
||||
] = 20,
|
||||
chart: bool = False,
|
||||
provider: Optional[
|
||||
Literal["benzinga", "fmp", "intrinio", "polygon", "yfinance"]
|
||||
] = None,
|
||||
provider: Optional[Literal["benzinga", "fmp", "intrinio", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Get news for one or more stock tickers.
|
||||
@@ -540,9 +370,7 @@ class ROUTER_stocks(Container):
|
||||
Comma separated list of symbols.
|
||||
limit : Optional[Annotated[int, Ge(ge=0)]]
|
||||
Number of results to return per page.
|
||||
chart : bool
|
||||
Whether to create a chart or not, by default False.
|
||||
provider : Optional[Literal['benzinga', 'fmp', 'intrinio', 'polygon', 'yfina...
|
||||
provider : Optional[Literal['benzinga', 'fmp', 'intrinio', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'benzinga' if there is
|
||||
no default.
|
||||
@@ -582,7 +410,7 @@ class ROUTER_stocks(Container):
|
||||
OBBject
|
||||
results : List[StockNews]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['benzinga', 'fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['benzinga', 'fmp', 'intrinio', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -629,18 +457,10 @@ class ROUTER_stocks(Container):
|
||||
Image URL. (provider: polygon)
|
||||
keywords : Optional[List[str]]
|
||||
Keywords in the article (provider: polygon)
|
||||
publisher : Optional[Union[openbb_polygon.models.stock_news.PolygonPublisher, str]]
|
||||
Publisher of the article. (provider: polygon, yfinance)
|
||||
publisher : Optional[openbb_polygon.models.stock_news.PolygonPublisher]
|
||||
Publisher of the article. (provider: polygon)
|
||||
tickers : Optional[List[str]]
|
||||
Tickers covered in the article. (provider: polygon)
|
||||
uuid : Optional[str]
|
||||
Unique identifier for the news article (provider: yfinance)
|
||||
type : Optional[str]
|
||||
Type of the news article (provider: yfinance)
|
||||
thumbnail : Optional[List]
|
||||
Thumbnail related data to the ticker news article. (provider: yfinance)
|
||||
related_tickers : Optional[str]
|
||||
Tickers related to the news article. (provider: yfinance)""" # noqa: E501
|
||||
Tickers covered in the article. (provider: polygon)""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
provider_choices={
|
||||
@@ -651,7 +471,6 @@ class ROUTER_stocks(Container):
|
||||
"limit": limit,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
chart=chart,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
@@ -665,7 +484,7 @@ class ROUTER_stocks(Container):
|
||||
|
||||
return stocks_options.ROUTER_stocks_options(command_runner=self._command_runner)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def quote(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -807,68 +626,3 @@ class ROUTER_stocks(Container):
|
||||
"/stocks/quote",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
def search(
|
||||
self,
|
||||
query: Annotated[str, OpenBBCustomParameter(description="Search query.")] = "",
|
||||
ticker: Annotated[
|
||||
bool,
|
||||
OpenBBCustomParameter(description="Whether to search by ticker symbol."),
|
||||
] = False,
|
||||
provider: Optional[Literal["cboe"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Search for a company or stock ticker.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
query : str
|
||||
Search query.
|
||||
ticker : bool
|
||||
Whether to search by ticker symbol.
|
||||
provider : Optional[Literal['cboe']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'cboe' if there is
|
||||
no default.
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[StockSearch]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['cboe']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
chart : Optional[Chart]
|
||||
Chart object.
|
||||
extra: Dict[str, Any]
|
||||
Extra info.
|
||||
|
||||
StockSearch
|
||||
-----------
|
||||
symbol : str
|
||||
Symbol to get data for.
|
||||
name : str
|
||||
Name of the company.
|
||||
dpm_name : Optional[str]
|
||||
Name of the primary market maker. (provider: cboe)
|
||||
post_station : Optional[str]
|
||||
Post and station location on the CBOE trading floor. (provider: cboe)""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
provider_choices={
|
||||
"provider": provider,
|
||||
},
|
||||
standard_params={
|
||||
"query": query,
|
||||
"ticker": ticker,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
)
|
||||
|
||||
return self._run(
|
||||
"/stocks/search",
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@@ -5,9 +5,9 @@ from typing import List, Literal, Optional, Union
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class ROUTER_stocks_ca(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def peers(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
|
||||
@@ -6,9 +6,9 @@ from typing import List, Literal, Optional, Union
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ class ROUTER_stocks_fa(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def balance(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -62,7 +62,7 @@ class ROUTER_stocks_fa(Container):
|
||||
int,
|
||||
OpenBBCustomParameter(description="The number of data entries to return."),
|
||||
] = 12,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon", "yfinance"]] = None,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Balance Sheet.
|
||||
@@ -75,7 +75,7 @@ class ROUTER_stocks_fa(Container):
|
||||
Period of the data to return.
|
||||
limit : int
|
||||
The number of data entries to return.
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
no default.
|
||||
@@ -123,7 +123,7 @@ class ROUTER_stocks_fa(Container):
|
||||
OBBject
|
||||
results : List[BalanceSheet]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -266,7 +266,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def balance_growth(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -410,7 +410,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def cal(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -490,7 +490,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def cash(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -505,7 +505,7 @@ class ROUTER_stocks_fa(Container):
|
||||
int,
|
||||
OpenBBCustomParameter(description="The number of data entries to return."),
|
||||
] = 12,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon", "yfinance"]] = None,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Cash Flow Statement.
|
||||
@@ -518,7 +518,7 @@ class ROUTER_stocks_fa(Container):
|
||||
Period of the data to return.
|
||||
limit : int
|
||||
The number of data entries to return.
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
no default.
|
||||
@@ -566,7 +566,7 @@ class ROUTER_stocks_fa(Container):
|
||||
OBBject
|
||||
results : List[CashFlowStatement]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -689,7 +689,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def cash_growth(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -815,7 +815,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def comp(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -894,7 +894,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def comsplit(
|
||||
self,
|
||||
start_date: Annotated[
|
||||
@@ -968,7 +968,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def divs(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1035,7 +1035,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def earning(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1113,7 +1113,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def emp(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1184,7 +1184,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def est(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1295,7 +1295,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def filings(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1373,7 +1373,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def income(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1388,7 +1388,7 @@ class ROUTER_stocks_fa(Container):
|
||||
int,
|
||||
OpenBBCustomParameter(description="The number of data entries to return."),
|
||||
] = 12,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon", "yfinance"]] = None,
|
||||
provider: Optional[Literal["fmp", "intrinio", "polygon"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Income Statement.
|
||||
@@ -1401,7 +1401,7 @@ class ROUTER_stocks_fa(Container):
|
||||
Period of the data to return.
|
||||
limit : int
|
||||
The number of data entries to return.
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'fmp' if there is
|
||||
no default.
|
||||
@@ -1449,7 +1449,7 @@ class ROUTER_stocks_fa(Container):
|
||||
OBBject
|
||||
results : List[IncomeStatement]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon', 'yfinance']]
|
||||
provider : Optional[Literal['fmp', 'intrinio', 'polygon']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -1572,7 +1572,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def income_growth(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1697,7 +1697,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def ins(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1819,7 +1819,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def ins_own(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -1959,7 +1959,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def metrics(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2150,7 +2150,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def mgmt(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2217,7 +2217,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def overview(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2342,7 +2342,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def own(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2487,7 +2487,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def pt(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2550,7 +2550,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def pta(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2633,7 +2633,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def ratios(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2816,7 +2816,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def revgeo(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2897,7 +2897,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def revseg(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -2968,7 +2968,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def shrs(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -3033,7 +3033,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def split(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
@@ -3094,7 +3094,7 @@ class ROUTER_stocks_fa(Container):
|
||||
**inputs,
|
||||
)
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def transcript(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
|
||||
@@ -5,9 +5,9 @@ from typing import List, Literal, Optional, Union
|
||||
from openbb_core.app.model.custom_parameter import OpenBBCustomParameter
|
||||
from openbb_core.app.model.obbject import OBBject
|
||||
from openbb_core.app.static.container import Container
|
||||
from openbb_core.app.static.decorators import validate
|
||||
from openbb_core.app.static.filters import filter_inputs
|
||||
from openbb_provider.abstract.data import Data
|
||||
from pydantic import validate_call
|
||||
from typing_extensions import Annotated
|
||||
|
||||
|
||||
@@ -19,14 +19,14 @@ class ROUTER_stocks_options(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@validate_call
|
||||
@validate
|
||||
def chains(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
Union[str, List[str]],
|
||||
OpenBBCustomParameter(description="Symbol to get data for."),
|
||||
],
|
||||
provider: Optional[Literal["cboe", "intrinio"]] = None,
|
||||
provider: Optional[Literal["intrinio"]] = None,
|
||||
**kwargs
|
||||
) -> OBBject[List[Data]]:
|
||||
"""Get the complete options chain for a ticker.
|
||||
@@ -35,9 +35,9 @@ class ROUTER_stocks_options(Container):
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get data for.
|
||||
provider : Optional[Literal['cboe', 'intrinio']]
|
||||
provider : Optional[Literal['intrinio']]
|
||||
The provider to use for the query, by default None.
|
||||
If None, the provider specified in defaults is selected or 'cboe' if there is
|
||||
If None, the provider specified in defaults is selected or 'intrinio' if there is
|
||||
no default.
|
||||
date : Optional[str]
|
||||
Date for which the options chains are returned. (provider: intrinio)
|
||||
@@ -47,7 +47,7 @@ class ROUTER_stocks_options(Container):
|
||||
OBBject
|
||||
results : List[OptionsChains]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['cboe', 'intrinio']]
|
||||
provider : Optional[Literal['intrinio']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
@@ -109,29 +109,7 @@ class ROUTER_stocks_options(Container):
|
||||
theta : Optional[float]
|
||||
Theta of the option.
|
||||
vega : Optional[float]
|
||||
Vega of the option.
|
||||
bid_size : Optional[int]
|
||||
Bid size for the option. (provider: cboe)
|
||||
ask_size : Optional[int]
|
||||
Ask size for the option. (provider: cboe)
|
||||
theoretical : Optional[float]
|
||||
Theoretical value of the option. (provider: cboe)
|
||||
last_trade_price : Optional[float]
|
||||
Last trade price of the option. (provider: cboe)
|
||||
tick : Optional[str]
|
||||
Whether the last tick was up or down in price. (provider: cboe)
|
||||
prev_close : Optional[float]
|
||||
Previous closing price of the option. (provider: cboe)
|
||||
change : Optional[float]
|
||||
Change in price of the option. (provider: cboe)
|
||||
change_percent : Optional[float]
|
||||
Change, in percent, of the option. (provider: cboe)
|
||||
rho : Optional[float]
|
||||
Rho of the option. (provider: cboe)
|
||||
last_trade_timestamp : Optional[datetime]
|
||||
Last trade timestamp of the option. (provider: cboe)
|
||||
dte : Optional[int]
|
||||
Days to expiration for the option. (provider: cboe)""" # noqa: E501
|
||||
Vega of the option.""" # noqa: E501
|
||||
|
||||
inputs = filter_inputs(
|
||||
provider_choices={
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
from functools import wraps
|
||||
from typing import Callable, Optional, ParamSpec, TypeVar, overload
|
||||
|
||||
from pydantic.validate_call import validate_call
|
||||
|
||||
P = ParamSpec("P")
|
||||
R = TypeVar("R")
|
||||
|
||||
|
||||
@overload
|
||||
def validate(func: Callable[P, R]) -> Callable[P, R]:
|
||||
pass
|
||||
|
||||
|
||||
@overload
|
||||
def validate(**dec_kwargs) -> Callable[P, R]:
|
||||
pass
|
||||
|
||||
|
||||
def validate(
|
||||
func: Optional[Callable[P, R]] = None,
|
||||
**dec_kwargs,
|
||||
) -> Optional[Callable]:
|
||||
"""Validate function calls."""
|
||||
|
||||
def decorated(f):
|
||||
"""Decorated function."""
|
||||
|
||||
@wraps(f)
|
||||
def wrapper(*f_args, **f_kwargs):
|
||||
return validate_call(f, **dec_kwargs)(*f_args, **f_kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorated if func is None else decorated(func)
|
||||
@@ -1,5 +1,6 @@
|
||||
"""OpenBB filters."""
|
||||
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from openbb_core.app.utils import df_to_basemodel
|
||||
|
||||
@@ -252,7 +252,7 @@ class ImportDefinition:
|
||||
code += "\nimport pandas"
|
||||
code += "\nimport datetime"
|
||||
code += "\nimport pydantic"
|
||||
code += "\nfrom pydantic import validate_call, BaseModel"
|
||||
code += "\nfrom pydantic import BaseModel"
|
||||
code += "\nfrom inspect import Parameter"
|
||||
code += "\nimport typing"
|
||||
code += "\nfrom typing import List, Dict, Union, Optional, Literal"
|
||||
@@ -262,6 +262,7 @@ class ImportDefinition:
|
||||
else:
|
||||
code += "\nfrom typing_extensions import Annotated"
|
||||
code += "\nfrom openbb_core.app.utils import df_to_basemodel"
|
||||
code += "\nfrom openbb_core.app.static.decorators import validate\n"
|
||||
code += "\nfrom openbb_core.app.static.filters import filter_inputs\n"
|
||||
code += "\nfrom openbb_provider.abstract.data import Data"
|
||||
if path.startswith("/qa"):
|
||||
@@ -721,12 +722,12 @@ class MethodDefinition:
|
||||
func_params = MethodDefinition.build_func_params(formatted_params)
|
||||
func_returns = MethodDefinition.build_func_returns(return_type, model_name)
|
||||
|
||||
extra = (
|
||||
args = (
|
||||
"(config=dict(arbitrary_types_allowed=True))"
|
||||
if "pandas.DataFrame" in func_params
|
||||
else ""
|
||||
)
|
||||
code = f"\n @validate_call{extra}"
|
||||
code = f"\n @validate{args}"
|
||||
code += f"\n def {func_name}(self, {func_params}) -> {func_returns}:\n"
|
||||
|
||||
return code
|
||||
|
||||
Reference in New Issue
Block a user