diff options
author | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-06-14 18:04:59 -0700 |
---|---|---|
committer | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-06-14 18:04:59 -0700 |
commit | acec71ba2d17a04440a8db403cb92cb5f9b8f305 (patch) | |
tree | b829f5ed6c7e119a4e9c335650c95ace0c13a75c | |
parent | 4d8e6eee9d792915b6ef54a7d040d25b5c8f6e04 (diff) |
test cassettes and static assets
6 files changed, 6848 insertions, 6071 deletions
diff --git a/openbb_platform/openbb/assets/reference.json b/openbb_platform/openbb/assets/reference.json index 7b5bf13451f..796ed92303d 100644 --- a/openbb_platform/openbb/assets/reference.json +++ b/openbb_platform/openbb/assets/reference.json @@ -1213,6 +1213,101 @@ "default": null, "optional": true, "choices": null + }, + { + "name": "option_type", + "type": "Literal[None, Union[ForwardRef('call'), ForwardRef('put')]]", + "description": "The option type, call or put, 'None' is both (default).", + "default": null, + "optional": true, + "choices": [ + "call", + "put" + ] + }, + { + "name": "moneyness", + "type": "Literal['otm', 'itm', 'all']", + "description": "Return only contracts that are in or out of the money, default is 'all'. Parameter is ignored when a date is supplied.", + "default": "all", + "optional": true, + "choices": [ + "otm", + "itm", + "all" + ] + }, + { + "name": "strike_gt", + "type": "int", + "description": "Return options with a strike price greater than the given value. Parameter is ignored when a date is supplied.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "strike_lt", + "type": "int", + "description": "Return options with a strike price less than the given value. Parameter is ignored when a date is supplied.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "volume_gt", + "type": "int", + "description": "Return options with a volume greater than the given value. Parameter is ignored when a date is supplied.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "volume_lt", + "type": "int", + "description": "Return options with a volume less than the given value. Parameter is ignored when a date is supplied.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "oi_gt", + "type": "int", + "description": "Return options with an open interest greater than the given value. Parameter is ignored when a date is supplied.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "oi_lt", + "type": "int", + "description": "Return options with an open interest less than the given value. Parameter is ignored when a date is supplied.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "model", + "type": "Literal['black_scholes', 'bjerk']", + "description": "The pricing model to use for options chains data, default is 'black_scholes'. Parameter is ignored when a date is supplied.", + "default": "black_scholes", + "optional": true, + "choices": null + }, + { + "name": "show_extended_price", + "type": "bool", + "description": "Whether to include OHLC type fields, default is True. Parameter is ignored when a date is supplied.", + "default": true, + "optional": true, + "choices": null + }, + { + "name": "include_related_symbols", + "type": "bool", + "description": "Include related symbols that end in a 1 or 2 because of a corporate action, default is False.", + "default": false, + "optional": true, + "choices": null } ], "yfinance": [] @@ -1249,9 +1344,17 @@ "data": { "standard": [ { - "name": "symbol", + "name": "underlying_symbol", "type": "str", - "description": "Symbol representing the entity requested in the data. Here, it is the underlying symbol for the option.", + "description": "Underlying symbol for the option.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "underlying_price", + "type": "float", + "description": "Price of the underlying stock.", "default": null, "optional": true, "choices": null @@ -1281,6 +1384,14 @@ "choices": null }, { + "name": "dte", + "type": "int", + "description": "Days to expiration of the contract.", + "default": null, + "optional": true, + "choices": null + }, + { "name": "strike", "type": "float", "description": "Strike price of the contract.", @@ -1300,7 +1411,7 @@ "name": "open_interest", "type": "int", "description": "Open interest on the contract.", - "default": null, + "default": 0, "optional": true, "choices": null }, @@ -1308,7 +1419,7 @@ "name": "volume", "type": "int", "description": "The trading volume.", - "default": null, + "default": 0, "optional": true, "choices": null }, @@ -1329,6 +1440,22 @@ "choices": null }, { + "name": "last_trade_size", + "type": "int", + "description": "Last trade size of the option.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "last_trade_time", + "type": "datetime", + "description": "The timestamp of the last trade.", + "default": null, + "optional": true, + "choices": null + }, + { "name": "tick", "type": "str", "description": "Whether the last tick was up or down in price.", @@ -1353,6 +1480,22 @@ "choices": null }, { + "name": "bid_time", + "type": "datetime", + "description": "The timestamp of the bid price.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "bid_exchange", + "type": "str", + "description": "The exchange of the bid price.", + "default": null, + "optional": true, + "choices": null + }, + { "name": "ask", "type": "float", "description": "Current ask price for the option.", @@ -1369,6 +1512,22 @@ "choices": null }, { + "name": "ask_time", + "type": "datetime", + "description": "The timestamp of the ask price.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "ask_exchange", + "type": "str", + "description": "The exchange of the ask price.", + "default": null, + "optional": true, + "choices": null + }, + { "name": "mark", "type": "float", "description": "The mid-price between the latest bid and ask.", @@ -1539,7 +1698,7 @@ { "name": "change_percent", "type": "float", - "description": "Change, in normalizezd percentage points, of the option.", + "description": "Change, in normalized percentage points, of the option.", "default": null, "optional": true, "choices": null @@ -1593,26 +1752,9 @@ "choices": null } ], - "intrinio": [ - { - "name": "exercise_style", - "type": "str", - "description": "The exercise style of the option, American or European.", - "default": null, - "optional": true, - "choices": null - } - ], + "intrinio": [], "yfinance": [ { - "name": "dte", - "type": "int", - "description": "Days to expiration.", - "default": null, - "optional": true, - "choices": null - }, - { "name": "in_the_money", "type": "bool", "description": "Whether the option is in the money.", @@ -1621,9 +1763,9 @@ "choices": null }, { - "name": "last_trade_timestamp", - "type": "datetime", - "description": "Timestamp for when the option was last traded.", + "name": "currency", + "type": "str", + "description": "Currency of the option.", "default": null, "optional": true, "choices": null diff --git a/openbb_platform/openbb/package/derivatives_options.py b/openbb_platform/openbb/package/derivatives_options.py index 01765d5355a..cc7bea84974 100644 --- a/openbb_platform/openbb/package/derivatives_options.py +++ b/openbb_platform/openbb/package/derivatives_options.py @@ -42,6 +42,28 @@ class ROUTER_derivatives_options(Container): The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio, yfinance. date : Optional[datetime.date] The end-of-day date for options chains data. (provider: intrinio) + option_type : Literal[None, Union[ForwardRef('call'), ForwardRef('put')]] + The option type, call or put, 'None' is both (default). (provider: intrinio) + moneyness : Literal['otm', 'itm', 'all'] + Return only contracts that are in or out of the money, default is 'all'. Parameter is ignored when a date is supplied. (provider: intrinio) + strike_gt : Optional[int] + Return options with a strike price greater than the given value. Parameter is ignored when a date is supplied. (provider: intrinio) + strike_lt : Optional[int] + Return options with a strike price less than the given value. Parameter is ignored when a date is supplied. (provider: intrinio) + volume_gt : Optional[int] + Return options with a volume greater than the given value. Parameter is ignored when a date is supplied. (provider: intrinio) + volume_lt : Optional[int] + Return options with a volume less than the given value. Parameter is ignored when a date is supplied. (provider: intrinio) + oi_gt : Optional[int] + Return options with an open interest greater than the given value. Parameter is ignored when a date is supplied. (provider: intrinio) + oi_lt : Optional[int] + Return options with an open interest less than the given value. Parameter is ignored when a date is supplied. (provider: intrinio) + model : Literal['black_scholes', 'bjerk'] + The pricing model to use for options chains data, default is 'black_scholes'. Parameter is ignored when a date is supplied. (provider: intrinio) + show_extended_price : bool + Whether to include OHLC type fields, default is True. Parameter is ignored when a date is supplied. (provider: intrinio) + include_related_symbols : bool + Include related symbols that end in a 1 or 2 because of a corporate action, default is False. (provider: intrinio) Returns ------- @@ -59,14 +81,18 @@ class ROUTER_derivatives_options(Container): OptionsChains ------------- - symbol : Optional[str] - Symbol representing the entity requested in the data. Here, it is the underlying symbol for the option. + underlying_symbol : Optional[str] + Underlying symbol for the option. + underlying_price : Optional[float] + Price of the underlying stock. contract_symbol : str Contract symbol for the option. eod_date : Optional[date] Date for which the options chains are returned. expiration : date Expiration date of the contract. + dte : Optional[int] + Days to expiration of the contract. strike : float Strike price of the contract. option_type : str @@ -79,16 +105,28 @@ class ROUTER_derivatives_options(Container): Theoretical value of the option. last_trade_price : Optional[float] Last trade price of the option. + last_trade_size : Optional[int] + Last trade size of the option. + last_trade_time : Optional[datetime] + The timestamp of the last trade. tick : Optional[str] Whether the last tick was up or down in price. bid : Optional[float] Current bid price for the option. bid_size : Optional[int] Bid size for the option. + bid_time : Optional[datetime] + The timestamp of the bid price. + bid_exchange : Optional[str] + The exchange of the bid price. ask : Optional[float] Current ask price for the option. ask_size : Optional[int] Ask size for the option. + ask_time : Optional[datetime] + The timestamp of the ask price. + ask_exchange : Optional[str] + The exchange of the ask price. mark : Optional[float] The mid-price between the latest bid and ask. open : Optional[float] @@ -132,7 +170,7 @@ class ROUTER_derivatives_options(Container): change : Optional[float] The change in the price of the option. change_percent : Optional[float] - Change, in normalizezd percentage points, of the option. + Change, in normalized percentage points, of the option. implied_volatility : Optional[float] Implied volatility of the option. delta : Optional[float] @@ -145,14 +183,10 @@ class ROUTER_derivatives_options(Container): Vega of the option. rho : Optional[float] Rho of the option. - exercise_style : Optional[str] - The exercise style of the option, American or European. (provider: intrinio) - dte : Optional[int] - Days to expiration. (provider: yfinance) in_the_money : Optional[bool] Whether the option is in the money. (provider: yfinance) - last_trade_timestamp : Optional[datetime] - Timestamp for when the option was last traded. (provider: yfinance) + currency : Optional[str] + Currency of the option. (provider: yfinance) Examples -------- diff --git a/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_options_chains_fetcher.yaml b/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_options_chains_fetcher.yaml index 1bafb9f775d..b7eef521956 100644 --- a/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_options_chains_fetcher.yaml +++ b/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_options_chains_fetcher.yaml @@ -9,13 +9,15 @@ interactions: Connection: - keep-alive method: GET - uri: https://api-v2.intrinio.com/options/expirations/AAPL/eod?after=2023-09-15&api_key=MOCK_API_KEY + uri: https://api-v2.intrinio.com/options/expirations/AAPL/eod?after=2023-09-14&api_key=MOCK_API_KEY response: body: string: !!binary | - H4sIABTfgWUAA0zQMQ7CMAwF0LtkxtK36yaEqyAGBoYugIABCXF3kpZYf3yyv+3kky7v+/I4v5bb - 9ZkOx2SwLFDRnHYds6iJ1gFURhZDoGXKBu+ZUfGeIZQY4OsADThXJtE5YHGO9z3GoEyDEfAfMK3n - VIYRlNuwZ2igLXXCeOkGEDAFIFYYICi3IQ/0r6oMS6fvDwAA//8DAKERWVGkAQAA + H4sIAADobGYAA0zSMU7EMBBG4bukxtL8Y8dJuAqioKDYhl0BBRLi7tixPHnlp4zsp4l/l/efx+3z + 7ft2//hanl8WN69JnrQvTwNWCSXVgfUcOybsIGpyC+TkCrQDtoHSD5hjDe3LGrC4tPSjrzHbo+CE + eWBLXoGZM8Axi3t66E4IUAEsqm1NWYAXQByTAZYDhaGFoYWhhaGZoQ0OiGPGMbtC264zgCV62zBx + HS2GiqFiqCI0n//0IBwQx2bogAKKjZ6YGx0wYG409+fiG2GAOGZ1or+qg3Cghb7+/QMAAP//AwAb + QEJ4HQMAAA== headers: Connection: - keep-alive @@ -24,7 +26,7 @@ interactions: Content-Type: - application/json Date: - - Tue, 19 Dec 2023 18:21:08 GMT + - Sat, 15 Jun 2024 01:01:52 GMT Transfer-Encoding: - chunked Vary: @@ -42,193 +44,383 @@ interactions: Connection: - keep-alive method: GET - uri: https://api-v2.intrinio.com/options/chain/AAPL/2024-03-15/eod?api_key=MOCK_API_KEY&date=2023-09-15 + uri: https://api-v2.intrinio.com/options/chain/AAPL/2024-04-05/eod?api_key=MOCK_API_KEY&date=2023-09-15&include_related_symbols=False response: body: string: !!binary | - H4sIABTfgWUAA7ydS49cubHnv4vW1gEjGHzV7mK2d+GFVzMYGJpuwRasdje65TvjMfzdhzwPMiLI - yuRh9kgwjJYqk1lZ+at/MN7/+vDDXz99+fuHt//xrw8///Lty8/5P//14Yeff/z84e3Df/zHH/8T - yVhw/83k/zf5z4c/fPj25Ye/ff71/HL+++f/88uXXz8dT/2ABumjsR/B5a/89u3XL3/LB+WnbiY/ - 8Z+/lFN/+PT164d//+HDL79++eHzb+Xlfvz07fPxXPvRpOO5P3z9+bf8j/mJ/vzLn3/78n/zv8D1 - 129ffpLP+hOEN0pvCJv3+N+vM/78v778uJ/j2D9cZxnD/3FwYnpz+X+wgbXtxE+//U1+Z/kfrhOd - 5f/4/MT/+vnrP3463tbPv3z++3Vu+e/6Oun8+/VO7Pn3L3//9vnXz799y8+OMR/w1y9/+ev1hK8/ - /+/rrJ8+/Xqc4/KPoHxX/HHl7+yx5cdQv3z+/fqyLZ/1519/+FI+i2///Lojkt/Cl59++frl849/ - zm8lY/D1y7d/lodjgvwt/fj567dP+7ONg3zAXz799NP5d0P569/++rl8/WP5B3Ax/zw+/+X4OkQM - //73H55iadaxNL8jlkTuIZgmvQFtBsMUmDSDJcEWU+iwBNdj6XCKStoQkFMZnHnAZVRcUs8lWHrK - JUgqIdyikm5SScELLGOIEkvvJJboEsMSk53BEtMylvmpL2AZJJb2AZTxzcQ3dFsIrofS91D6MCuW - xvViGXoqyUxRaTdHwKm0jMkgmQRQTLqOSSTbkCyPv0gKTCq9ewxlUFAGCaW7B6Wn6ASU5eU5k84r - qeRKiejsDJLRLSMZ3e+HJJj3mKQ/gctC+oY2/1qbnsmwKJQubjamHsk4sN8xTTFZT6z22zyAEp9C - Cc6Fi8q//+Pr15PK4z8rlcEZ/kcLJ0pGo2I0vsao8VI4g2LUk9LN8v01SPMbnIJ0XTfjK7oZFaTu - XUoPBtxbvj2ENDDnA0o9zionDJQz9ZjaOUr9RiBvmc4zTKPC1CpMfYcpJXbNLI+/YEqM0qiwtI+x - TBJLfw9LZxNJe66vmUFdMxEEl4GmuAzr4hleEc8kucSHVNJ+h0vGTtlzmnN+MCPdOz8wEM9Je14P - vKgkxmRSTJJiMgx8n/K6lTYaQnlp4/UwJZVJMgkvKaULNnIkAbxCMilzni+VDEkbHE0huS6V4QWp - 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 |