summaryrefslogtreecommitdiffstats
path: root/openbb_platform/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'openbb_platform/extensions')
-rw-r--r--openbb_platform/extensions/derivatives/integration/test_derivatives_api.py37
-rw-r--r--openbb_platform/extensions/derivatives/integration/test_derivatives_python.py34
-rw-r--r--openbb_platform/extensions/derivatives/openbb_derivatives/options/options_router.py18
-rw-r--r--openbb_platform/extensions/fixedincome/integration/test_fixedincome_api.py26
-rw-r--r--openbb_platform/extensions/fixedincome/integration/test_fixedincome_python.py25
-rw-r--r--openbb_platform/extensions/fixedincome/openbb_fixedincome/fixedincome_router.py26
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()))