diff options
Diffstat (limited to 'openbb_platform/extensions')
6 files changed, 164 insertions, 2 deletions
diff --git a/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py b/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py index 210ab79190c..97e9a3551eb 100644 --- a/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py +++ b/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py @@ -24,7 +24,24 @@ def headers(): @parametrize( "params", [ - ({"provider": "intrinio", "symbol": "AAPL", "date": "2023-01-25"}), + ( + { + "provider": "intrinio", + "symbol": "AAPL", + "date": "2023-01-25", + "option_type": None, + "moneyness": "all", + "strike_gt": None, + "strike_lt": None, + "volume_gt": None, + "volume_lt": None, + "oi_gt": None, + "oi_lt": None, + "model": "black_scholes", + "show_extended_price": False, + "include_related_symbols": False, + } + ), ({"provider": "cboe", "symbol": "AAPL", "use_cache": False}), ({"provider": "tradier", "symbol": "AAPL"}), ({"provider": "yfinance", "symbol": "AAPL"}), @@ -125,3 +142,21 @@ def test_derivatives_futures_curve(params, headers): result = requests.get(url, headers=headers, timeout=60) assert isinstance(result, requests.Response) assert result.status_code == 200 + + +@parametrize( + "params", + [ + ({"provider": "intrinio", "date": None, "only_traded": True}), + ], +) +@pytest.mark.integration +def test_derivatives_options_snapshots(params, headers): + """Test the options snapshots endpoint.""" + params = {p: v for p, v in params.items() if v} + + query_str = get_querystring(params, []) + url = f"http://0.0.0.0:8000/api/v1/derivatives/options/snapshots?{query_str}" + result = requests.get(url, headers=headers, timeout=60) + assert isinstance(result, requests.Response) + assert result.status_code == 200 diff --git a/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py b/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py index 1bc0597855f..4e04039bc7a 100644 --- a/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py +++ b/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py @@ -20,7 +20,24 @@ def obb(pytestconfig): @parametrize( "params", [ - ({"provider": "intrinio", "symbol": "AAPL", "date": "2023-01-25"}), + ( + { + "provider": "intrinio", + "symbol": "AAPL", + "date": "2023-01-25", + "option_type": None, + "moneyness": "all", + "strike_gt": None, + "strike_lt": None, + "volume_gt": None, + "volume_lt": None, + "oi_gt": None, + "oi_lt": None, + "model": "black_scholes", + "show_extended_price": False, + "include_related_symbols": False, + } + ), ({"provider": "cboe", "symbol": "AAPL", "use_cache": False}), ({"provider": "tradier", "symbol": "AAPL"}), ({"provider": "yfinance", "symbol": "AAPL"}), @@ -109,3 +126,18 @@ def test_derivatives_futures_curve(params, obb): assert result assert isinstance(result, OBBject) assert len(result.results) > 0 + + +@parametrize( + "params", + [ + ({"provider": "intrinio", "date": None, "only_traded": True}), + ], +) +@pytest.mark.integration +def test_derivatives_options_snapshots(params, obb): + """Test the options snapshots endpoint.""" + result = obb.derivatives.options.snapshots(**params) + assert result + assert isinstance(result, OBBject) + assert len(result.results) > 0 diff --git a/openbb_platform/extensions/derivatives/openbb_derivatives/options/options_router.py b/openbb_platform/extensions/derivatives/openbb_derivatives/options/options_router.py index dbed2aa674d..bcdb00be4b7 100644 --- a/openbb_platform/extensions/derivatives/openbb_derivatives/options/options_router.py +++ b/openbb_platform/extensions/derivatives/openbb_derivatives/options/options_router.py @@ -54,3 +54,21 @@ async def unusual( ) -> OBBject: """Get the complete options chain for a ticker.""" return await OBBject.from_query(Query(**locals())) + + +@router.command( + model="OptionsSnapshots", + examples=[ + APIEx( + parameters={"provider": "intrinio"}, + ), + ], +) +async def snapshots( + cc: CommandContext, + provider_choices: ProviderChoices, + standard_params: StandardParams, + extra_params: ExtraParams, +) -> OBBject: + """Get a snapshot of the options market universe.""" + return await OBBject.from_query(Query(**locals())) diff --git a/openbb_platform/extensions/fixedincome/integration/test_fixedincome_api.py b/openbb_platform/extensions/fixedincome/integration/test_fixedincome_api.py index 1e9844767f3..521040398c2 100644 --- a/openbb_platform/extensions/fixedincome/integration/test_fixedincome_api.py +++ b/openbb_platform/extensions/fixedincome/integration/test_fixedincome_api.py @@ -694,3 +694,29 @@ def test_fixedincome_bond_indices(params, headers): result = requests.get(url, headers=headers, timeout=10) assert isinstance(result, requests.Response) assert result.status_code == 200 + + +@parametrize( + "params", + [ + { + "provider": "fred", + "index": "usda_30y,fha_30y", + "start_date": "2023-05-31", + "end_date": "2024-06-01", + "transform": None, + "frequency": None, + "aggregation_method": "avg", + }, + ], +) +@pytest.mark.integration +def test_fixedincome_mortgage_indices(params, headers): + """Test the mortgage indices endpoint.""" + params = {p: v for p, v in params.items() if v} + + query_str = get_querystring(params, []) + url = f"http://0.0.0.0:8000/api/v1/fixedincome/mortgage_indices?{query_str}" + result = requests.get(url, headers=headers, timeout=10) + assert isinstance(result, requests.Response) + assert result.status_code == 200 diff --git a/openbb_platform/extensions/fixedincome/integration/test_fixedincome_python.py b/openbb_platform/extensions/fixedincome/integration/test_fixedincome_python.py index 433b96a3d8f..6058c18ecc9 100644 --- a/openbb_platform/extensions/fixedincome/integration/test_fixedincome_python.py +++ b/openbb_platform/extensions/fixedincome/integration/test_fixedincome_python.py @@ -647,3 +647,28 @@ def test_fixedincome_bond_indices(params, obb): assert result assert isinstance(result, OBBject) assert len(result.results) > 0 + + +@parametrize( + "params", + [ + { + "provider": "fred", + "index": "usda_30y,fha_30y", + "start_date": "2023-05-31", + "end_date": "2024-06-01", + "transform": None, + "frequency": None, + "aggregation_method": "avg", + }, + ], +) +@pytest.mark.integration +def test_fixedincome_mortgage_indices(params, obb): + """Test the mortgage indices endpoint.""" + params = {p: v for p, v in params.items() if v} + + result = obb.fixedincome.mortgage_indices(**params) + assert result + assert isinstance(result, OBBject) + assert len(result.results) > 0 diff --git a/openbb_platform/extensions/fixedincome/openbb_fixedincome/fixedincome_router.py b/openbb_platform/extensions/fixedincome/openbb_fixedincome/fixedincome_router.py index fb346dd3cc3..f7d62a1b16b 100644 --- a/openbb_platform/extensions/fixedincome/openbb_fixedincome/fixedincome_router.py +++ b/openbb_platform/extensions/fixedincome/openbb_fixedincome/fixedincome_router.py @@ -81,3 +81,29 @@ async def bond_indices( ) -> OBBject: # type: ignore """Bond Indices.""" return await OBBject.from_query(Query(**locals())) + + +@router.command( + model="MortgageIndices", + examples=[ + APIEx( + description="The default state for FRED are the primary mortgage indices from Optimal Blue.", + parameters={"provider": "fred"}, + ), + APIEx( + description="Multiple indices can be requested.", + parameters={ + "index": "jumbo_30y,conforming_30y,conforming_15y", + "provider": "fred", + }, + ), + ], +) +async def mortgage_indices( + cc: CommandContext, + provider_choices: ProviderChoices, + standard_params: StandardParams, + extra_params: ExtraParams, +) -> OBBject: # type: ignore + """Mortgage Indices.""" + return await OBBject.from_query(Query(**locals())) |