mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
[Feature] - Add derivates historical chart (#6520)
* Add derivates historical chart * Try to debug test * Try to debug test * Try to debug test * Revert and lint * Revert * Add tests --------- Co-authored-by: Henrique Joaquim <henriquecjoaquim@gmail.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
This commit is contained in:
@@ -46,7 +46,7 @@ class EuroShortTermRateData(Data):
|
||||
)
|
||||
volume: Optional[float] = Field(
|
||||
default=None,
|
||||
description=DATA_DESCRIPTIONS.get("volume", "")+ " (Millions of €EUR).",
|
||||
description=DATA_DESCRIPTIONS.get("volume", "") + " (Millions of €EUR).",
|
||||
json_schema_extra={
|
||||
"x-unit_measurement": "currency",
|
||||
"x-frontend_multiply": 1e6,
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
"""Views for the Derivatives Extension."""
|
||||
|
||||
from typing import Any, Dict, Tuple
|
||||
|
||||
from openbb_charting.charts.price_historical import price_historical
|
||||
from openbb_charting.core.openbb_figure import OpenBBFigure
|
||||
|
||||
|
||||
class DerivativesViews:
|
||||
"""Derivatives Views."""
|
||||
|
||||
@staticmethod
|
||||
def derivatives_futures_historical( # noqa: PLR0912
|
||||
**kwargs,
|
||||
) -> Tuple[OpenBBFigure, Dict[str, Any]]:
|
||||
"""Get Derivatives Price Historical Chart."""
|
||||
return price_historical(**kwargs)
|
||||
@@ -17,3 +17,6 @@ build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.poetry.plugins."openbb_core_extension"]
|
||||
derivatives = "openbb_derivatives.derivatives_router:router"
|
||||
|
||||
[tool.poetry.plugins."openbb_charting_extension"]
|
||||
derivatives = "openbb_derivatives.derivatives_views:DerivativesViews"
|
||||
|
||||
@@ -758,3 +758,36 @@ def test_charting_fixedincome_government_yield_curve(params, headers):
|
||||
assert chart
|
||||
assert not fig
|
||||
assert list(chart.keys()) == ["content", "format"]
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "yfinance",
|
||||
"symbol": "ES",
|
||||
"start_date": "2022-01-01",
|
||||
"end_date": "2022-02-01",
|
||||
"chart": True,
|
||||
}
|
||||
)
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_charting_derivatives_futures_historical(params, headers):
|
||||
"""Test chart derivatives futures historical."""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
body = (json.dumps({"extra_params": {"chart_params": {"title": "test chart"}}}),)
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/derivatives/futures/historical?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=10, json=body)
|
||||
assert isinstance(result, requests.Response)
|
||||
assert result.status_code == 200
|
||||
|
||||
chart = result.json()["chart"]
|
||||
fig = chart.pop("fig", {})
|
||||
|
||||
assert chart
|
||||
assert not fig
|
||||
assert list(chart.keys()) == ["content", "format"]
|
||||
|
||||
@@ -621,3 +621,28 @@ def test_charting_fixedincome_government_yield_curve(params, obb):
|
||||
assert len(result.results) > 0
|
||||
assert result.chart.content
|
||||
assert isinstance(result.chart.fig, OpenBBFigure)
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "yfinance",
|
||||
"symbol": "ES",
|
||||
"start_date": "2022-01-01",
|
||||
"end_date": "2022-02-01",
|
||||
"chart": True,
|
||||
}
|
||||
)
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_charting_derivatives_futures_historical(params, obb):
|
||||
"""Test chart derivatives futures historical."""
|
||||
result = obb.derivatives.futures.historical(**params)
|
||||
assert result
|
||||
assert isinstance(result, OBBject)
|
||||
assert len(result.results) > 0
|
||||
assert result.chart.content
|
||||
assert isinstance(result.chart.fig, OpenBBFigure)
|
||||
|
||||
@@ -96,7 +96,7 @@ class EtfPricePerformanceChartQueryParams(EquityPricePerformanceChartQueryParams
|
||||
|
||||
|
||||
class EtfHoldingsChartQueryParams(ChartQueryParams):
|
||||
""" "ETF Holdings Chart Query Params."""
|
||||
"""ETF Holdings Chart Query Params."""
|
||||
|
||||
title: Optional[str] = Field(
|
||||
default=None,
|
||||
@@ -399,6 +399,7 @@ class ChartParams:
|
||||
equity_price_historical = EquityPriceHistoricalChartQueryParams
|
||||
economy_fred_series = EconomyFredSeriesChartQueryParams
|
||||
equity_price_historical = EquityPriceHistoricalChartQueryParams
|
||||
derivatives_futures_historical = EquityPriceHistoricalChartQueryParams
|
||||
equity_price_performance = EquityPricePerformanceChartQueryParams
|
||||
etf_historical = EtfPricePerformanceChartQueryParams
|
||||
etf_holdings = EtfHoldingsChartQueryParams
|
||||
|
||||
@@ -7,8 +7,8 @@ from openbb_nasdaq.models.calendar_ipo import NasdaqCalendarIpoFetcher
|
||||
from openbb_nasdaq.models.cot import NasdaqCotFetcher
|
||||
from openbb_nasdaq.models.cot_search import NasdaqCotSearchFetcher
|
||||
from openbb_nasdaq.models.economic_calendar import NasdaqEconomicCalendarFetcher
|
||||
from openbb_nasdaq.models.equity_search import NasdaqEquitySearchFetcher
|
||||
from openbb_nasdaq.models.equity_screener import NasdaqEquityScreenerFetcher
|
||||
from openbb_nasdaq.models.equity_search import NasdaqEquitySearchFetcher
|
||||
from openbb_nasdaq.models.historical_dividends import NasdaqHistoricalDividendsFetcher
|
||||
from openbb_nasdaq.models.lbma_fixing import NasdaqLbmaFixingFetcher
|
||||
from openbb_nasdaq.models.sp500_multiples import NasdaqSP500MultiplesFetcher
|
||||
|
||||
Reference in New Issue
Block a user