Merge branch 'develop' into feature/charting-obbject

This commit is contained in:
Henrique Joaquim
2024-01-10 12:14:07 +00:00
committed by GitHub
211 changed files with 143163 additions and 233133 deletions

View File

@@ -68,6 +68,11 @@ jobs:
poetry run python openbb_platform/dev_install.py -e all poetry run python openbb_platform/dev_install.py -e all
pip uninstall nbmake -y pip uninstall nbmake -y
poetry run python website/generate_platform_v4_markdown.py poetry run python website/generate_platform_v4_markdown.py
- name: Generate Excel Docs
run: |
source .venv/bin/activate
poetry run python website/generate_excel_markdown.py
- name: Generate Widgets Library - name: Generate Widgets Library
run: | run: |

View File

@@ -245,6 +245,7 @@ class ProviderInterface(metaclass=SingletonMeta):
title=provider_name, title=provider_name,
description=description, description=description,
alias=field.alias or None, alias=field.alias or None,
json_schema_extra=field.json_schema_extra,
) )
elif provider_name: elif provider_name:
default: FieldInfo = Field( default: FieldInfo = Field(
@@ -257,6 +258,7 @@ class ProviderInterface(metaclass=SingletonMeta):
) )
if alias_dict.get(name, []) if alias_dict.get(name, [])
else None, else None,
json_schema_extra=field.json_schema_extra,
) )
return DataclassField(new_name, type_, default) return DataclassField(new_name, type_, default)
@@ -479,6 +481,7 @@ class ProviderInterface(metaclass=SingletonMeta):
fields.update(extra.model_fields) fields.update(extra.model_fields)
fields_dict: Dict[str, Tuple[Any, Any]] = {} fields_dict: Dict[str, Tuple[Any, Any]] = {}
for name, field in fields.items(): for name, field in fields.items():
fields_dict[name] = ( fields_dict[name] = (
field.annotation, field.annotation,
@@ -488,6 +491,7 @@ class ProviderInterface(metaclass=SingletonMeta):
description=field.description, description=field.description,
alias=field.alias, alias=field.alias,
validation_alias=field.validation_alias, validation_alias=field.validation_alias,
json_schema_extra=field.json_schema_extra,
), ),
) )

View File

@@ -18,7 +18,7 @@ class EquityQuoteQueryParams(QueryParams):
symbol: str = Field( symbol: str = Field(
description=QUERY_DESCRIPTIONS.get("symbol", "") description=QUERY_DESCRIPTIONS.get("symbol", "")
+ " In this case, the comma separated list of symbols." + " This endpoint will accept multiple symbols separated by commas."
) )
@field_validator("symbol", mode="before", check_fields=False) @field_validator("symbol", mode="before", check_fields=False)
@@ -33,14 +33,125 @@ class EquityQuoteQueryParams(QueryParams):
class EquityQuoteData(Data): class EquityQuoteData(Data):
"""Equity Quote Data.""" """Equity Quote Data."""
day_low: Optional[float] = Field( symbol: str = Field(description=DATA_DESCRIPTIONS.get("symbol", ""))
asset_type: Optional[str] = Field(
default=None, description="Type of asset - i.e, stock, ETF, etc."
)
name: Optional[str] = Field(
default=None, description="Name of the company or asset."
)
exchange: Optional[str] = Field(
default=None, default=None,
description="Lowest price of the stock in the current trading day.", description="The name or symbol of the venue where the data is from.",
) )
day_high: Optional[float] = Field( bid: Optional[float] = Field(
default=None, description="Price of the top bid order."
)
bid_size: Optional[int] = Field(
default=None, default=None,
description="Highest price of the stock in the current trading day.", description="This represents the number of round lot orders at the given price."
+ " The normal round lot size is 100 shares."
+ " A size of 2 means there are 200 shares available at the given price.",
) )
date: Optional[datetime] = Field( bid_exchange: Optional[str] = Field(
description=DATA_DESCRIPTIONS.get("date", ""), default=None default=None,
description="The specific trading venue where the purchase order was placed.",
)
ask: Optional[float] = Field(
default=None, description="Price of the top ask order."
)
ask_size: Optional[int] = Field(
default=None,
description="This represents the number of round lot orders at the given price."
+ " The normal round lot size is 100 shares."
+ " A size of 2 means there are 200 shares available at the given price.",
)
ask_exchange: Optional[str] = Field(
default=None,
description="The specific trading venue where the sale order was placed.",
)
quote_conditions: Optional[Union[str, int, List[str], List[int]]] = Field(
default=None,
description="Conditions or condition codes applicable to the quote.",
)
quote_indicators: Optional[Union[str, int, List[str], List[int]]] = Field(
default=None,
description="Indicators or indicator codes applicable to the participant"
+ " quote related to the price bands for the issue, or the affect the quote has"
+ " on the NBBO.",
)
sales_conditions: Optional[Union[str, int, List[str], List[int]]] = Field(
default=None,
description="Conditions or condition codes applicable to the sale.",
)
sequence_number: Optional[int] = Field(
default=None,
description="The sequence number represents the sequence in which message events happened."
+ " These are increasing and unique per ticker symbol,"
+ " but will not always be sequential (e.g., 1, 2, 6, 9, 10, 11).",
)
market_center: Optional[str] = Field(
default=None,
description="The ID of the UTP participant that originated the message.",
)
participant_timestamp: Optional[datetime] = Field(
default=None,
description="Timestamp for when the quote was generated by the exchange.",
)
trf_timestamp: Optional[datetime] = Field(
default=None,
description="Timestamp for when the TRF (Trade Reporting Facility) received the message.",
)
sip_timestamp: Optional[datetime] = Field(
default=None,
description="Timestamp for when the SIP (Security Information Processor)"
+ " received the message from the exchange.",
)
last_price: Optional[float] = Field(
default=None, description="Price of the last trade."
)
last_tick: Optional[str] = Field(
default=None, description="Whether the last sale was an up or down tick."
)
last_size: Optional[int] = Field(
default=None, description="Size of the last trade."
)
last_timestamp: Optional[datetime] = Field(
default=None, description="Date and Time when the last price was recorded."
)
open: Optional[float] = Field(
default=None, description=DATA_DESCRIPTIONS.get("open", "")
)
high: Optional[float] = Field(
default=None, description=DATA_DESCRIPTIONS.get("high", "")
)
low: Optional[float] = Field(
default=None, description=DATA_DESCRIPTIONS.get("low", "")
)
close: Optional[float] = Field(
default=None, description=DATA_DESCRIPTIONS.get("close", "")
)
volume: Optional[Union[int, float]] = Field(
default=None, description=DATA_DESCRIPTIONS.get("volume", "")
)
exchange_volume: Optional[Union[int, float]] = Field(
default=None,
description="Volume of shares exchanged during the trading day on the specific exchange.",
)
prev_close: Optional[float] = Field(
default=None, description=DATA_DESCRIPTIONS.get("prev_close", "")
)
change: Optional[float] = Field(
default=None, description="Change in price from previous close."
)
change_percent: Optional[float] = Field(
default=None,
description="Change in price as a normalized percentage.",
json_schema_extra={"x-frontendmultiply": 100},
)
year_high: Optional[float] = Field(
default=None, description="The one year high (52W High)."
)
year_low: Optional[float] = Field(
default=None, description="The one year low (52W Low)."
) )

View File

@@ -1,18 +1,19 @@
"""Revenue by Business Line Standard Model.""" """Revenue by Business Line Standard Model."""
import warnings
from datetime import date as dateType from datetime import date as dateType
from typing import Dict, List, Literal, Set, Union from typing import Dict, Literal, Optional
from pydantic import Field, field_validator from pydantic import Field, field_validator
from openbb_core.provider.abstract.data import Data, ForceInt from openbb_core.provider.abstract.data import Data, ForceInt
from openbb_core.provider.abstract.query_params import QueryParams from openbb_core.provider.abstract.query_params import QueryParams
from openbb_core.provider.utils.descriptions import ( from openbb_core.provider.utils.descriptions import (
DATA_DESCRIPTIONS,
QUERY_DESCRIPTIONS, QUERY_DESCRIPTIONS,
) )
_warn = warnings.warn
class RevenueBusinessLineQueryParams(QueryParams): class RevenueBusinessLineQueryParams(QueryParams):
"""Revenue by Business Line Query.""" """Revenue by Business Line Query."""
@@ -26,17 +27,29 @@ class RevenueBusinessLineQueryParams(QueryParams):
) # should always be flat ) # should always be flat
@field_validator("symbol", mode="before", check_fields=False) @field_validator("symbol", mode="before", check_fields=False)
def upper_symbol(cls, v: Union[str, List[str], Set[str]]): @classmethod
def upper_symbol(cls, v: str):
"""Convert symbol to uppercase.""" """Convert symbol to uppercase."""
if isinstance(v, str): if "," in v:
return v.upper() _warn(
return ",".join([symbol.upper() for symbol in list(v)]) f"{QUERY_DESCRIPTIONS.get('symbol_list_warning', '')} {v.split(',')[0].upper()}"
)
return v.split(",")[0].upper() if "," in v else v.upper()
class RevenueBusinessLineData(Data): class RevenueBusinessLineData(Data):
"""Revenue by Business Line Data.""" """Revenue by Business Line Data."""
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", "")) period_ending: dateType = Field(description="The end date of the reporting period.")
business_line: Dict[str, ForceInt] = Field( fiscal_period: Optional[str] = Field(
description="Day level data containing the revenue of the business line." default=None, description="The fiscal period of the reporting period."
)
fiscal_year: Optional[int] = Field(
default=None, description="The fiscal year of the reporting period."
)
filing_date: Optional[dateType] = Field(
default=None, description="The filing date of the report."
)
business_line: Dict[str, ForceInt] = Field(
description="Dictionary containing the revenue of the business line."
) )

View File

@@ -1,18 +1,19 @@
"""Revenue by Geographic Segments Standard Model.""" """Revenue by Geographic Segments Standard Model."""
import warnings
from datetime import date as dateType from datetime import date as dateType
from typing import Dict, List, Literal, Optional, Set, Union from typing import Dict, Literal, Optional
from pydantic import Field, field_validator from pydantic import Field, field_validator
from openbb_core.provider.abstract.data import Data, ForceInt from openbb_core.provider.abstract.data import Data, ForceInt
from openbb_core.provider.abstract.query_params import QueryParams from openbb_core.provider.abstract.query_params import QueryParams
from openbb_core.provider.utils.descriptions import ( from openbb_core.provider.utils.descriptions import (
DATA_DESCRIPTIONS,
QUERY_DESCRIPTIONS, QUERY_DESCRIPTIONS,
) )
_warn = warnings.warn
class RevenueGeographicQueryParams(QueryParams): class RevenueGeographicQueryParams(QueryParams):
"""Revenue by Geographic Segments Query.""" """Revenue by Geographic Segments Query."""
@@ -27,32 +28,28 @@ class RevenueGeographicQueryParams(QueryParams):
@field_validator("symbol", mode="before", check_fields=False) @field_validator("symbol", mode="before", check_fields=False)
@classmethod @classmethod
def upper_symbol(cls, v: Union[str, List[str], Set[str]]): def upper_symbol(cls, v: str):
"""Convert symbol to uppercase.""" """Convert symbol to uppercase."""
if isinstance(v, str): if "," in v:
return v.upper() _warn(
return ",".join([symbol.upper() for symbol in list(v)]) f"{QUERY_DESCRIPTIONS.get('symbol_list_warning', '')} {v.split(',')[0].upper()}"
)
return v.split(",")[0].upper() if "," in v else v.upper()
class RevenueGeographicData(Data): class RevenueGeographicData(Data):
"""Revenue by Geographic Segments Data.""" """Revenue by Geographic Segments Data."""
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", "")) period_ending: dateType = Field(description="The end date of the reporting period.")
fiscal_period: Optional[str] = Field(
default=None, description="The fiscal period of the reporting period."
)
fiscal_year: Optional[int] = Field(
default=None, description="The fiscal year of the reporting period."
)
filing_date: Optional[dateType] = Field(
default=None, description="The filing date of the report."
)
geographic_segment: Dict[str, ForceInt] = Field( geographic_segment: Dict[str, ForceInt] = Field(
description="Day level data containing the revenue of the geographic segment." description="Dictionary of the revenue by geographic segment."
)
americas: Optional[ForceInt] = Field(
default=None, description="Revenue from the the American segment."
)
europe: Optional[ForceInt] = Field(
default=None, description="Revenue from the the European segment."
)
greater_china: Optional[ForceInt] = Field(
default=None, description="Revenue from the the Greater China segment."
)
japan: Optional[ForceInt] = Field(
default=None, description="Revenue from the the Japan segment."
)
rest_of_asia_pacific: Optional[ForceInt] = Field(
default=None, description="Revenue from the the Rest of Asia Pacific segment."
) )

View File

@@ -2,6 +2,7 @@
from datetime import date as dateType from datetime import date as dateType
from typing import Optional
from pydantic import Field from pydantic import Field
@@ -17,6 +18,11 @@ class TrailingDivYieldQueryParams(QueryParams):
"""Trailing Dividend Yield Query.""" """Trailing Dividend Yield Query."""
symbol: str = Field(default=None, description=QUERY_DESCRIPTIONS.get("symbol", "")) symbol: str = Field(default=None, description=QUERY_DESCRIPTIONS.get("symbol", ""))
limit: Optional[int] = Field(
default=252,
description=f"{QUERY_DESCRIPTIONS.get('limit', '')}"
" Default is 252, the number of trading days in a year.",
)
class TrailingDivYieldData(Data): class TrailingDivYieldData(Data):

View File

@@ -1102,7 +1102,9 @@ def test_equity_price_quote(params, headers):
"params", "params",
[ [
({"symbol": "AAPL", "provider": "cboe"}), ({"symbol": "AAPL", "provider": "cboe"}),
({"provider": "intrinio", "symbol": "AAPL"}), ({"symbol": "MSFT", "provider": "intrinio"}),
({"symbol": "AAPL,MSFT", "provider": "cboe"}),
({"symbol": "AAPL,MSFT", "provider": "intrinio"}),
], ],
) )
@pytest.mark.integration @pytest.mark.integration
@@ -1442,7 +1444,7 @@ def test_equity_fundamental_historical_eps(params, headers):
@parametrize( @parametrize(
"params", "params",
[({"provider": "tiingo", "symbol": "AAPL"})], [({"provider": "tiingo", "symbol": "AAPL", "limit": 10})],
) )
@pytest.mark.integration @pytest.mark.integration
def test_equity_fundamental_trailing_dividend_yield(params, headers): def test_equity_fundamental_trailing_dividend_yield(params, headers):

View File

@@ -1049,7 +1049,9 @@ def test_equity_price_quote(params, obb):
"params", "params",
[ [
({"symbol": "AAPL", "provider": "cboe"}), ({"symbol": "AAPL", "provider": "cboe"}),
({"provider": "intrinio", "symbol": "AAPL"}), ({"symbol": "MSFT", "provider": "intrinio"}),
({"symbol": "AAPL,MSFT", "provider": "cboe"}),
({"symbol": "AAPL,MSFT", "provider": "intrinio"}),
], ],
) )
@pytest.mark.integration @pytest.mark.integration
@@ -1361,7 +1363,7 @@ def test_equity_fundamental_historical_eps(params, obb):
@parametrize( @parametrize(
"params", "params",
[({"provider": "tiingo", "symbol": "AAPL"})], [({"provider": "tiingo", "symbol": "AAPL", "limit": 10})],
) )
@pytest.mark.integration @pytest.mark.integration
def test_equity_fundamental_trailing_dividend_yield(params, obb): def test_equity_fundamental_trailing_dividend_yield(params, obb):

View File

@@ -241,7 +241,7 @@ class ROUTER_equity(Container):
Returns Returns
------- -------
OBBject OBBject
results : EquityInfo results : List[EquityInfo]
Serializable results. Serializable results.
provider : Optional[Literal['intrinio']] provider : Optional[Literal['intrinio']]
Provider name. Provider name.

View File

@@ -5,7 +5,12 @@ from datetime import datetime
from typing import Any, Dict, List, Literal, Optional from typing import Any, Dict, List, Literal, Optional
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from openbb_alpha_vantage.utils.helpers import extract_key_name, get_data, get_interval from openbb_alpha_vantage.utils.helpers import (
extract_key_name,
filter_by_dates,
get_data,
get_interval,
)
from openbb_core.provider.abstract.fetcher import Fetcher from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_historical import ( from openbb_core.provider.standard_models.equity_historical import (
EquityHistoricalData, EquityHistoricalData,
@@ -171,6 +176,7 @@ class AVEquityHistoricalFetcher(
return data[dynamic_key] return data[dynamic_key]
# pylint: disable=unused-argument
@staticmethod @staticmethod
def transform_data( def transform_data(
query: AVEquityHistoricalQueryParams, data: Dict, **kwargs: Any query: AVEquityHistoricalQueryParams, data: Dict, **kwargs: Any
@@ -180,5 +186,6 @@ class AVEquityHistoricalFetcher(
{"date": date, **{extract_key_name(k): v for k, v in values.items()}} {"date": date, **{extract_key_name(k): v for k, v in values.items()}}
for date, values in data.items() for date, values in data.items()
] ]
data = filter_by_dates(data, query.start_date, query.end_date)
return [AVEquityHistoricalData.model_validate(d) for d in data] return [AVEquityHistoricalData.model_validate(d) for d in data]

View File

@@ -2,8 +2,9 @@
import json import json
import re import re
from datetime import datetime
from io import StringIO from io import StringIO
from typing import Any, List, Optional, TypeVar, Union from typing import Any, Dict, List, Optional, TypeVar, Union
import requests import requests
from openbb_core.provider import helpers from openbb_core.provider import helpers
@@ -149,7 +150,6 @@ def get_data_one(url: str, **kwargs: Any) -> dict:
def get_interval(value: str) -> str: def get_interval(value: str) -> str:
"""Get the intervals for the Alpha Vantage API.""" """Get the intervals for the Alpha Vantage API."""
intervals = { intervals = {
"m": "min", "m": "min",
"d": "day", "d": "day",
@@ -164,3 +164,17 @@ def extract_key_name(key):
"""Extract the alphabetical part of the key using regex.""" """Extract the alphabetical part of the key using regex."""
match = re.search(r"\d+\.\s+([a-z]+)", key, re.I) match = re.search(r"\d+\.\s+([a-z]+)", key, re.I)
return match.group(1) if match else key return match.group(1) if match else key
def filter_by_dates(
data: List[Dict[str, Any]], start_date: datetime, end_date: datetime
) -> List[Dict[str, Any]]:
"""Filter the data by start and end dates."""
return list(
filter(
lambda x: start_date
<= datetime.strptime(x["date"], "%Y-%m-%d").date()
<= end_date,
data,
)
)

View File

@@ -100,4 +100,12 @@ class FMPCurrencyHistoricalFetcher(
query: FMPCurrencyHistoricalQueryParams, data: List[Dict], **kwargs: Any query: FMPCurrencyHistoricalQueryParams, data: List[Dict], **kwargs: Any
) -> List[FMPCurrencyHistoricalData]: ) -> List[FMPCurrencyHistoricalData]:
"""Return the transformed data.""" """Return the transformed data."""
# pylint: disable=unused-argument
data = [
d
for d in data
if d.get("vwap") != 0
and d.get("change") != 0
and d.get("changeOverTime") != 0
]
return [FMPCurrencyHistoricalData.model_validate(d) for d in data] return [FMPCurrencyHistoricalData.model_validate(d) for d in data]

View File

@@ -1,7 +1,7 @@
"""FMP Equity Quote Model.""" """FMP Equity Quote Model."""
from datetime import datetime from datetime import datetime, timezone
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional, Union
from openbb_core.provider.abstract.data import ForceInt from openbb_core.provider.abstract.data import ForceInt
from openbb_core.provider.abstract.fetcher import Fetcher from openbb_core.provider.abstract.fetcher import Fetcher
@@ -27,71 +27,58 @@ class FMPEquityQuoteData(EquityQuoteData):
__alias_dict__ = { __alias_dict__ = {
"price_avg50": "priceAvg50", "price_avg50": "priceAvg50",
"price_avg200": "priceAvg200", "price_avg200": "priceAvg200",
"date": "timestamp", "last_timestamp": "timestamp",
"high": "dayHigh",
"low": "dayLow",
"last_price": "price",
"change_percent": "changesPercentage",
"prev_close": "previousClose",
} }
price_avg50: Optional[float] = Field(
symbol: Optional[str] = Field(default=None, description="Symbol of the company.") default=None, description="50 day moving average price."
name: Optional[str] = Field(default=None, description="Name of the company.")
price: Optional[float] = Field(
default=None, description="Current trading price of the equity."
) )
changes_percentage: Optional[float] = Field( price_avg200: Optional[float] = Field(
default=None, description="Change percentage of the equity price." default=None, description="200 day moving average price."
) )
change: Optional[float] = Field( avg_volume: Optional[ForceInt] = Field(
default=None, description="Change in the equity price." default=None,
) description="Average volume over the last 10 trading days.",
year_high: Optional[float] = Field(
default=None, description="Highest price of the equity in the last 52 weeks."
)
year_low: Optional[float] = Field(
default=None, description="Lowest price of the equity in the last 52 weeks."
) )
market_cap: Optional[float] = Field( market_cap: Optional[float] = Field(
default=None, description="Market cap of the company." default=None, description="Market cap of the company."
) )
price_avg50: Optional[float] = Field(
default=None, description="50 days average price of the equity."
)
price_avg200: Optional[float] = Field(
default=None, description="200 days average price of the equity."
)
volume: Optional[ForceInt] = Field(
default=None,
description="Volume of the equity in the current trading day.",
)
avg_volume: Optional[ForceInt] = Field(
default=None,
description="Average volume of the equity in the last 10 trading days.",
)
exchange: Optional[str] = Field(
default=None, description="Exchange the equity is traded on."
)
open: Optional[float] = Field(
default=None,
description="Opening price of the equity in the current trading day.",
)
previous_close: Optional[float] = Field(
default=None, description="Previous closing price of the equity."
)
eps: Optional[float] = Field(
default=None, description="Earnings per share of the equity."
)
pe: Optional[float] = Field(
default=None, description="Price earnings ratio of the equity."
)
earnings_announcement: Optional[str] = Field(
default=None, description="Earnings announcement date of the equity."
)
shares_outstanding: Optional[ForceInt] = Field( shares_outstanding: Optional[ForceInt] = Field(
default=None, description="Number of shares outstanding of the equity." default=None, description="Number of shares outstanding."
)
eps: Optional[float] = Field(default=None, description="Earnings per share.")
pe: Optional[float] = Field(default=None, description="Price earnings ratio.")
earnings_announcement: Optional[Union[datetime, str]] = Field(
default=None, description="Upcoming earnings announcement date."
) )
@field_validator("timestamp", mode="before", check_fields=False) @field_validator("last_timestamp", mode="before", check_fields=False)
@classmethod @classmethod
def date_validate(cls, v): # pylint: disable=E0213 def validate_last_timestamp(cls, v): # pylint: disable=E0213
"""Return the date as a datetime object.""" """Return the date as a datetime object."""
return datetime.strptime(v, "%Y-%m-%d") v = int(v) if isinstance(v, str) else v
return datetime.utcfromtimestamp(int(v)).replace(tzinfo=timezone.utc)
@field_validator("earnings_announcement", mode="before", check_fields=False)
@classmethod
def timestamp_validate(cls, v): # pylint: disable=E0213
"""Return the datetime string as a datetime object."""
if v:
dt = datetime.strptime(v, "%Y-%m-%dT%H:%M:%S.%f%z")
dt = dt.replace(microsecond=0)
timestamp = dt.timestamp()
return datetime.fromtimestamp(timestamp, tz=timezone.utc)
return None
@field_validator("change_percent", mode="after", check_fields=False)
@classmethod
def normalize_percent(cls, v): # pylint: disable=E0213
"""Return the percent value as a normalized value."""
return float(v) / 100 if v else None
class FMPEquityQuoteFetcher( class FMPEquityQuoteFetcher(

View File

@@ -1,5 +1,5 @@
"""FMP Revenue by Business Line Model.""" """FMP Revenue by Business Line Model."""
# pylint: disable=unused-argument
from datetime import datetime from datetime import datetime
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
@@ -8,6 +8,7 @@ from openbb_core.provider.standard_models.revenue_business_line import (
RevenueBusinessLineData, RevenueBusinessLineData,
RevenueBusinessLineQueryParams, RevenueBusinessLineQueryParams,
) )
from openbb_fmp.models.cash_flow import FMPCashFlowStatementFetcher
from openbb_fmp.utils.helpers import create_url, get_data_many from openbb_fmp.utils.helpers import create_url, get_data_many
from pydantic import field_validator from pydantic import field_validator
@@ -22,11 +23,11 @@ class FMPRevenueBusinessLineQueryParams(RevenueBusinessLineQueryParams):
class FMPRevenueBusinessLineData(RevenueBusinessLineData): class FMPRevenueBusinessLineData(RevenueBusinessLineData):
"""FMP Revenue by Business Line Data.""" """FMP Revenue by Business Line Data."""
@field_validator("date", mode="before", check_fields=False) @field_validator("period_ending", "filing_date", mode="before", check_fields=False)
@classmethod @classmethod
def date_validate(cls, v): # pylint: disable=E0213 def date_validate(cls, v): # pylint: disable=E0213
"""Return the date as a datetime object.""" """Return the date as a datetime object."""
return datetime.strptime(v, "%Y-%m-%d") return datetime.strptime(v, "%Y-%m-%d") if v else None
class FMPRevenueBusinessLineFetcher( class FMPRevenueBusinessLineFetcher(
@@ -53,15 +54,35 @@ class FMPRevenueBusinessLineFetcher(
url = create_url(4, "revenue-product-segmentation", api_key, query) url = create_url(4, "revenue-product-segmentation", api_key, query)
return await get_data_many(url, **kwargs) cf_fetcher = FMPCashFlowStatementFetcher()
cf_query = cf_fetcher.transform_query(
{"symbol": query.symbol, "period": query.period, "limit": 200}
)
cf_data = await cf_fetcher.aextract_data(cf_query, {"fmp_api_key": api_key})
filing_dates = sorted(
[
{
"period_ending": d["date"],
"fiscal_year": d["calendarYear"],
"fiscal_period": d["period"],
"filing_date": d["fillingDate"],
}
for d in cf_data
],
key=lambda d: d["period_ending"],
)
rev_data = await get_data_many(url, **kwargs)
rev_data_dict = {list(d.keys())[0]: list(d.values())[0] for d in rev_data}
combined_data = [
{**d, "business_line": rev_data_dict[d["period_ending"]]}
for d in filing_dates
if d["period_ending"] in rev_data_dict
]
return combined_data
@staticmethod @staticmethod
def transform_data( def transform_data(
query: FMPRevenueBusinessLineQueryParams, data: List[Dict], **kwargs: Any query: FMPRevenueBusinessLineQueryParams, data: List[Dict], **kwargs: Any
) -> List[FMPRevenueBusinessLineData]: ) -> List[FMPRevenueBusinessLineData]:
"""Return the transformed data.""" """Return the transformed data."""
return [ return [FMPRevenueBusinessLineData.model_validate(d) for d in data]
FMPRevenueBusinessLineData(date=key, business_line=value)
for d in data
for key, value in d.items()
]

View File

@@ -1,5 +1,5 @@
"""FMP Revenue Geographic Model.""" """FMP Revenue Geographic Model."""
# pylint: disable=unused-argument
from datetime import datetime from datetime import datetime
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
@@ -8,6 +8,7 @@ from openbb_core.provider.standard_models.revenue_geographic import (
RevenueGeographicData, RevenueGeographicData,
RevenueGeographicQueryParams, RevenueGeographicQueryParams,
) )
from openbb_fmp.models.cash_flow import FMPCashFlowStatementFetcher
from openbb_fmp.utils.helpers import create_url, get_data_many from openbb_fmp.utils.helpers import create_url, get_data_many
from pydantic import field_validator from pydantic import field_validator
@@ -22,11 +23,11 @@ class FMPRevenueGeographicQueryParams(RevenueGeographicQueryParams):
class FMPRevenueGeographicData(RevenueGeographicData): class FMPRevenueGeographicData(RevenueGeographicData):
"""FMP Revenue Geographic Data.""" """FMP Revenue Geographic Data."""
@field_validator("date", mode="before") @field_validator("period_ending", "filing_date", mode="before", check_fields=False)
@classmethod @classmethod
def date_validate(cls, v): # pylint: disable=E0213 def date_validate(cls, v): # pylint: disable=E0213
"""Return date as a datetime object.""" """Return the date as a datetime object."""
return datetime.strptime(v, "%Y-%m-%d") return datetime.strptime(v, "%Y-%m-%d") if v else None
class FMPRevenueGeographicFetcher( class FMPRevenueGeographicFetcher(
@@ -53,28 +54,38 @@ class FMPRevenueGeographicFetcher(
url = create_url(4, "revenue-geographic-segmentation", api_key, query) url = create_url(4, "revenue-geographic-segmentation", api_key, query)
return await get_data_many(url, **kwargs) cf_fetcher = FMPCashFlowStatementFetcher()
cf_query = cf_fetcher.transform_query(
{"symbol": query.symbol, "period": query.period, "limit": 200}
)
cf_data = await cf_fetcher.aextract_data(cf_query, {"fmp_api_key": api_key})
filing_dates = sorted(
[
{
"period_ending": d["date"],
"fiscal_year": d["calendarYear"],
"fiscal_period": d["period"],
"filing_date": d["fillingDate"],
}
for d in cf_data
],
key=lambda d: d["period_ending"],
)
rev_data = await get_data_many(url, **kwargs)
rev_data_dict = {list(d.keys())[0]: list(d.values())[0] for d in rev_data}
combined_data = [
{**d, "geographic_segment": rev_data_dict[d["period_ending"]]}
for d in filing_dates
if d["period_ending"] in rev_data_dict
]
return combined_data
@staticmethod @staticmethod
def transform_data( def transform_data(
query: FMPRevenueGeographicQueryParams, data: List[Dict], **kwargs: Any query: FMPRevenueGeographicQueryParams, data: List[Dict], **kwargs: Any
) -> List[FMPRevenueGeographicData]: ) -> List[FMPRevenueGeographicData]:
"""Return the transformed data.""" """Return the transformed data."""
return [ return [FMPRevenueGeographicData.model_validate(d) for d in data]
FMPRevenueGeographicData(
date=key,
geographic_segment=v,
americas=v.get("Americas Segment", v.get("North America", None)),
europe=v.get("Europe Segment", v.get("Europe", None)),
greater_china=v.get(
"Greater China Segment", v.get("Greater China", None)
),
japan=v.get("Japan Segment", v.get("Japan", v.get("J P", None))),
rest_of_asia_pacific=v.get(
"Rest of Asia Pacific Segment", v.get("Asia-Pacific", None)
),
)
for d in data
for key, v in d.items()
if isinstance(v, Dict)
]

View File

@@ -3,30 +3,141 @@ interactions:
body: null body: null
headers: headers:
Accept: Accept:
- '*/*' - application/json
Accept-Encoding: Accept-Encoding:
- gzip, deflate, br - gzip, deflate
Connection: Connection:
- keep-alive - keep-alive
method: GET method: GET
uri: https://financialmodelingprep.com/api/v4/revenue-product-segmentation?apikey=MOCK_API_KEY&period=annual&structure=flat&symbol=AAPL uri: https://financialmodelingprep.com/api/v3/cash-flow-statement/AAPL?apikey=MOCK_API_KEY&limit=200&period=annual
response: response:
body: body:
string: !!binary | string: !!binary |
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
SP4I++B6W+2CaSiTXT1XP/4BWk+i1MwLAAA= +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
headers: headers:
Access-Control-Allow-Credentials: Access-Control-Allow-Credentials:
- 'true' - 'true'
@@ -46,9 +157,72 @@ interactions:
Content-Type: Content-Type:
- application/json; charset=utf-8 - application/json; charset=utf-8
Date: Date:
- Mon, 16 Oct 2023 12:22:07 GMT - Fri, 05 Jan 2024 21:23:47 GMT
ETag: Etag:
- W/"bcc-RmRDrPPLIZSDozSR7yOvF32ihbo" - W/"dce9-lmsObLv7FoJ8s1nEBTpjv9OWr+4"
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
Vary:
- Accept-Encoding
X-Frame-Options:
- SAMEORIGIN
X-Powered-By:
- Express
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- application/json
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
method: GET
uri: https://financialmodelingprep.com/api/v4/revenue-product-segmentation?apikey=MOCK_API_KEY&period=annual&structure=flat&symbol=AAPL
response:
body:
string: !!binary |
H4sIAAAAAAAAA5WWPW/bMBCG9/wKIbMD8PjNbgE6JENaIwnQoejAygwi1LEESW6HIv+9/JBs+WhZ
TYIYiCne3fPe8aW+XxXFX/9XFNeUUHZDzA0j15+G7/y3D7b0/1LDhCLxZzWuPLn2d1U6v6oFJQSt
fnO2tT+3rlsVd/WbK+xuU9yWpeu6uq1c53cxo7lAu6q13YR0mmUBq/VrvQvZfC4xrsfFd//5vjoB
oQGE8hyEE1DzIEoDNR8G4UA5zIAY/zsPIrg2l0EggogchAkwWKIjiNScYm2XQZhmEoszgDDQchYE
DBi10BESQeSZ0fKBceQjiGBK6o+DkLHYvCNMUT4LwpQfgYsgYCKIPgMiFMdJjyBcUoOHZBmEcq5z
2RMIUJ0zjiCcsiUQHUHMORCusUQPdrd/sWW/b92mWLf1Zl/2q+Jr/+rakE5xmBkc0Jrkp3wsU0pp
Lp8AULOeJLTAAsSCxvqCgF4kydBDQ1OivsacETEVbmg2lxN9gcFC4TL3oNum2bpiKN+bHB6ItD42
2A8xHv3xgcO8juc106CZaADAZk5YmjHG9WUUkR/eExTB1WUURimeD4wiBMlcNEchJHOoCQr4YVro
Co8oahaFE4VvgNMjKYnBA3XCysjh9ppl9S6SmUG1rjdpLCReed7vgkc81S/9H9u64tb7xNFZQBN5
2XyB5Z51CuUvd5w11XzfDPafn5PxgQHKAM2VmyoLPNPlvonMnANW474PzLPIkogFd6O5u3123a++
blITM6sOpMWj29r+6HDdNG+8WCjPbo+kwOJWTXj25jHwCwnYItPkP+y7qlyOLBiuae3aqvER7DY9
ncLd2XYT1Azd8Bcd3lO3fbyNgsAKNG7JoRdD6kngL64vnmzayrjAY/Bc93YbxqAbvGChd5A757R3
nOEEqYq3qFY7qDW6RrxVu6NaksEltexZtdj4PnpeLd8AHHNUazXmjpHrGHnn5eoGuagReOtBrtMH
QWXnJ1hOjLsETQkTuN/Jjv5rO1cke/0f/EpxsWA+JH+FfXS9rbbBNJTJrp6rH/8AMp/7vZUMAAA=
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- X-Requested-With, content-type, auth-token, Authorization, stripe-signature,
APPS
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Access-Control-Max-Age:
- '3600'
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json; charset=utf-8
Date:
- Fri, 05 Jan 2024 21:23:48 GMT
Etag:
- W/"c95-f87WUVMmUm4/WysLRNFu8Xy3rmE"
Server: Server:
- nginx/1.18.0 (Ubuntu) - nginx/1.18.0 (Ubuntu)
Transfer-Encoding: Transfer-Encoding:

View File

@@ -3,24 +3,141 @@ interactions:
body: null body: null
headers: headers:
Accept: Accept:
- '*/*' - application/json
Accept-Encoding: Accept-Encoding:
- gzip, deflate, br - gzip, deflate
Connection: Connection:
- keep-alive - keep-alive
method: GET method: GET
uri: https://financialmodelingprep.com/api/v4/revenue-geographic-segmentation?apikey=MOCK_API_KEY&period=annual&structure=flat&symbol=AAPL uri: https://financialmodelingprep.com/api/v3/cash-flow-statement/AAPL?apikey=MOCK_API_KEY&limit=200&period=annual
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAA43US2sCMRAA4Lu/YulZIZmZzCS9LVaoPdiCeio9LLKle6iKj1Pxvze7ammTuKmg H4sIAAAAAAAAA82dW4/bRpbH3+dTGHlexnW/9JuTSQADs5NgZgeLwWIxULplR4it9nbLSTyL/e5b
YHZMPueR10FRfPl3UdyBAhgpNwK6u7+s+dXx43RW+gUhUJfX8Prs+fBR74rx5rg+7Jp676O0ALAL RYlq1b9OXUhdMEECO1RJRRYPz6/Olf/1h1ev/jf89+rVVw+r3fqru1dfCSbkwPwg2Vf/tv/k+cvH
wpaz6WLyUMwX5WIyb4NIrLkEdTEn/3ka/pHoTmJSErbInJcwMtmcBNEq7JeoTsIpCfnfhkckJGCU nx4/xM/evPnxT9PRp/Wnx6fd+uHbz09P6+39l/j53/76x+nj+80v8QgL/0jBuJfTB+82Hz5stu//
DlMXSZTTTnol2nUSm5Qgyz8kmgDzEl9C7pfYTuJSEqPdtVN6Jca4MCyUOKtY90OkhaBKpoSEKQ9R eDod5wM7Dljd368/hR/ORohX3N0xdyfscZLVh/X2YfX09/XqaRo6ffZp/bR5fIhHv//7dGy73r3d
SqPOQCwh9ver5tuTQ4wUjkQMccjX2tx0iGHO9Ii53a2GDUneYXwv5fKhBaHfQZ1DUg5U7Kcu57AI 3j9+jL/rjfeajf8cPn1Yf3pa329Wu83j9s324c3HcH2bf47/G8ZzrrmH8e/W4dof9j/5H6vfw6gw
2fFl61SmLpiYmWLmv4JxlL9FxAqHOVsW3dmcnVdITMn5bBCXr4SAcDQi57OVo8z/1nE/lp/1rllV Jv3R593j/S/frJ7DQj1+/LTePh9/jzkpk6H3P6+279dvt//5+PRLWKFvV582u1Vc98Foa5OhYY0e
7dZoUZtg63LfVKOXatW8N6vOGA/o5LjbbOv2oUh03TxV22rdthlhJi8qvtt/2YDIhXsHNgsmLN0P P293z39Z3683v65++rB+juO4cS4Zt9n+ut7uHp++7D/ljvyVH1dfXn7CufQqH3c/r5+yU8qucxz2
TVt2UW8O3r4BGxCbuegGAAA= 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
headers: headers:
Access-Control-Allow-Credentials: Access-Control-Allow-Credentials:
- 'true' - 'true'
@@ -40,9 +157,68 @@ interactions:
Content-Type: Content-Type:
- application/json; charset=utf-8 - application/json; charset=utf-8
Date: Date:
- Mon, 16 Oct 2023 12:22:05 GMT - Fri, 05 Jan 2024 21:23:47 GMT
ETag: Etag:
- W/"6e8-hNE1JdkgArZ+ciKzEMueoazLOYw" - W/"dce9-lmsObLv7FoJ8s1nEBTpjv9OWr+4"
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
Vary:
- Accept-Encoding
X-Frame-Options:
- SAMEORIGIN
X-Powered-By:
- Express
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- application/json
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
method: GET
uri: https://financialmodelingprep.com/api/v4/revenue-geographic-segmentation?apikey=MOCK_API_KEY&period=annual&structure=flat&symbol=AAPL
response:
body:
string: !!binary |
H4sIAAAAAAAAA5WVPW/bMBCG9/wKwnMMkLzjkdfNSIw0Hdyidqaig2AojYbYgaxMRf57RfoD7lES
EQPyIB3J97mPl79ulPrbP0rNrLYw1zwHPftyete/XbzWbbOtDmpd/3mtd13/zZB1pI+/23Pc8r3d
v9VXUYyWUQQ9tHXV1a26e2l21VWst86xiP1WvVW7qxiL1nkR87M+dGr/rBaHplI/qm3z3GyvlzAZ
d1ySVnz0/x+3/xHbSGyxSMzkQpHYGSODRonRapnCjNix/zQx+AKxScSuROwANJWIA4OWCseIKQDJ
DTPigMF+kpjg3IxjxDoRU4nYonNFYgp0auoyMWrQsh8yYoNZzxSIDbs+7VPEhhNxuCa++/q4WkRR
QF4e+L17ifL377uubepDPMOgBcn5tHrcLO/VerPYLNcxqB8fms69CUkJDylxhlEWe0hJbw0yTCrh
oMlMC/G5tV1Sgp6kUw0I0dqAKQgJCMDTQih3nIsQApQ2mAthoHNtRnV4R+Sndbh8Ki6VIYdyrAd0
uL6XSvkwHuy0Dkw6/JCO3oGg3KsBLMooqYMC60JdYGBm1GqWbBglZ67CB08yZ08qnU2GC7WwA1Ny
PNt6LlfCW0/ZiBzP1owFbjN+A8YSBDhfoZetoy/NT76UNOYDuky+GT96n9lN8sDYZgiFvOjxuyru
jchyb6Et2BFLjwMdiLPevPn9D8lau3sSCQAA
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- X-Requested-With, content-type, auth-token, Authorization, stripe-signature,
APPS
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Access-Control-Max-Age:
- '3600'
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json; charset=utf-8
Date:
- Fri, 05 Jan 2024 21:23:47 GMT
Etag:
- W/"912-ZK+N7hiDCOgBJdrQTuxE+QVjtWQ"
Server: Server:
- nginx/1.18.0 (Ubuntu) - nginx/1.18.0 (Ubuntu)
Transfer-Encoding: Transfer-Encoding:

View File

@@ -7,7 +7,10 @@ from openbb_core.provider.standard_models.equity_info import (
EquityInfoData, EquityInfoData,
EquityInfoQueryParams, EquityInfoQueryParams,
) )
from openbb_intrinio.utils.helpers import get_data_one from openbb_core.provider.utils.helpers import (
amake_requests,
)
from openbb_intrinio.utils.helpers import response_callback
from pydantic import Field from pydantic import Field
@@ -34,7 +37,7 @@ class IntrinioEquityInfoData(EquityInfoData):
class IntrinioEquityInfoFetcher( class IntrinioEquityInfoFetcher(
Fetcher[ Fetcher[
IntrinioEquityInfoQueryParams, IntrinioEquityInfoQueryParams,
IntrinioEquityInfoData, List[IntrinioEquityInfoData],
] ]
): ):
"""Transform the query, extract and transform the data from the Intrinio endpoints.""" """Transform the query, extract and transform the data from the Intrinio endpoints."""
@@ -44,24 +47,30 @@ class IntrinioEquityInfoFetcher(
"""Transform the query.""" """Transform the query."""
return IntrinioEquityInfoQueryParams(**params) return IntrinioEquityInfoQueryParams(**params)
# pylint: disable=W0613:unused-argument
@staticmethod @staticmethod
async def aextract_data( async def aextract_data(
query: IntrinioEquityInfoQueryParams, # pylint: disable=unused-argument query: IntrinioEquityInfoQueryParams,
credentials: Optional[Dict[str, str]], credentials: Optional[Dict[str, str]],
**kwargs: Any, **kwargs: Any,
) -> Dict: ) -> Dict:
"""Return the raw data from the Intrinio endpoint.""" """Return the raw data from the Intrinio endpoint."""
api_key = credentials.get("intrinio_api_key") if credentials else "" api_key = credentials.get("intrinio_api_key") if credentials else ""
base_url = "https://api-v2.intrinio.com" base_url = "https://api-v2.intrinio.com"
url = f"{base_url}/companies/{query.symbol}?api_key={api_key}"
return await get_data_one(url, **kwargs) urls = [
f"{base_url}/companies/{s.strip()}?api_key={api_key}"
for s in query.symbol.split(",")
]
return await amake_requests(urls, response_callback, **kwargs)
# pylint: disable=W0613:unused-argument
@staticmethod @staticmethod
def transform_data( def transform_data(
query: IntrinioEquityInfoQueryParams, query: IntrinioEquityInfoQueryParams,
data: List[Dict], data: List[Dict],
**kwargs: Any, # pylint: disable=unused-argument **kwargs: Any,
) -> IntrinioEquityInfoData: ) -> List[IntrinioEquityInfoData]:
"""Transforms the data.""" """Transforms the data."""
return IntrinioEquityInfoData.model_validate(data) return [IntrinioEquityInfoData.model_validate(d) for d in data]

View File

@@ -1,5 +1,6 @@
"""Intrinio Equity Quote Model.""" """Intrinio Equity Quote Model."""
# pylint: disable=unused-argument
import warnings
from datetime import datetime from datetime import datetime
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
@@ -12,9 +13,11 @@ from openbb_core.provider.utils.helpers import (
ClientResponse, ClientResponse,
amake_requests, amake_requests,
) )
from openbb_intrinio.utils.references import SOURCES from openbb_intrinio.utils.references import SOURCES, VENUES, IntrinioSecurity
from pydantic import Field, field_validator from pydantic import Field, field_validator
_warn = warnings.warn
class IntrinioEquityQuoteQueryParams(EquityQuoteQueryParams): class IntrinioEquityQuoteQueryParams(EquityQuoteQueryParams):
"""Intrinio Equity Quote Query. """Intrinio Equity Quote Query.
@@ -32,68 +35,32 @@ class IntrinioEquityQuoteData(EquityQuoteData):
"""Intrinio Equity Quote Data.""" """Intrinio Equity Quote Data."""
__alias_dict__ = { __alias_dict__ = {
"day_low": "low_price", "exchange": "listing_venue",
"day_high": "high_price", "market_center": "market_center_code",
"date": "last_time", "bid": "bid_price",
"ask": "ask_price",
"open": "open_price",
"close": "close_price",
"low": "low_price",
"high": "high_price",
"last_timestamp": "last_time",
"volume": "market_volume",
} }
is_darkpool: Optional[bool] = Field(
last_price: float = Field(description="Price of the last trade.") default=None, description="Whether or not the current trade is from a darkpool."
last_time: datetime = Field(
description="Date and Time when the last trade occurred.", alias="date"
) )
last_size: Optional[int] = Field(description="Size of the last trade.") source: Optional[str] = Field(
bid_price: float = Field(description="Price of the top bid order.") default=None, description="Source of the Intrinio data."
bid_size: int = Field(description="Size of the top bid order.")
ask_price: float = Field(description="Price of the top ask order.")
ask_size: int = Field(description="Size of the top ask order.")
open_price: float = Field(description="Open price for the trading day.")
close_price: Optional[float] = Field(
default=None, description="Closing price for the trading day (IEX source only)."
)
high_price: float = Field(
description="High Price for the trading day.", alias="day_high"
)
low_price: float = Field(
description="Low Price for the trading day.", alias="day_low"
)
exchange_volume: Optional[int] = Field(
default=None,
description="Number of shares exchanged during the trading day on the exchange.",
)
market_volume: Optional[int] = Field(
default=None,
description="Number of shares exchanged during the trading day for the whole market.",
) )
updated_on: datetime = Field( updated_on: datetime = Field(
description="Date and Time when the data was last updated." description="Date and Time when the data was last updated."
) )
source: str = Field(description="Source of the data.") security: Optional[IntrinioSecurity] = Field(
listing_venue: Optional[str] = Field(
default=None,
description="Listing venue where the trade took place (SIP source only).",
)
sales_conditions: Optional[str] = Field(
default=None,
description="Indicates any sales condition modifiers associated with the trade.",
)
quote_conditions: Optional[str] = Field(
default=None,
description="Indicates any quote condition modifiers associated with the trade.",
)
market_center_code: Optional[str] = Field(
default=None, description="Market center character code."
)
is_darkpool: Optional[bool] = Field(
default=None, description="Whether or not the current trade is from a darkpool."
)
messages: Optional[List[str]] = Field(
default=None, description="Messages associated with the endpoint."
)
security: Optional[Dict[str, Any]] = Field(
default=None, description="Security details related to the quote." default=None, description="Security details related to the quote."
) )
@field_validator("last_time", "updated_on", mode="before", check_fields=False) @field_validator("last_time", "updated_on", mode="before", check_fields=False)
@classmethod
def date_validate(cls, v): # pylint: disable=E0213 def date_validate(cls, v): # pylint: disable=E0213
"""Return the date as a datetime object.""" """Return the date as a datetime object."""
return ( return (
@@ -102,6 +69,25 @@ class IntrinioEquityQuoteData(EquityQuoteData):
else datetime.fromisoformat(v) else datetime.fromisoformat(v)
) )
@field_validator("sales_conditions", mode="before", check_fields=False)
@classmethod
def validate_sales_conditions(cls, v):
"""Validate sales conditions and remove empty strings."""
if v == "\u0017 ":
return None
if v == "" or v is None:
return None
v = v.strip()
return v
@field_validator("exchange", "market_center", mode="before", check_fields=False)
@classmethod
def validate_listing_venue(cls, v):
"""Validate listing venue and remove empty strings."""
if v:
return VENUES[v] if v in VENUES else v
return None
class IntrinioEquityQuoteFetcher( class IntrinioEquityQuoteFetcher(
Fetcher[ Fetcher[
@@ -133,20 +119,21 @@ class IntrinioEquityQuoteFetcher(
return {} return {}
response_data = await response.json() response_data = await response.json()
response_data["symbol"] = response.url.parts[-2] response_data["symbol"] = response_data["security"].get("ticker", None) # type: ignore
if "messages" in response_data and response_data.get("messages"): # type: ignore
return response_data _message = list(response_data.pop("messages")) # type: ignore
_warn(str(",".join(_message)))
return response_data # type: ignore
urls = [ urls = [
f"{base_url}/securities/{s.strip()}/prices/realtime?source={query.source}&api_key={api_key}" f"{base_url}/securities/{s.strip()}/prices/realtime?source={query.source}&api_key={api_key}"
for s in query.symbol.split(",") for s in query.symbol.split(",")
] ]
return await amake_requests(urls, callback, **kwargs) return await amake_requests(urls, callback, **kwargs)
@staticmethod @staticmethod
def transform_data( def transform_data(
query: IntrinioEquityQuoteQueryParams, data: dict, **kwargs: Any query: IntrinioEquityQuoteQueryParams, data: List[Dict], **kwargs: Any
) -> List[IntrinioEquityQuoteData]: ) -> List[IntrinioEquityQuoteData]:
"""Return the transformed data.""" """Return the transformed data."""
return [IntrinioEquityQuoteData.model_validate(d) for d in data] return [IntrinioEquityQuoteData.model_validate(d) for d in data]

View File

@@ -17,6 +17,28 @@ SOURCES = Literal[
"delayed_sip", "delayed_sip",
] ]
VENUES = {
"A": "NYSE MKT LLC",
"B": "NASDAQ OMX BX, Inc.",
"C": "National Stock Exchange Inc. (NSX)",
"D": "FINRA ADF",
"I": "International Securities Exchange, LLC",
"J": "Bats EDGA Exchange, INC",
"K": "Bats EDGX Exchange, Inc.",
"M": "Chicago Stock Exchange, Inc. (CHX)",
"N": "New York Stock Exchange LLC",
"P": "NYSE Arca, Inc.",
"S": "Consolidated Tape System",
"T": "NASDAQ (Tape A, B securities)",
"Q": "NASDAQ (Tape C securities)",
"V": "The Investors' Exchange, LLC (IEX)",
"W": "Chicago Broad Options Exchange, Inc. (CBOE)",
"X": "NASDAQ OMX PSX, Inc. LLC",
"Y": "Bats BYX Exchange, Inc.",
"Z": "Bats BZX Exchange, Inc.",
"u": "Other OTC Markets",
}
class IntrinioCompany(Data): class IntrinioCompany(Data):
"""Intrinio Company Data.""" """Intrinio Company Data."""
@@ -65,7 +87,7 @@ class IntrinioSecurity(Data):
description="The country-composite OpenFIGI identifier.", default=None description="The country-composite OpenFIGI identifier.", default=None
) )
share_class_figi: Optional[str] = Field( share_class_figi: Optional[str] = Field(
description="The global-composite OpenFIGI identifier.", description="The global-composite OpenFIGI identifier.", default=None
) )
primary_listing: Optional[bool] = Field( primary_listing: Optional[bool] = Field(
description=""" description="""

View File

@@ -37,7 +37,7 @@ class TiingoTrailingDivYieldFetcher(
transformed_params = params transformed_params = params
return TiingoTrailingDivYieldQueryParams(**transformed_params) return TiingoTrailingDivYieldQueryParams(**transformed_params)
# pylint: disable=protected-access # pylint: disable=unused-argument
@staticmethod @staticmethod
def extract_data( def extract_data(
query: TiingoTrailingDivYieldQueryParams, query: TiingoTrailingDivYieldQueryParams,
@@ -60,4 +60,5 @@ class TiingoTrailingDivYieldFetcher(
**kwargs: Any, **kwargs: Any,
) -> List[TiingoTrailingDivYieldData]: ) -> List[TiingoTrailingDivYieldData]:
"""Return the transformed data.""" """Return the transformed data."""
data = data[-query.limit :] if query.limit else data
return [TiingoTrailingDivYieldData.model_validate(d) for d in data] return [TiingoTrailingDivYieldData.model_validate(d) for d in data]

View File

@@ -76,9 +76,14 @@ class YFinanceFuturesHistoricalFetcher(
new_symbols.append(new_symbol) new_symbols.append(new_symbol)
else: else:
new_symbols.append(symbol) new_symbols.append(symbol)
formatted_symbols = [
f"{s.upper()}=F" if "." not in s.upper() else s.upper() for s in new_symbols formatted_symbols = []
] for s in new_symbols:
if "." not in s.upper() and "=F" not in s.upper():
formatted_symbols.append(f"{s.upper()}=F")
else:
formatted_symbols.append(s.upper())
transformed_params["symbol"] = ",".join(formatted_symbols) transformed_params["symbol"] = ",".join(formatted_symbols)
now = datetime.now() now = datetime.now()

View File

@@ -5,7 +5,7 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -15,89 +15,89 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAM1dSXPbOBb+LzrHLGLjkpuz9Xgqiyt2zxym+sBYsM1pifRQlNPurvz3eaCoCCBe H4sIAAAAAAAAAM1dS3PbOBL+LzrbLOJJMjcndma9lYcr8ewetubAWLDNHYn0UpQznqn8921KlAUQ
YpJ+UPtk2WUBH4EPD2/nX4u2XOuNbkq9Wbz8a9HozXbVLl7+56/FWreF+dPmYf2lXsGfFqen5+8X HZukGxqfYrsi4BPwodFv/DVriqVZmbowq9mbv2a1Wa0XzezNf/6aLU2Tt39aPSy/VQv40+zk5OLD
v71YtA932vxeVNW2WL0uNren1dL8ePu/bXlfrHTVbha/fXuxG7st1nfw3yyJmeQyjuMXLBE8T+Ld 7LejWfNwZ9rf87Jc54t3+er2pJy3/5z9b13c5wtTNqvZbz+OtmM3+fIO/jfTMZNcxnF8xLTgmY63
x0TK7jN8hJ+Cw0eY4qdDG3TLoi3OlouXXMQihv/ffLp+U7QAa8FjHp/E+YmIFy8Wd/Bk9fKyA7xg P2opNz/Dj/Cv4PAjTPHk0C26ed7k5/PZGy5iEcP/X32+Ps0bgDXjMY+P4+xYxLOj2R18s2p+uQE8
/AP86WrbNLq6enhdL80ff714A39s9F3dtHr5r2K11d1CFF8XL0WUxSx5y2CC6zWsykJkUcxfLb59 Y/wj/OlqXdemvHp4V83bP/769RT+WJu7qm7M/F/5Ym02C5F/n70RURozfcZgguslrMpMpFHM385+
e/EIAkaGQObSBiCjXI4BwIkA8Egk0l4CLqJEjUEgyBDkeaJsBHmUJwbBbwbDWJp+rKvX3aTtG32t /Dh6BgEjQyAzaQOQUSaHAOBEAHgktLSXgItIqyEIBBmCLNPKRpBFmW4R/NZiGErTT1X5bjNpc2qu
4cPyfVl8KVdla6j/27cpY1209dXvt/VqqZuNIWb7QEJ3ZFiX6pypUFRPIiVEbq1yoiLhMw1BQEX1 Dfww/1Dk34pF0bTU/+3HmLG+NtXV77fVYm7qVUvM5oGE7siwLtU5U6GoriMlRGatslaR8JmGIKCi
JBKxA0BEcT4GABXVVRQnKbcQqDhK0jEIqKieRJw5hy3hEVOTqX66WtVfi+pKv6ubN/X2S3u9XZ1e uo5E7AAQUZwNAUBFdRXFOuEWAhVHOhmCgIrqOuLMOWyaR0yNpvrJYlF9z8sr876qT6v1t+Z6vTi5
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
headers: headers:
Age: Age:
- '0' - '0'
@@ -122,15 +122,15 @@ interactions:
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:37:20 GMT - Mon, 08 Jan 2024 11:44:16 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Accept-Encoding - Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-company-fundamentals-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-company-fundamentals-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '76' - '56'
status: status:
code: 200 code: 200
message: OK message: OK

View File

@@ -5,7 +5,7 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -15,81 +15,81 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
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
AIbjlzJdDK+ulGk2HYVoZHLalsJp0pFtSwGrkiPblgJ+mGhM21JINYrTtnRzcxGoXwmgbJd8wq1f KRNk6u7uylNrCELZzq7723TTc+jB56abvkMP/jbd9B968DbgTD704GOl8pFdyrE/o9+zw85jAb1n
GjmJE3L90thJnHDrl8ZP4gSbusf76suwPV7FQbj76LcU7eXeIVOoJE3sFfBAuy6AAbGRrjA/glxA h53H79Dq02Hn0+ITdNjtt8erOIh2H/2aor3c22cKlcWRvQIeaZhGMBA20mXmlyBn2H5xn+lTUFXc
+8VDpk+lVFBbKqAV38HSp8z4DjTbfQbaSya3gzAfm60AXfVihRMkuVTt+fmQn8rMtaFUnsOz6+GG VlXYim9v6VNhfA+02H4N9CCZXE9sfazXAnTTFQuaIMmlas/P+/yqzFQbSpUpPrvubyg2VHuntO2f
YmO1d0rb/pmORYDZTL8HoBrpx/FHrI1Tqk/P0ynLnPWVIde3n4UEMCSi/AoD+09gn1etmPeeBIac cV8ElOMMBwBqlKEff8LaOOf69Dwfs8x5M0oI8rNeHrbs2vumXuBtc0N92Ga7iN6OugaldL9Pi7b9
VXfbNqtNJxZVDbTTTSINtZTctI2k/sIbPbu89PzrL+V30X0St5unD5F5PyP5eM6rbv6Y1hMLOIfo kn9/V1TFfdmplNbR70keu5xl4P+6c1C0hUE772dwThA+zmXZTjdJOrWzH1t7OfDgr+umKB+qi60o
VXiV7hbKo7kRdaeW0NSLi9V62TwI8U7U4rbq9xMZL71beC2otyJWpE8X/9k83vCVhL0Qjza+GpwG wRGuAb/Py+pD3Y4fuda6ypsaJGQEul0tcrOpDl7g9e3w97ZfnjPoY4CcqA051exqsZzXT0WxlajD
rxtvd59csPukvYoX3+ei66SA7B6auvWDXwR/4R1fb/oX3vKvdSvKZfWXWLwvq/pD03XX9V6EJquR uMgQcvqmndv7zwXc2zFva3/R1Mtp1dsZTGInjePlcJ4rtvU9vRbYJe7q6l3xmM/v6/vd4Q+lpJ+3
y6YV1V2tRNL3T8+WZdeJrrlVd7PdhLjut8oE7gH2PyGPGwf85KKZC7Honl7l9Vq9v4vvop1X8qX6 Vnscm4PX79z+63oH71o+HNX7+lvRVOqzvm/yTQp0UO8DhOGk96vdXbDLErRcNwrObvHGUI19fw8c
ktsJVt9st5NVou1um/Z90yy6UkZNov1Wzb3vbf/6pt7leaOcmGo+5aUN2vRxc6UU88srX+7aMi2v b+93aucTGL7D6qAxkn34esUx4m2Ow+wP9mV7tuGyFXDG96vNlz6OOmVM/+MVoVESMBrX3iM4n/1n
43Z7Ky3J9a08dttT8Ena5/2GI6/zNciXepSdepbeJPQPSJ5dXvtK/v4bROb82zQ5QDjGpkLUEq5e tTm2G9Cds+1bLHdh1Wgdo9UJBikTw5+wvs9zWBNDVzQgEAcjdPNCCi+4ZZs9JmOYj37B5kGOfBs6
nslWXUkFI5q7tlzfP3wWdwrV+ePCvylPSFvxN6TW/CyS/XHaTzvPzJOQOaL1ZG9ftvtdXwTnj2en iovr65fdn9EO2A7DGMVwDhLZ3SyWedmoAwCizcNQGjuf6rZ6kc7UTckF3DlwK5sXq/7hYo1ppJc7
ec92/udwLAaxePG59hXqQdk19TtxXy5vm9vBqfDFonu4WtvKdCd5+vqaU6kb+qvVuqxadXNSLNs7 ATu7u/50K/DaywohOk6F7lKFECGBGK3f6FB49iscfiFJAh3zPg31ik13dPx+pW3ooE5i/DkezO1o
39dsni3rs7Yv8EWnee1DWlmGKJLG9v58H4rK/2HoC6PPbXoMYnmcL/ceBlzTz8LTnQ0kJt2dQ8Xf v1j7Wj1zpPtlen7wsa4tYDF7X9QPTb58fPpcPKjPdbnZOftCq3q76l5oVne6u6vX+2pL0Br3dfO+
2NrOwrCby98v+lapUEG6Lb9JAyMpyfM9SXhehEP3Es+krZG2oX2R2znR9be15YuO4j5AnWLinoKF rmdtDn5N0Xwrp4PP/teqKfJ5+Rd8bMpXelmrXFc5HSNb7rfCf9qmRIY6p3mj2tW3kZbSdVf/XZXd
4VZwPOgB3GTTq7+q98030dYK3fu29H/aQ7w7VYmbGQDfs3xRtqphfucnKm1z8d9N1T/s/YGpz3Zv 0+HzDY7gdu919y6IIqem/laqgBXe429w3qCYIHoapeCA1LQoZu0+dXK7VGri6nvRTMt28BHuYpWx
Cqb5NvueIUD/TY86R4Ri8o+l9m/a2dt6s1z++PE/9z4YQSedAAA= KkZ33LY3Ev4G9GfdTN5Wq/n8x4//AcrUFrUnnQAA
headers: headers:
Age: Age:
- '3' - '0'
Connection: Connection:
- keep-alive - keep-alive
Expect-CT: Expect-CT:
@@ -111,15 +111,15 @@ interactions:
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:37:20 GMT - Mon, 08 Jan 2024 11:44:17 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Accept-Encoding - Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-company-fundamentals-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-company-fundamentals-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '51' - '47'
status: status:
code: 200 code: 200
message: OK message: OK

View File

@@ -5,7 +5,7 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -15,51 +15,52 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
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
headers: headers:
Age: Age:
- '0' - '1'
Connection: Connection:
- keep-alive - keep-alive
Expect-CT: Expect-CT:
@@ -77,19 +78,19 @@ interactions:
content-encoding: content-encoding:
- gzip - gzip
content-length: content-length:
- '2376' - '2427'
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:37:20 GMT - Mon, 08 Jan 2024 11:44:14 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Origin,Accept-Encoding - Origin,Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-search--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-search--mtls-baseline-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '91' - '103'
status: status:
code: 200 code: 200
message: OK message: OK

View File

@@ -5,7 +5,57 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection:
- keep-alive
Cookie:
- MOCK_COOKIE
method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/AAPL?crumb=MOCK_CRUMB&interval=1d&range=1d
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"AAPL","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":345479400,"regularMarketTime":1704488401,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":181.18,"chartPreviousClose":181.91,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1704704400,"end":1704724200,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1704724200,"end":1704747600,"gmtoffset":-18000},"post":{"timezone":"EST","start":1704747600,"end":1704762000,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1704465000],"indicators":{"quote":[{"close":[181.17999267578125],"high":[182.75999450683594],"low":[180.1699981689453],"open":[181.99000549316406],"volume":[62303300]}],"adjclose":[{"adjclose":[181.17999267578125]}]}}],"error":null}}'
headers:
Age:
- '0'
Connection:
- keep-alive
Expect-CT:
- max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '945'
content-type:
- application/json;charset=utf-8
date:
- Mon, 08 Jan 2024 11:43:41 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-baseline-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '49'
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -15,146 +65,144 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAO1dXY9kt3H9L/Pc6Vx+k34z4iAJEBtKLD8YhhBstGN54/1QZnflKML+95xTJHum H4sIAAAAAAAAAO1dXY8duXH9L/M8uWl+k/tmxEESIDY28frBMIRgshqvFUuazWi09mah/+5zSNbM
61zHecyDIaB1l8Pmre8qVhXZPz18+4dXT58efvbTw9Pjx89v8fS7nx7ePX56xaFvPz89Pb7/9seH 3DrtOK8BDAFXPbxsdrG+q1hd96ebb39/9/h089VPN4/3nz6/x9Vvf7r5cP90x6FvPz8+3n/89seb
nz385te/eLg8fPzx3b9/eIt//vznX/0z/v34X/j6++8ef/Xq3SNGf/XLX2PwzfuPn54+v3t8/+nr r25+/auf39zefPrxw38+vMefP/vZ1/+Kv+//hNs/fnf/y7sP9xj95S9+hcF3Hz89PX7+cP/x6Zsf
H7/n8N//y2/+6evf4i+/f/P08dPXT69eP/7i1Sf8JeWS28jHccHbv/v89tXTL189/fHx09dvuFxo v+fwP/7br//lm9/gm9+9e/z09M3j3dv7n9894ZuUS24jH8ctnv7d5/d3j7+4e/zD/dM377hcaEfO
R45HjUe7PHz37tOH3//+4yPg+5vQD37jEyb994f39oJff/0CmK/XHxZQP3/3+PTm21d/+6vHP/3b vecj3N589+Hp4Xe/+3QP+P4u9IN3PGHS/zx8nA/41TevgPlmf7GB+tmH+8d33979/S/v//gfv3l4
bz88/fHBvewr/JVv6+3aY7lMgnz19PjDmw+fP/7d2w8f+cc4riNdHr7n3H988x5gxMsijyH05v13 /MONe9jX+JZP6+ES+u3Cx9eP9z+8e/j86R/eP3zid3Fcary9+Z5T//ndR0CBvxZ25n7effzuazzl
X+E1H16TbN8/PfJ/AuDHT0Zq4hV6NSQe37/eiJbOAUH0yw3cv7TmXuJ5zTjin1vz+w8fP/3FBdf3 4S2x9v3jPf8T+D49TUxzW9wZ93D/8e0eiDlyQPb55Rnav7rmXuJlzdzqX1rz+4dPT391wX3/y4I1
nxfMqZ4viBVfv/r06h+eXr0nqG8+UWbCa9KaLME/8PjDq7dvXv8r//0RYjb/XPgR3n3AZ7LPap/h HucLYsW3d093//R495Ggvnsiy4S3RDUpgj9w+cPd+3dv/51/fwKXra8LP8KHB3ym+VnnZ/gRH5Ef
R3xEfhR+hIOfP37i5Hev/uvhmy+T/wD23fdYK9QWW6mElo89x7oeRxzHfExHKHk9xpbXhJRq2BNy hR/h4OePT5z84e5PN2++LPID2A/fY61QW4otE1pephqOfZmxi31ZUur7EvuI+3LUskfzUeIezSH1
bntCSamvR6y61k2jljWajxLXaA6pr8VAsbIWyxlArMfSjj2h4nk9tpzW23KPY61bjr7hLaFteEus vViOsezFwIzZJpR22ISK633ZctpPyz2OvW45+tgTSmhlTyixBpuQMHtfYoG9bqnD4C2tG7yl12oT
YU9ImL0escBat9Sx4S2tb3hLr3VPGCWtdeuRxlq34r1rQk19g15zC3tC4XLzseaNUB19w9uOtqne Rkl73XqksdeteO6eUFM30GtuwSYULrcua7YN1dEN3nZMOs/LUONeDNxlu+CObEIZBm+r3bCOa8N6
Qt1UbzFvLIjRnlDGhrfVvqmO50311svGooew4e1hbHh77JsBPbXNgJ7LxqID8j2KiXu09031Ptqm 68V20UMweHsYBm+P3QjQUzMC9FxsFx2Q2ygm2mjvhvU+mmF9HMV2MVIwePEow/rIw7A+gIa97gAi
+jjKxmKksOHFqzbVRx6b6gNkWOsOEGKtO0Zc8OIzLKrjcSyq9yP0hQV4UhcWHaLT94Qayp7QjrAn 9rpjxA0vPsPGOi7Hxno/Qt+7AE3q3kUH63SbUEOxCe0INgH72OsCDRveHmIYNpqOjXVcjo31HqAe
AI+1Lsiw4O0hhrFH07GojsexqN4DbOlaLLTU94Qe854wQtgTxlhUx7y+sYgpb3hjjhveWELZE+qx 92KhpW4Tesw2YYRgE8bYWMe8bruIKRu80A8Gbyyh2IR6bKzjstsuMNPgTUfaBOgpxE2AnuKxCYDL
qI7HvrHAzA1vOtJiQE8hLgb0BBt+7MexEUqlbNBTTRt08LXsCUB/rwuJW+vmUDboNEhrQk5pMyDn YRtKpRjoqSYDHXQtNgHbt3XBcXvdHIqBnmM20HNKRoCcgxEgl8M2RIVkE/DPJoxkBChHNAKUcNiG
sBmQy7ERyhDUPQH/7QkjbQaUI24GlHBshEouG95S0mYATM1mQGlhY1FG2/BW2OI1oYa8GVBj2gyo Si4GbynJCFDA6nux0oLtooxm8NajGLw1ZCNAjckIUFOwXUAnGLyQV4MXUmEEIKps3RFtFy1WAxL6
KWwsYBM2vNDXDS+0YjOApNrrjrixaLFuIGGvNtVheDbVYTY21aFaG97GL67HUTbV+5E31SFSG4ue yrAOxWNYh9owrEO0DN7GG/flKIb1fmTDOljKdtHTMHixZUM1ADZU48kGeh/DgBwQ+T1hTFysy1gM
xoYXKG9SA+BNarx5g97H2EAOqPyaMIwW8zGWTWqIwCb1qFtN8bjVFFq61RR832qKN+SFxQAAC148 1WABQ/WoJqa4NDGFlJqYgu4mpnhC3rsYAGDDi0sT03EkE9NxZBNTyHnZuwBgJqa4NDEdxzAxxXZN
bjUdR9pqOo681RR6XhYWAGyrKR63mo5jbDUFultNoStlITRC3mo68BD2hLLVdJjtX48wsGvdeGyN TCErZW9ohGxiOnARbEIxMR1T9+9LKNi9bjxMYkcMJrG4NIkFLU1ioUmqbQisZaDHZhKLS5PYEbtJ
HTFsjcXj1ljwcmssLEndCEG0NuixbY3F49bYEfvWWHi3thFKcWvsSGlrLJUt7gl5ayyEvm2EYD82 7Iij2YZSNIkdKZnEUtiiTcgmsWD6ZhuC/jB4cfcmAC5NTEcOzXaRs4npyMXEFEQxMcWliSlVgu2i
vPj2YgAet5qOHNrGIuetpiOXraZgylZTPG41pUnYWJRjq+koYavpKHGrKX3TZgA8wMai1K2mML9b HCamowQT01GiiSltkxEAFsB2UaqJKdSviSmYzMSU3GsEKOCNvW6NJrGjJpPYUbNJLIy4SSwuh20I
TSFkW00pvZsBBbKx1q1xa+yoaWvsqHlrLJz41lg8jo0Q1HeDTkTXhHZsjYVub40dLR4bIbj0DToc 4mugc6N7QjtMYiHbJrGjxcM2BJNuoMMgG+gwp0YAGEMjAIC1DUHzG+g9mPACdya84EgT3gGNZxuC
8gYd7nQzAM5wMwDAboRg+TfoPWzlBe228kIit/IOWLyNEKzCBh3qvUHvfSsvHPNWXiAWNkKQmI3F VjDQId4GOtxeowVEy2gxYH32uuAY28VIZm6BMTO3EN1sZAH+jCxY2HYBc7F2QaC2ucVlyIssuIRq
SNvdgmLb3UJ182YL6LfZgoU3FnAXEwsCtdwtHkOebMEjTFtej3D+e0JpbU+AadsTeqprsXCMskYh y/sSxt8mlNZsAlSbTeip7sXCMcoeBRMt0HEZa7cJUG17MejRsBebD7TLXm0C1JFNAEfsdSNU2143
RBN0PMba9wSYtrUY7GhYi9kL92OvewLM0Z4AiVjrRpi2tW5Mx4Y3wrTtCbm1PQEyt9aNsHJr3UgL psPgjVBtNiG3ZhPAc3vdCC23143UEHY5DPR09LgnJCqRfQktt9dN9TB4ExXzvoRq24vRb9yL4akG
sR/HBj0dPa4JiUZkPcLKrXURK294Ew3zeoRpW4sxblyLrY3ONwi2f8CW4iND89dvfnjzGrG3/eM5 JAyvoTpDn+1HgCMJ+ht42D8gjvhEf/ztux/evYXDPf948ez4192Hh8+MPI5LTNPdZmDyPAMe8YtN
cOO/Xr378JmbkOMak0Xe3KPcZiA4fnaZbnp+nr5n2PRtt/789D1jTl9i8r9MXzO+cG/w5v1rbME+ ddPzy3SbMaebYvvL023Gmr756H+Zvmd8YUDw7uNbhF1PD49zL//9+YFzEFx+u2Kq30JtXEIGGwIk
fXgyXP7z8wfOwUbz27m9+l2I5XpQyqh7jD3iBTJw5W4DghOOhBCkXmxW4KSKOAUfF+7LKkcKlBPs qAXok1sONdADyiHCLQbPYShdpucJSQRNsg2RDDBUUMJj3pgvEB7y/0HTOjKGyoWIAS/QMkGFzKHI
LxfYl2vIGAFysB8wPDaEjQAmcZMAC4aVUrpaiAqVBfPyHiK/4NFgrYd9MV+hZVSUgz544IWpXEli G2ujg9/iGiE759iooed97dIpHQXKAeyH2zIiQ94G1+5I8JwAQo6XQkBhhqGwYSrnLFL2ala60Bi+
CA1dGGyNDUV+sTbuBFqcI5T7HBtNuX0Pu8t6B2gOVzPuL/DL8VoIKPw1LDt8qs3qjgo5Xek1X7wv el4GULwvTq8+EChMAjvkfImdyIAjGfAxp2Y3tRwXEu9AtJPjgq3kCz+D4A1fVIddzBqBQNPwQlOs
Ayh+L1r4HwgUJkGwcr7GTmIg4gz4sKnZTS3HlWJwYFuU44St5Cs/g9ANf6iOupg1yIJODw2TMhe8 Ba/3ijnwdq8QWdJlBhK2rziHuBDVKt1KjpRLoqTCPQ6gVZtz2jWyC5DGhSCygXvCHvsFHu4V3Bga
xxVzEBbfEbKkq+04Nl7RhsK9DJRyTVRpxNEBvGo2p90Tu4BoXAi6HYgTcOxXhMJ3cGNoOObmcU3j jrh5XNK43kqufvHc/OYw4tkEOE3cXYMfUEaaxC3yPOLAEZc4cNsLlytqr/15bB6XQqrCaiFOOTgJ
HpVc/eK5eeQw4sUENE3EriFgKCMZc4u8jzRwzCUNHHrhesftiZ+n5nEt5CrcGzY0BycBv/mHTLkL +1tfZPJdiPSj4Vcv7Li5GBqO94FnIUYhA5UmSCoDzO320WQfXTiyQqrL/Obkds9UmNycBNV4SU4S
kQE3AvBJHTcXQ8PJPugszCgUoNKESGVAuB0eTfDoIpEV9qHYX06+7oUKk5vToBrFHtR87Q66Wq/m ar50B12tl2mFXghWy2VaXjg1cUOSRKyxElXMa3rheZ5egIqJiVeshpHg6IXnlXLNDVU0BEecaAFy
rp4ZVsvVXDSin7ggSaLWWInG6iW/8D7PL0DFbMcLUcNIcPzC+0q5l4YqFoIjTrUAuWdebQJ6VVKB T7zaBPSqqAKhokOViA237PF5goUuvF3HhfHrFSGHsBRuLOlKzwD0nK9kGUC1a13U0mVmOV4pHg7h
UdGRStSGKHt6nlChi2xXGNjmGDlEpPDFku7sDEDP+U6XAVS7t0UtXS0d8sLwcAifQaDlHxxVGxHA Mwi0/MJhtXED+C/qKiDd/2loWuNXqrwBl9e6BCPBMUbLXk0BXgEOejtdI6mp3DXVxg0Sd81jGOEX
/6KuAtb9n4bMbb8w5Q20vLclGAlOMFr2ZgrwCnCw2+meSE31rqk1btC4exnDCP/Qj+vhyI6hcU/k /bgcDu0YGtdIbqTNFeUx4ngP63l9j4U8Drn2tZXpyRMQI17xYciB1Kvo/p69Vu1FJ4mZ640qCet5
Rt7ccR4jTvZaE3uPhTwNufa9l+nJMxAj3vBhyIHUq9j+nr1V7UUniZvrjSYJ63mJ7OpvewcnHWhj juxqb3sHJR1oY+FR2XfgUU70Rrzk66eP4IUKI91tfxwKXL9UZ+cJ3DWVAJTneCzlZIqLO4Yl5I6n
0lHFd+BVTvVGvOb7t4/glQoj3aE/DgWuX6vz8wTunksAyks8lnI6xcWdwBJyJ1MY8l57FLFSmBXu MOSt9iiipTArXKsW7MZ7NkBCWw+p4coCjekfYJwO6BXaircEo3pFgDkeISN6tgU0To/3oOLTxWyB
TQuw8ZENiNDmS1yQNSw+wDg3BXdkK94TjOoNAeZ4gozoxRbQODveg6pPF7cFcXcmGpOCV/Mm/MaQ 3Z2KxqTgxbwJvTHktdPwHNBEp7WquieTSfHp/ctWVCM0sQI8L7jGNZ7BOOAVpdoJRx2ySQiZW6mr
t07DS0ATm9aq2p5MIcWnjy9bUYvQxAt0RoV3tMY7uGF4wal2IlGHIAklcyt19bNdwtIuaGPEheY9 ne3ilnbZNkbqtb7rUbwbbEVUIBDvZAE49Tac23MEy6KxYDqyYNMrjDOqDtX6RSmTxFkBDJ4dqpdZ
SnQDVMQEgvBOF0BT78OJnmNYFosF15GFmt5gnHF1qNUvypkkwQpg8OJQvc7CxDsD1Q4156qz+J7H qHinoNqh6lxlFvf5/T1bMu9s4Rvvl7R8hnzZUz+TlvTaXcpn0gJGci7wmZB1qBiRHx92nTF8EZmC
7+bJfLCFv/i4pOUz4gtO/Uxb0stwKZ9pCwTJhcBnStZhYkR//LbrTOCL6BSiWyfdtnPBZ85CN4m1 d+u4e0Yu+MxZ8Ca+Vr10tyW4Il4pgQYuCmrqXja1AeRpzz3qf9HAqhCLhY0CKYa8twXb5jkAYuxJ
6rU7lBCKeKMEHrhdUNPwsqkPoEx76dH4iw5WlVg8bBRIMeSjLfg2LwFQY8+iJqShQ/Huc3hGmh47 1AQ1NCjefA5PyCnHTsEHUc7g13QNJw2ft/JDkMXnXSMZS8lmKP9e3Th/AY+LTtipk5xcDUbrV/YB
Ax/EOENe0z2cdHzeyw8hFt93T2QsJchQ/725cfECXhedstMmOb0a3K3f+Qf4kOSIDjfl4wI4H0cW NiQ5pMNMeb8AxsehhZbQqSnc5yc1L+ujS/g+lF9oDx3ZYRDFzmaxmln8CFphNeLOXeVmHH9iyNtW
ekJnpvA9P6l5XR9dtu9D5YX+0LEdDlH8bBavmSWOoBdWJ+7CVSLj5BND3rdqmsGK3/mZDd9cHn74 TTP0ImQH403WCqJuaKOugHtze/P7d9/9fqZfTrIoIKjPogAmx68p6yxxE1PzkpzUFqY6Acc3Pi7K
8PbzO0vOhAh24T2XPkKwCjDCnkrKXrBE4a7l0o42aB8vla9mVos5YhYzLyBZI/EurCVSbDCnZkva SVgEQ96/z1G4LS9cZLXXuUj2IcNPdNF5FSCLx+GKta9VIRMijuRFA0cma64JXLKkTYIAVRThRaNE
1cFqLf8E7T+yrRzjfAXTTYlzak5M4F9qAUU4UqA2NtKOMnP0EJNQbHLpjTnJS2u12joBeK+sdcFC PI+A1JM8zLGWvVZOWeS5HIqPJt4K7nP+HkacwT1Dv2RsiqbVirgY2PtJLkZyJ9l74OUQ2SWNnORg
zWaNXkjwC/4ULYlXc4jM1l0K/tXsgesYsDHMJHENrHbaS8rM4dVudURMHjM5CTwoHXwIh5UwLxk2 SJImaSU/qrd/GPGuTdH4rGiuqkZ5bg2eF6vi/iSzUrq4D1jKaRY8T9ITM0UEG+xkklbZP1UC65q9
0HKKpeRqZKDG0aJeymG0sz/NQkAB8n1iBiEyCJthSMAsnYuvY/1sNEsA3+DpsD1GvJyLAd+SZcdJ Rj1LuJzkfKIEdljcp2WqCDpzIt5V0FQevAevDqq4yFVCGuaY1DXxVpNJH5f6YuLE72aov3VI4AHC
hgVhq6FSXi+jr+w25swqTEsQF74LInRYCpaV4RgmXqMaqBE0NHTg5ONEEFJH+uRRLB97YY7T8qSF 6iSnLQH5cc2/8B29s61pWKZa5DZPmZYliuYsTdGoq+vZlnkR7zUX8QFmGORuFDON1X2sFL2fwB17
CXDOyRASWxnyGmxOpoUMhkWzpCkeVmEZq6RkfCYaRijAZW/P+PpckCXXSYQ2y/IlYm42ysPNGIRQ L7uoO3jiPw/BOcMuF2MxdeVsa5aUyNltDlGY44UIDqN4mkndyiwuAIY87uBpFmcdMeS3jCFvgOAp
nklnVoPtXTAlfYrJOIyqpcRjrK+3aGD0HA2dWkzEKYAxzVQu4ZrvKBDtPtGIBn1JoHyZVAi5rZdZ iNfavHB3jQZnQuZ6ksYjcPQ8beBF+hAOzpHP74/kwwg4OcNPiuIRYKi6NMNQLAwvNfBRXUjMfIU6
Ohl/qdVGoD5GO8hvCVOAAGGzBdvkHCXzsAWPlicaWC+VKZFTWAtEqRwLDHqAy7Bih5FsLM4BeWM8 1yeO5YmP6tNKXcg8NDeM+yRnpZEhUeWdTXX1RvMZTTzQZZ4Jgs801dNMk99zFJ9fHJ0u2Siwv6T0
q8XZiEc70PP6m3HeKp0T6d5MxgsspI0AsDiW+FcjDGBNybLUBwky+QJFDAtpI1oJoILBmGAHptgf DtETjFYtIXL1iKaxDvM5jiGapK0Z8vm0gibPoIscuLhP8n5ijbsGsABKhFVPd7qeczBx45XREK0y
VnUnQskMA+ZYdRxSkSaKUIKpESnkWXzJLJpN7GGt7aFacp6iuEqfsBxTR+rRZiGS9ZE4WQ/FnFQs JM86RCr6aXyv2kiCssNLBdWaoMXbG9UoTKIt7epU9/A82CQTdZI9apKnqRrZF0nhJ7GV6o5wkqb7
UzxIMlPVfhggXKeAs5R2eJq2mNk2x7qhmsGDMIUz17VOnPWChDjFhCrR5BqlDlg8YwLpY5QKtFRE 1KJ6sM8SWt6gtzN74w8jhuZd1FuAmfBOH4M4b2LFvW5dTGWT04R2mtNxt2XNzSWvZ4lLPTNxLAD3
Hj6zVYO19Sm4lTVKY2tmNdfoAuE0aiY2csyHaZVoMIwtMJaLGyHMDgcQMUwQ4zE7TQqc3LSlecyK yKfYJC8Mv0fseRYNyvyus8vgC+9nN000MEvjsy3JU+8k16qZYR6E+LBbkwg8nphWz+cbDo+coZE5
ByRoaQK7Adpkz2EEqgc7ByYRxxRgkG6+tEQLOGiBVwUU3O1TgWBvzarBshdTVtZcjULsuWlr6VUJ hrxVH+pdDcUY0z7XaMVSh6QN/AEUgfL2TM/CaMJdmiJLPDO01mLM+AKfJ0ccYouyiAbsKG8fcnjR
popNy92gWyZ5sGET6Z5nDaimI08TWlfhP8POmm+pwKJP7EcM07DEYYKPdcJCGpq59G92lxQWGKcE 9eFn5s7npVTFD9E1Q72joS7amKecQ8+cT/ACFhH+K97ZAUfK2WB0+Hxze/P+4Y/M0cQhEMXuGTgd
ljhXBl2mHaAR65PAo08zAnym2W/Z8AHN4rT/sYRpnHddr5ipMhFKx+RGDpP1hTXqycM+q5qww7PV PlRNQSDBkN9Cyt4IpCJ8nzTRwPyPIyBrZhw2shid1OUQjjUz/r4kyYQoihNDPj7DUpIx6pKp0PKH
px1LR4Hy1Bq8cRYV2SNUp20fKU9znZLZ9sYS4nSVLP/ZOtbBY1YxT3OSWGY0+qwuEdLUHDUrT6bz Q7RN0cRqEV3GAg5XbjIELUUCvVlwc61GiuTVmZXwNR6H4kBLAJit8SmyJu5ALiKAWc7LcvWYynqO
mDOOKW7wcFM1WHY2OpfJHYCcjIZpgPT8E0xSNpOTj9WjQSgmd9KxBLC3yQvY36XyCYow4YGVtD8B kzVAw0qaf/KZlOAZr4QTukgGqUlujkPX3kHRMo8svhVrdzyFsxa7aHhWquSZmjB1UfVT1Acskqwo
CtMDKlSbAsj6l0EI/baRyIKrIZgPW7myd8Rcd+yxbDtZprQfy6bDU+ZpimHfokHfwpR/xPrhZoPs RTy+ooFsDeJuVzUvVWW0FrFgNUg6Js5E0eFlECPe2y5DJAfrOaGoSSx31RQFkzJaK+PrVE6qdfTs
rSBOHlNZAJmZgwLxjR1hzofvH98zyEmH5KWj7i4itjnRqqElsTDebJbV+SL8RqQ0W8HJp3K5vC8l tqoOr3rMjm36jReJCplOEifH8w0maT2NJKayZJh4ruWMKNxYT6CmRWZNVSZvdJ5WmCdzQWLRJhRv
BctHpeR3QEkzz0kixFRlj4FJbotqhSi3UvdpgXxo+eIQzHPyCRkbud+/5CylqeiTB1k3WrlLHh9D osiaHPHzINMf8YlnxcNS77cd4uRwRz7cS7rvk9P6qgirZ76yT5XDWfbxQjut5fEeZpPj9cP7Hgx0
Ui3RRG/R3UoRcrJk5IiQJclRJJWK1zlCsT7lQn4MFV/Ywj7E11IOnzEmxlLU8end3LRC2E4qVG4P /enaiReq2QxW6GjySeLorBkcrRLs4rGf1ejoaQRPktx9TdgNTo2cgekpEYbEJTy8N8eo91pZj5NY
kKuXFbDFpZBI3vvkYpHsLkYc61iKcpJSNC8PTKLAKN8LWgYKksMiD5yIFcnDsFLl5aLJXrAMn2cq VTKhrCJSoDxjd9VGXaLSszIgyToy0eQP5uJl79snUeLFMlhuET2/GlL9OrJkWOGVCm41F819OLNw
/aRq5YutZchurWieqci+tgbZY9Uo+/aqG1RWeHyWI0v6i2v5+lrwO+KqkohJPjuCIV9kylrgKSKd UnHUpdyXXO4TCGeB40m9hqih6nczMwhOyUm6cWcQkiZ4tEQjaSnJOi9kecS1t9C0co01DV6iu8A8
rLR5QIvUx6p+T2os1UqN+PTsr0mS+GezumS/qtYom+oXC1mziOjTYjAGroDcotSUm+y+OeJKcU3L QziImX8ST+41++Lp0NUj6Sc6V7P0WsLUJBMApSsbSOIhNDkzbmpym5TasgjEpT7KWUmLd1bnycE1
3E3S6U0taTvJdgdJzc1UWdW8XlIEJOGP9TxFmqak8D2vSnihT3w2XxvBiE8aa/27Ry96TRNLrWsm CtVLahprVMmQsGLWZQL1CKxpIrFpDXxTLcyKUV/RpNUDTY6jmNyRdI/w/hCL0vWspGp+UgpEmvpk
sIm/wOrFPqUQFCV/liQJpaWmKkWUnjVdp/VnFsl89qr4BoUuFrprnqg3yUr34W3fEOUd6u0wSap7 TR0Rbsa7HUMRIxUirGhSt8rp/CqOPrwcf4ym4V2Tg5GTiiGNYyjBUrQkJjSojVPNDbMntRGSvuuS
Q3KzzAV6/IYELRjyotq1RMzalX36zChLZo5iANhbKWaxfKpLDdDIZ1UtjwOXd7k15tTvU4dV9JYJ deyaXmLdp0/tdk0KDYnlh+gNJmyusWm1rF0Tw3pU3E+QoUWR/aSOSQI4QHKS35dCmHRWYqsJJm8j
OJ3kjBGGfKqScLqq3Qn1IRFRxNSrp6ZruzTWsEjlFV1931llpEvevQkEHHGGJUq1Rr1va0IpvE4w g+ZwstqkKp7wmIXBQ0+5zspvtNZmZWPiWQ2wnxo0BZa8Fhz62szZMV3SVOMhvHBcL/7m9ubh+/uP
PjyFCfk9TCc176bVqCwumulMJ97MITuD2rUVBUNSgilaxuoisoTUk0HfyHqhr1rlZcOFjydDTajY +z0nbxLSoSU0YdXCyPFY0ux2EswkzZBikgviknoSSbJJM29zLWn5EJxkweVZeY4UDuTo4/WsxXxZ
VEWxorM3TYT5pIchy36CDRL3jgoeM2lXg/g8DTIwS8A8cT8Sg9J9OnmrEkuy0OgMgRV976VEGdQl RSV3rQLRlwnOEjeCzqKed5ZC2iLl+iV6RBUNW4oWS+G+k1yO84OzaNyirxAwuaPpD30LytnZk0RO
YsLif67KU6SxonpNb9oHxkhCHaoPG4Lo4iHxZJWFwAxp/BkimCTzBN9zKYvxOik1DxH+rlEl68HS 9vnpLCFSkTcIMOJTLVFTH/ruBxM5AqPcp7Fj0WNa0sCxWJFaX74N5flCg7siB8Wln7wZJbm6oVVF
KyIFoqJFMQ0SmoRL7NfwVZVjd3JIcUWdGId8i4TYUZahXEfKUD96qLs/8aOHdzhWLXN+UPZIcDi+ WstcpHaS9T5aMOPjxKoRYNXgp6q3WrUO7iQVo5zIXJLPEgV5kUnrR1gj5If0tPC02Efu03KjVat0
FJfEt4vWDt2SsijkgoQT39nV4zXZsQyN3kcV/48h8em6NxhqRq2vxAEflVlZvBC+eBJF3A99c3l4 ko/Rc6izWSclUvoeXFP5qjMW4ItqvnjlUK87agAjFZ4c8dmP0xoe7werJm0nb1SEk5Ka4/a0+uY0
++FP1luc7zMXYTYSv6BRHRfOYoryZRon6s4gqshFSagw/XOvDilIDIshX9lP2XvgVDQTpJ18+J63 bPD+vxrMpmXPTeNaZmHk7Qsfn0metus7lj2enCKLY6+HLE29U3qQq1THZ1Qk8cc3o1zRg77OpOUT
t0kjZEvz3Nmd1MWUZo3PsshTjqKkGPKuFEv5OCR3ySFp5+gheneW5ZH2IPa+uk7dIWRhluekV/le Z6mZk7N/jWG7lKF20dBdnSE4eFJSIefCQ4R3qLXjsd+Ja+sir+nzuf1pbo0pnSqz5PDt2Aelkj7R
Bou0JBQNUfk9TwPtnmQGx6fImpjdXKSdIkur0UlWR1tgsipGlq0ZsPHJr+AFr4QTvvhgHkt7/c1i XObQmGFobe1QBcRkip+lFc5cXnxK7+5WLT7KZ5P84WmVbBbhdG+GnWC/aIFXFPHUMpkuL2+fFc6c
0Yt2yGYxtmx79hzOmiDKUtwu1TfJlZNcU5MNSlE/U6QVqhSx20UdbNU9Zw3qrFVHmcpw5KtBEijR JjZPpMq/26EJgnZWD+hLKtT6ziTQ8O8byY7lWLtp7ZEqba0z6Zqr7loKwfcUfO3YSX5Hz5+blk0x
ciOH10GMSOJRPdZJTiiJFwZo0uhcztqMfYvvSaOztr3xhb5FRzsUq+zSzxI9zStm7SI3mKStyF4J HaXVhoIGfeJ5imDpcKHjyVDT7PpJ+jtL0kuY+eQ92ZPkU/SGChZTEjaa6m7qZLSoYJ6YH/FBaT4d
AedJpObboVsUBjXtz29qMvlFF2/PKCxIXaAJx5sYsibdkU23PNYwdR/Ra4oVa0sYGLRBTYOKs0bH v1XxJZmLcYpgvlh4zSVKoC4e0zxyuD19k6hI1q1KTkh7DczCXzGo3m0IIouH+JNVT/yGvlyup4f7
qgSr2kh3sj+R3DP7107aoHUX6zsTDx8hsWvZx52adu26Z+maNumanD3LAekBiy4JhrP2Zj0BgCH/ YEg1Dgtxzup4vRLyzN/Vq+Q7h/I+sqQ1ND3b1Uk4LZ2TN3cOe1tYMghqxDjkC1JEj55W44kd1dqc
vSbihh2qtA8FoTGGPHPY2eX6QYeEk4f2XjXPra4Z6t5FsE/iZyaKpOdYOqjjSWOXN0bsYJp4+/xS Mzt6eINzUtg3JEaa1aBXuBhSrDZEaoeGpEPKKc5sp76AwzeknH821Hs/y/BUtekaG5xVn6azl41P
vK7GZedhhqYxhxwcOgs1i9JWi2rEw+ewtPGzy0kpSrnfrzVR9nbW6ipmqMquv6mRk2IRvzaNh881 qofkzESrELq+49j1RJxW1s/yjvab25sfHt5/ZifR37ajDSLztvIONvRh0yx2d7wF4RqZ/pbNFcnr
aHerpjbx7Z0Pcelfbfpvuv9jVsiBYyn5rgUPNj06CM/SNxqR9BObm7yLOOn+bprpOMmQnObZPf/U mFPz7GJUByjKuwoId7BlUD9i5MsSt53tdRLn1JzY0ey2FmCFIwWMO0faUVbTMkATypxcemOTptvW
5TY5pXSSfStn3cA+WGX6SJI90omrew0mD1wVpklZ4lAaHGrh9fhgUyvMXJLPomnjZZMCElOXzq2d ap3rBFB3t/EqWKjNWaMXupW3+CrOrkY1h8j2RbcFf7V5wXUmsDGsrlk1sP3jfEhZTY1qn40VMXms
yP4Qj9I1dXmae/Ov05isaSBCZHzYMZQw0lzLZnANq5zNrxLoVykWV93eYW1/cECbrXUfQw2Wfm9x bk3YB3mUF+GYPR1vM7h+NlkqJdeJBjIvRfe2kOmO9dXqjFaw+b52BiGeELa5QwI2+1vhdqyfJ84S
oUF9nFpuuD1pK5VW/i7t/tBZcRRdDyr00xqGSxcPsRvM2Ug2ZrVMnyRzpGH5hBh6nqSftIDLBg6Q wJ/wdMjLRF7OZQLf0mwXRjRsCFtF+MqvRt/tvjBntaVrCVTms8Bux+xJxVaZMax9jTpBjcDh3A5s
SAJEA0zr1r0n9Um9QsJ6+nt/FCerTzpJ3tiZqpGlhHjWuaxtynZcj95Wj0/5qZruHdJSMvTEMQXm U1wbhFomfvIos0HVLZs+zcZRhR3BOCfX2ObKYNkw52RKdZi7aLOLFC52p02sktKkM7cxEQW45tMz
Do1vLg9/ePPdH1bPjudh7GLqIgSMr3k+NZ7kQMDZ4W+NqpJ2ezD34mfJ6bbU5H16hCdNX5o0M5c1 bl8LsgflQkJbfUpLxNw8MQ/RmxBCDhae2R5zPgsc2xebjGNitUDFj307opc5Oce5nYqNUWzBgDGt
djnrvdGWAB7/LjPl4LfuUpNkj4gz9rkKkMwU6FY6SbrEb/mLRrs8Y+4aObKkKoIAVZTgRVNieF+x 3laEaz2jgLX72kac0JcEzJeFhZDbftjsr4Vvap0jEYifT22YtBgIELa5YFuUI2cec8Gj5bUNrJfK
7IDmPo657L0RynIMoajzYzbHaX4ektGSGu0Z+eWgedHbAIqYyqI7dSZzfDNKlpzIoU0sSRwks1xO 4sjFrAWsVI4NxuyRO2b3t4mysSmHzU/Cs33m7KF1S/HteX83KT9bP65N9zZ5vEC7zREAFsdm/zoR
mzAUJx19xqiKpS16rLSoQa1R3stWGReKKO1PDoSXk76PIFFN1FPVs92kep00x+veqr0q0uF2dk78 A1hTmg26DiJk0QWCGPamJ9JKABYmjAl6YLH9MduQckNpKgbMCXUir6a1RQjBkogU8upGl9lFcO0e
5Kh6PGtl0W4Zr+g8yu3TJ3oDQe2a4pB0VpWTmAw+nKIShEPg9HE2z3t7bIY2uhwnAZAEIJKSrbLj mnZe1NmtjKy4e0FCcywZqUdbnRnZMC4u0kMwFxbLYg+ibIpqPyYgXKeAsuR22Lu2idmMYn1ule19
bFmqzqdtNT6qV3Vp2tpkEfTwJ8v1hN5JKVwivnJeUnNflNNFjMtc3U12wU1TuzwW6U+xnRz705Rl w2LOXPc6cTVQSzAxk6kSfZKJqQMabxKB+JmYCtRU3DwcnFYnrK0vxq1s2jjJmtnecuIFzDmxmdjZ
l1ixh7P0hz/JffY1H98dWnmPGh1pUrDrtqVrVIJoQPoIqqDctfzUi2ZuZDPc9RCrnSO/n6THKBmJ dl0srUSFMckCZbmpEcJq+QokhgViPFbr3QIDtXRpHqsFHDhoSwLbo7ZFnmMiqB5spbqQOBYDA3Xr
Ot4MLTezwufLgNKsarHU8DkNqdVFyRQNpYJ0PLJbaNwHpdpzOdTFMzzUo3W+raZrNkavtMD3JFbU oSVOR5IaeLeEBHX7EiDo26nVoNnLFFY2oZwYAhBL02Dp3RqTIrY0d4NsTc6DDlub7nk1xYPdzkuF
A61WDHVgFT2Y2CR/VSXDVLWgqL1dZ8XJKF1i2p4iPXX90Jyhbpl5yHamP/yOW3t+zjp85LYNJo00 1t0JNUPPximJ2EVfux8xLMUSx2R8rBP2piGZW/5Wu93CjouLA0tcKwMvSw9QifWF4NGXGsF+ltpv
3SJNEfWkw0euKxBv3PXcLdsCvLLqpTRn7XGn9X1vVc6K8V4r+umxZLVGks+UMijNmpDF+xu1KCtz ee4HOItL/8cSlnK2RodlqqrJQulY1Mhhkb6waeeiYV9tHqGHV+/jdmwZxZaX1OCJq8simybXpdtH
Nk5aJrSp0andyaH3JsfLqyZRinTtJPGVGo5wkt5SoB7Vg312Dt879Hbmb3xGauhxcY0W2FfiPUc4 yktdpzR1e2NPxWUq2Q9xrjNbGk+tmJc6Sey7OPGz2+YSp22OAJgp85gzjsVusHBLNNiHc+K5LOoA
qyd4OnVxlWcp1LOj6O5rWXOWsvVu2pLcghcBhEc+dyr16qZ7VxLcGaamyZGmBz+ano8+q3pIhejk 5DRxmAZQz6+gkvJUOfnYTWsJxaJOOjYD9rZoAf27RT5BEBY80JLzK0Ax5YAC1RYDsiHghBDyPUci
igit8/D+Fp/W0bPPfayOT39M+vDEGVocZYukejjP+pP2myE9hJZmuPdLURMPh/ozvcKHLlzqA34/ O1DODeZjrlzZTHea7thjMT1ZFrcfW6fDUualiqHf4oS+hcX/scNqmQ6aTwVy8ljCAsimOoh5qyds
M/SKuGH7C3ye3Mxy0twieZtuX5eL7Ya2Jp66O3+cXk38EFszNDoaGqKtbI9elXVCl+67tr/58s3l bDkMEMNlTSGodEvffIF/c/f2v6wn30+v/2D1MRYD3bM5mAlhE27Ms8P1Mc+U4oWX7PrY63rPmy9q
4dXr/9hX/v308h9stUkt9yPUVBp4MqxHhzfjps7Tu8fu0UmxHDzWFXhgNFm+hzfPHqWGwuuLu/Xo sWNve10xPNtCQisd1Al9nkUFulxte2PrwArSwP6+s9fxOueiFECpQqRCW4XGsDMVrikdpHUIwsr2
5Fh54G22+0RL+ADglO2y7XlEK175yAsoe50pGcZUnZd1p9l7k692PWXp1iJkvTewv0SvLWbNWbnY UqmVKx34VQvcQAMquLhWwgixCuu9PM51XlXYC7GUSkcvzgpXeFKdLhF2NCchUAUDkbFejrnIFdQt
PcN25/Ls4uHxxBB51jG02YwDPamp8XrTmZihAJbK07KV/J3tMi01O3ga50IY4Wm33vLk3cz6FN7Z MChjHafAfaIXMAHYBacWOtiZ03S+Mt20XUnKM7UKI8f203ae1Khp8g4Y1xkI9D8wFmu2Ay1QICFK
WEql/ERL5AR8n0fVgU2beSAeu7zhb1/jaT2e+SywE/NAEJjH09kGwOrJuDVIrQSBHYrPPD6/sgE8 gCIbGwFldm8gqTtV4X49HHySE9vG7sMM1o0t7O+2geySCZ8IexvzNGcWpiMGKBRue/MdC8Dzgipo
FVYrTEbidcrr/FMbB+V+8CTxbOU4Gs+6x5p3YgHUT6DCM9WKXQ3BA8KdJ1RXEidGvIeX165cDSur ycp7wVshsqurHR2l2W3axuYQ9gRvdbRXL3/DN4Jig0KHmzVPEJmYAnXay1KIHIBNNsic0USeuIVi
k/brTkLe1VmSOboN4wEh5dXCOxkF45JS7TwF2tJugEGMHeIz8aFIduf1HrMh0CcfUI0XKZrAg6jj A6Oz//A+HSxMaLF9Ong4W8F2JmcfWBD8uhsUwmZgFoxJYry0zvSw95SoiZ4P5yK9Purcvvhkkq4M
KC9WSjyg/4KPsMUg5v4XlTnyPlwapTi5A0PD69vZUrabmeB3eFF2jJDSde9hPDpmgbSG2szYAOuU KtX0fO52FREsArP5MlsL57w2TVw1+vDt+YgJkfG0v0sMJj1ZhIfgJgIXfZ8oZcxKO8iat9ULVDBR
eDT0dq4s8hg+D8H2KSDGszJ4yjXdUlS0MMnuVVgtOXC1NR682jgvdSCVWrKTncdYjIT35Zln2N+l SiHd51AMJjoErL+8eE7WLuwPTLuxzq9ib+CCMkPjdQxV2f50Wqq2cMC+QgdlqrN7dllLwSkF68J6
WZayA2tjuC3FBB2F1PxAm4mhBrKBmLtnrrAjA3yHVvXnxBBlupA0PMjb5yWAkMjDzlsvkYDB4/2r T+ytVnmRuIX5fHlhnbqLveOtzBXxFBTdYkw7jIEPWmmKSIRib47jDvYjtu52bM3MCGJnMtgWC6Bg
dna4TSLwvqKDytRv8gbTxdvPp7Jb3gHRWyRtsT9/TijZYdLFudWYEnn0FCa5GdktrQHDUsv89zr3 s+WlKjmRcepGUlwQldV9deK3z93RQwXfjbQPuJh/h7LoVOK7zhcKBD4vez1Pau7jrApPLjMGs8Ji
RCXJIHdbrOEJJDCLtzqsJAov3MqAL49p2Ox1eEfCEG8GnmsDqDIvgKU1M5RhlQqwhXlKK8/B8DiE NmIur6ST+RVYVnaDtttYnA2gy9GfD4xAOrBTYP/etl4uZ2btRcz3/mAg0jMnnqGg8XShBjrnLy9T
mzTz2FWOhXdNGzfXUIXMZ16KsZtueBF0eaGWbA0GpryNen+NjUv8xYOUa7VDqmx4gTQFXh/cZu6H QenC9AWmx/br7uOgLQ3jdX0y/GDoK9qxfb7GLttsNAyO2d0LGfSxUXTIVt3b2T38qrwIrtwBhU2d
ZvxZvRduAby8CeIZ+o17pxryTeMY64wM9qRA/7eyUePg2eYwXrbulAEhP1gWWLkuXvLNe44hMOtO vo7HqHjgxgEp8IIs14uAEiokx636mbrCZWBnaQTz7XZXMJeUX7Qaa8GgVK+edzIEQYSSWYKyX9ZD
RF7C0Xq8cYS3A1HSBqSRvJxpF3IxB7PkMyKiyakHf00EW5CdnOml230LYMLOD/HejEmSuhvcEceU QAAWf8Ek05YDckDnfYz9JiACPNhMxBwGJV/chBoozyp8vqqGCIid+bf4ttlVZat0e+8PYQYkyYiw
uyFskWFQYYhf3jskQ9BFWBgLVtKKpwsiTMjYjZpsuh9QBV6oMK0BC+iwXhDBcYOTeytYgnIz3xZN Movwra5mEb19mxl7dxX7PZ75ayYWgcII9szb9DBphsAF8ebrjHFjohAb23qHye7MmPt57ZXsfo0A
RtCzH9vGN7uv5ebO5toDZiCGzYgVFrb7WSRxXy5mby+B73ETMdv8gIgR4pmX2+HeDqFBbXfnHRp3 Ls2fTqCXsEzP7Op3wIoEQzfPt9iNfLwoqz7fv4B4ISp4Sb4xkoPfM4PF/S46nMIKf+NZh3Za3wYz
GEBsmR7ukDLvQbmtPY9qvCQAl+avN/Dk9nQ7dl/gUcHOTW6ezuKF6GNFRLN7hpcuJIRj5bl1nLdr ywAXamst1RhYGURMYENVs2G+Jdah6RFHFLog24qxvJKi80qdrLfO4clA95Zjv2KOOAROuGWE9vkW
QAbsAo+VLkK0WHPsNzPa6Xgb4hheOmImrFtyPIa8IWIJGEEL7+zfWwyY+R6hP/ARvexTXfxRivDC go1yvOokVPgTAy98Mlvh8VcxjrW7lZZj52WIqpkMFu4yqwLqtpeWfWCDK5ZjoRWelF4UL6Fs9CDY
oszEUIT0IB44VhaoQcBj3nHVZZ7OQhxbjhd3FBX+ysGznNgle/xhjmNiN6Na/nLLimjCTMqQIAe4 8/6wd/5gixszUEScvfaOqAIoieZ/cHXgcfBnPsakFEGHZA5TMittBUziIXVlpGZuC6qa3voLnEy6
254vA4QY3Ikcg3C8KT3bXkLZGD3w2v1jh+Xww43R2bHCI4a1KfIXE+KOPbg66Dj4SyPDOEXQoW9j Awg6naD8LsaK9DhhmacqWFXIiT9N8eo+qh1qECC5BRsabLTe4vzJi77qmmd66fWNzFoDnTB5S9Gt
25kZ/YGSeEmdsaqFfTDWvEHhGU4eGQEQvAgAnF+1yshbAOCWzRzMJp3EX8d48T2aHloRELmFPTR4 1/po3LG77TutFOIV6PFy1K0In7OyUHnHK4PIQ9njxZlJq24yMc00lnbar8mmGCJH04ac5bLhtWzM
13uL9qsbfbb92JU/L7/IMxcgJ7zetH8z8qZnB3YrbpoN8HegY1NQlzG8nSmA2dsGeyU3eUPPDmTS LmrAC8RhGog1BEeOSov5GWunCdpBU4SwEcUuflCJ4PBnFDDJnYimZyVOrYIHN/NNVm4c68JqGzkb
bCtIvPpnbK8/EwAxRI6mBTk3beGlbtj9bKAL1ME2u3MIQRzNlkW366JO8A6WIoRFKN4PCLMICb+R u4hAfp81Ng/BB38BZcCW9rJPtKAu2eAd+nlYTSh/0QMcgEj/uXtF2qpkcHUE/mXBwUo0BBTQCouP
gJkDBpLxZshpVfDitgOTuY/EunDcm52NiX7o781qM7kw+CMsA960l5Wn6t3umIeNHrtlgj8qAgnA V4Y8s3t9Nd9yJc3h6jGZ+qoJAmQSPBqel6KthPlGIFe2/91nOwX+ssfyo/exfeSPxkwMLuywHLaY
FueWYE7LlAyuXmfAPvUWNrKt+CGsY1iZF+jXeovE2aGDOI/Zthd5SugkZDTclqKvhP/uI5UVenfL h7xPAJjMwQONr3jyAeabTf6XWmK9AX/xBBySl1DywOF4MaZsBwKDgYh1Zo03SeE+9Rdtz3IcOLCw
ePLHRaDgt04piPBtf9B3t0jZ0fEEMzADhBduuWJrEoTPfmdgmiV28fBHVyAheSolj8scz/6UGXu4 Y1sa2yyN5zNHW0xHSoHpAV0wh5F2ozLJ2y2GYI3vs0UMZpMQg7Z8XeMBpdHydTkycA8tvqFaVSO4
0Yh4OBy3TipEUP3Z2vMwOaLXejs90KxzjO/coTE5BaEHdMG2TuusVuX2r+/tA1tgbl4xbJ/UwPR8 aq/BZhEqf7DlRW3SCDZ4Bfw9lmc44fjC6yrmfrfZNKy36RZV42m2qocL380RopmAAT6Y+qFdX+wC
f0IZRqPl+24d0B5WfEE1e0Lw1F6CzR4N/mbMs9mkE2yIDPiTMDc4c0KQ2MuOvZtdR9b5O0a3Id5K SYBy5Y8iLPFkDXvlr7w8u2bTUECzMRLcHMy2C5k/iPL6mGz+aEqKLxy8fgFjMskpk893SABaHsty
S2gGgu3VKQObCBd88Dqetrw1jFShceXvMkz1ZItX5Q/NtFtDIR0FLBtv51gSzMxo5m+yvDzkZb/b r0NB/myEWc7lTVB2MlPaVpAe+XMSDSHsWE4ni7jhbfCXDcwPZaUTO+U/O2vTwRnz9xHyC0qgbGHv
sqMlSvD8EQ4TklMht6IzQHuO1di5w1+u2J5zxhPUncxrxna/VuQvWjRsNVd0zGQN4g3+uMKORHlO mNJ+PgY9LvxFF1ie1zU1IBIUIMC2J7Impb6cZ60TVR65xW3QljoatPgMXpb/NEuR509SxNdlKmAd
n/f23+I1C3KG/URDfiYJjC38Ha8Zu6V0jit/VIa/APaidAUmwQAC7P1G9p/V59SJIZyZh4jLofVV GPlnfMv7V3/rDnj7t+6A/w+7A35584UZofvHx4fHm68+fn7//suXPwMKVCwOI3AAAA==
7eFviWHnMmMo69SxX8WILw9ZQ3Tg5G/0lvbkv947ePnrvYP/L+4d/PLNFyaKHp+ePjw9/Oz957dv
v3z5H4NRlqalcAAA
headers: headers:
Age: Age:
- '0' - '0'
@@ -179,15 +227,15 @@ interactions:
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:36:49 GMT - Mon, 08 Jan 2024 11:43:41 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Accept-Encoding - Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-chart-api--mtls-baseline-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-chart-api--mtls-baseline-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '39' - '56'
status: status:
code: 200 code: 200
message: OK message: OK

View File

@@ -5,143 +5,66 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
- MOCK_COOKIE - MOCK_COOKIE
method: GET method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/IOO?crumb=MOCK_CRUMB&events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2 uri: https://query1.finance.yahoo.com/v1/test/getcrumb
response: response:
body: body:
string: !!binary | string: ASqh.0tGvoh
H4sIAAAAAAAAAMVd245duXH9l34+Odm8k34L7NweYg/iCZDAEILOqD1WLKknrdbYk4H+PWsVWad7 headers:
VzGx3oIBenZT3Nxk3WuxyP757rs/3D893/3i57unh0+f3+Ppdz/ffXh4vmfTd5+fnh4+fvfT3S/u Age:
/uW3v7q73H366cN/PL7Hr//4m9/g14c/4+2P3z/8+v7DAxq/+eW/ovHdx0/PT58/PHx8/vanH9j8 - '1'
t9/+HZp//+7p0/O3T/dvH351/4zm0WrspR/HBV/+/vP7+6d/un/648Pzt+84VmhH6j1V/vP3H54f Connection:
f//7Tw+Y218FvICmZ3T678ePMvpvv301k2/XP6wZ/c2Hh6d3393/9a8f/vTv//b49Mc787Fv8K/o - keep-alive
149riZdJim+eHn589/j50y/fP37CP9V8Pcrl7gd2/Id3HzEHdhS6yGreffz+G3zj8S3p9cPTA//n Expect-CT:
Z/fxrSwpx2Ou+NOzEJ1Noddju8ovt7n+hTHjiGZM/cxuzB8ePz3/hQHzpPvrAdc3/IAY8e398/3f - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
P91/5FTfPVNYwlsSmvzAL3j88f79u7f/zN8/Qb7mPxf+CB8e8TPJzyo/w0/4Efmj8Ec4+POnZ3b+ Referrer-Policy:
cP/nuzdfJvMxtw8/YKxQW2ylcnJ87DnW9TjiOOZjOkLJ6zG2vDqkVIN2yLlph5JSX48YdY2bRi2r - no-referrer-when-downgrade
NR8lrtYcUl+DgUBlDZYzJrEeSzu0Q8Xzemw5ra/lHscatxxd51tC0/mWWIN2SOi9HjHAGrfUofMt Strict-Transport-Security:
ret8S69VO4yS1rj1SGONW/Hd1aGmrlOvuQXtUDjcfKxZF1RH1/m2oynVW6hK9RazroIr0g5l6Hxb - max-age=31536000
7Up1PCvVWy+6ih6CzreHofPty1TwMTVlQM9FV9Exc21FR23tXaneR1Oqj6PoKkYKOl98Sqk+8lCq Transfer-Encoding:
D5BhjTtAiDXuGHHNFz/Dojoex6J6P0JfqwBP6lpFh+h07VBD0Q7tCNoB61jjggxrvj3EMLQ1HYvq - chunked
eByL6j3ktlbRQ0tdO/SYtcMIQTuMsaiOfl1XEVPW+cYcdb6xhKId6rGojseuq0BPnW860mJATyEu X-Content-Type-Options:
BvQUj8UAPA5dUCpFp55q0qmDr0U7YPk6LiRujZtD0anTRq0OOSVlQM5BGZDLoQvKEFTtgP+0w0jK - nosniff
gHJEZUAJhy6o5KLzLSUpA2BqlAGlBV1FGU3nW2F6V4casjKgxqQMqCnoKmATdL7QV50vtEIZQFLp X-XSS-Protection:
uCPqKlqsOknYK6U6DI9SHWZDqQ7V0vk2vrgeR1Gq9yMr1SFSuoqehs4XS1ZSY8JKanxZp97H0EkO - 1; mode=block
qPzqMIQW8zEWJTVEQEk9qqopHlVNoaWqpuC7qim+kNcqBiaw5otHVdNxJFXTcWRVU+h5WavAxFRN cache-control:
8ahqOo6haorlqppCV8pa0AhZ1XTgIWiHomo6xPavRxjYNW48VGNHDKqxeFSNBS9VY2FJqi4IoqVT - private
j001Fo+qsSN21Vh4t6YLSlE1dqSkGktli9ohq8ZC6JsuCPZD54u3FwPwqGo6cmi6ipxVTUcuqqZg content-type:
iqopHlVNaRJ0FeVQNR0lqJqOElVN6ZuUAfAAuopSVU1hflVNIWSqppReZUCBbKxxa1SNHTWpxo6a - text/plain;charset=utf-8
VWPhxFVj8Th0QVBfnToXujog/lQGgBXKgBYPXRBcuk4dDlmnDneqDIAzVAZgsrogWH6deg+qvKCd date:
Ki8kUpV3wOLpgmAVdOpQb51676q8cMyqvFhY0AVBYnQVI6m7BcXU3UJ1s7IF9FO2YGBdBdzFXAUn - Mon, 08 Jan 2024 12:08:37 GMT
tdwtHkOebMEjTFtej3D+2qG0ph1g2rRDT3UNFo5RViuEaE4dj7F27QDTtgaDHQ1rMPmgPvaqHWCO server:
tAMkYo0bYdrWuDEdOt8I06YdcmvaATK3xo2wcmvcSAuhj0Onno4eV4dEI7IeYeXWuAifdb6Jhnk9 - ATS
wrStwVZq8wZB94/IIz4xHn/77sd3bxGDyy8v3oO/3X94/MzM47giLpN4mxnSrQtC4pdZnfvn1G79 x-envoy-decorator-operation:
b12+MGh/9/EtEqPnxyf53n99fmQfpH5/ePf9H/CAtEfyEsQpR0IYUC9oETMOSgbGmuFS03UgFKIM - finance-yql--mtls-default-production-gq1.finance-k8s.svc.yahoo.local:4080/*
RVixlC61XAPfgm+A3UNkeqn1emSOA6MJr5Qy++SMl6BrjDXCYJ9Y+JOuBHIK+wxHjZ7tKtFZzHQa x-envoy-upstream-service-time:
lX3aNTURSWg6rFOTFvMWRuMcYoCspSNLH4jFYPyG8KnKwI3DwDvCjsKDscUurl0zJThEhjAIaS61 - '1'
X4WtrwbuVwmbbq/xLUu2dqWNglJictDhyrfE3TEVoeUB2QZIcl7ocPPpV9i0QcuGWBad5C3z9XEV x-frame-options:
dxVgouGhBhskC3pF/X6NHAa6kxqNLvscVHNliAx8GjdIn3gmWL9SM46UmIEkWZX5drtSYV4vE/yM - SAMEORIGIN
lnvRMALywskgasuIewMbRLdfPlQ38pOyecfyrjladfshzJd06Iw3YCBlmOHYOyU1hTPFKlZ2Xmu9 status:
FiMsxbEd9DBfbE5/ILv9zPa+aWnVCWY/cxki/xclobkZdkt8iMa5SzswHdIaYT8iszrYYhiPln4m code: 200
GPucpAUNRk0aMZmTbPClcFIuvhVO9Grh+lqYIR1oMSqJlnJiPbtk23BWNraYhe/7nOSbs+knCUJL message: OK
q69tUYuuS7SsQss4izxajNlDi1+UWXeyBowDHyc2RCtKfMmwIRlzioaz6rPH2eizhdNriKzLSK2w - request:
xdgztPTj3CfbgbMTtgRhO9McSyiysrPuoqehfHLsSlCJ1+IuXc5cz+6lYgwJusy5H2cLLus7t2RH body: null
p2wNNj9o6AQHemZatV4RLZYqxSpcsUYMLcZkoSUYZcrG7LOLEd/dwMaqYX7G7qMlGN0u0O2TdSSl headers:
DfdBivN0slt4dobFf6o5PrhAozVr4pvz9WwxHIb3P3v2xkjjLOUu9tiPfLZQ3fg8NMTjvE5n4Dmb Accept:
s+Q0ZxHgt6T57GLYHC3DLDOq1dZqvRCl0MmlZU8xPgcN8ay42RE1W5XITv2Low8+FE9RwnYyVnSh - '*/*'
JUZWoGzpbIt38mRo02zIh2GsZdnSb9i37Keqcw02PmKDkVOEOueICS1Nhje0d5GO75Kdm87XacwN Accept-Encoding:
75NTBRhgw5Jk3Vre+CPTJTkjunNI3rQtSQqW4V4ErGK5nIZ9zByKjfY2LdnGoJv5JBvccr3OaVvp - gzip, deflate, br
2oUQlh/BGaLo1h6dvffUztdkzFdx9C+bPs1RtVu5tT4VKmKcBFqMDjenNM1FGhv7arx6d9aiu1i4 Connection:
uyV0pwv9WoxtRR9D5O7s/8bc24Gb85e7CRa7KmtiuvNhWJWxnMP5h2HFqx9OdIa1ruiT3Vtn48+d - keep-alive
2dOM0WBMhIxy4m93GUi3+UYPViL5aWKCAt5wQ+/N5e67uQdMNOQgAGKBBVgetoTUUkQiEiqzPIM1 Cookie:
FIcabAGQM4XRUh30YWSf6alBDapLH+HRXCJ4SDp8zt49jNIc3rDDPyx0sINsPP5hNFSyypMpqk6T - MOCK_COOKIE
iC+cDQ/fSqcIRNJesyyPUpzN/hb+sGDHDv6wEMmOFpZe1SXqzeZF1dm46sJ76XN+q9jgwYMiO+zM method: GET
mLTqQhmicmahLkhCixUel0psIBlr3TdQB6LOc4zJPo4Tll7Nr9yuyqMhziVU5zaqM4QeKSMcYmKa uri: https://query2.finance.yahoo.com/v8/finance/chart/SPY?crumb=MOCK_CRUMB&interval=1d&range=1d
wxn8w2Yth0uZDuehvuolm7QE5yWCC1+DC+2DC2iDcwq7cUx+HTaojwdIbAgUXVC4w0N8eHPIDIyL response:
Dhb2Q8d+NhpsMc42XmXE7hAW62CjI8uuj/WeO5TBMDs5XCu5IMbHtNFxOzoW7MbxUJKNFZMLbLJb body:
FoL8swHcRLPJBQXJwV/J5n/ZgQXZilq5zlzIOB/BEGzsbmOivMEZbFDkUZ+ZLZQNamHTk+LTYmsi string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"SPY","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":728317800,"regularMarketTime":1704488400,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":467.92,"chartPreviousClose":467.28,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1704724200,"start":1704704400,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1704747600,"start":1704724200,"gmtoffset":-18000},"post":{"timezone":"EST","end":1704762000,"start":1704747600,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1704465000],"indicators":{"quote":[{"high":[470.44000244140625],"low":[466.42999267578125],"close":[467.9200134277344],"volume":[86060800],"open":[467.489990234375]}],"adjclose":[{"adjclose":[467.9200134277344]}]}}],"error":null}}'
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
headers: headers:
Age: Age:
- '0' - '0'
@@ -153,6 +76,202 @@ interactions:
- no-referrer-when-downgrade - no-referrer-when-downgrade
Strict-Transport-Security: Strict-Transport-Security:
- max-age=31536000 - max-age=31536000
X-Content-Type-Options:
- nosniff
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '938'
content-type:
- application/json;charset=utf-8
date:
- Mon, 08 Jan 2024 12:08:39 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '39'
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate, br
Connection:
- keep-alive
Cookie:
- MOCK_COOKIE
method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/SPY?crumb=MOCK_CRUMB&events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
string: !!binary |
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
fHp59YuPX9+///nn/wMaQCp5c3AAAA==
headers:
Age:
- '1'
Connection:
- keep-alive
Expect-CT:
- max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=31536000
Transfer-Encoding: Transfer-Encoding:
- chunked - chunked
X-Content-Type-Options: X-Content-Type-Options:
@@ -166,15 +285,15 @@ interactions:
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:37:21 GMT - Mon, 08 Jan 2024 12:08:39 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Accept-Encoding - Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-chart-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '34' - '36'
status: status:
code: 200 code: 200
message: OK message: OK

View File

@@ -5,7 +5,7 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -15,59 +15,59 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
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
headers: headers:
Age: Age:
- '0' - '0'
@@ -92,15 +92,15 @@ interactions:
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:37:21 GMT - Mon, 08 Jan 2024 11:44:18 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Accept-Encoding - Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-company-fundamentals-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-company-fundamentals-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '37' - '40'
status: status:
code: 200 code: 200
message: OK message: OK

View File

@@ -5,7 +5,105 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection:
- keep-alive
method: GET
uri: https://fc.yahoo.com/
response:
body:
string: "<!DOCTYPE html>\n<html lang=\"en-us\">\n <head>\n <meta http-equiv=\"content-type\"
content=\"text/html; charset=UTF-8\">\n <meta charset=\"utf-8\">\n <title>Yahoo</title>\n
\ <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimal-ui\">\n
\ <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n <style>\n
\ html {\n height: 100%;\n }\n body {\n background:
#fafafc url(https://s.yimg.com/nn/img/sad-panda-201402200631.png) 50% 50%;\n
\ background-size: cover;\n height: 100%;\n text-align:
center;\n font: 300 18px \"helvetica neue\", helvetica, verdana,
tahoma, arial, sans-serif;\n margin: 0;\n }\n table {\n
\ height: 100%;\n width: 100%;\n table-layout: fixed;\n
\ border-collapse: collapse;\n border-spacing: 0;\n border:
none;\n }\n h1 {\n font-size: 42px;\n font-weight:
400;\n color: #400090;\n }\n p {\n color: #1A1A1A;\n
\ }\n #message-1 {\n font-weight: bold;\n margin:
0;\n }\n #message-2 {\n display: inline-block;\n *display:
inline;\n zoom: 1;\n max-width: 17em;\n _width:
17em;\n }\n </style>\n <script>\n \n </script>\n
\ </head>\n <body>\n <!-- status code : 502 -->\n <!-- Could Not Connect
-->\n <!-- host machine: e7.ycpi.swb.yahoo.com -->\n <!-- timestamp: 1704714197.766
-->\n <!-- url: https://fc.yahoo.com/-->\n <script type=\"text/javascript\">\n
\ function buildUrl(url, parameters){\n var qs = [];\n for(var
key in parameters) {\n var value = parameters[key];\n qs.push(encodeURIComponent(key)
+ \"=\" + encodeURIComponent(value));\n }\n url = url + \"?\" +
qs.join('&');\n return url;\n }\n\n function generateBRBMarkup(site)
{\n params.source = 'brb';\n generateBeaconMarkup(params);\n var
englishHeader = 'Will be right back...';\n var englishMessage1 = 'Thank
you for your patience.';\n var englishMessage2 = 'Our engineers are working
quickly to resolve the issue.';\n var defaultLogoStyle = '';\n var
siteDataMap = {\n 'default': {\n logo: 'https://s.yimg.com/rz/p/yahoo_frontpage_en-US_s_f_p_205x58_frontpage.png',\n
\ logoAlt: 'Yahoo Logo',\n logoStyle: defaultLogoStyle,\n
\ header: englishHeader,\n message1: englishMessage1,\n message2:
englishMessage2\n }\n };\n\n var siteDetails = siteDataMap['default'];\n\n
\ document.write('<table><tbody><tr><td>');\n document.write('<div
id=\"content\">');\n document.write('<img src=\"' + siteDetails['logo']
+ '\" alt=\"' + siteDetails['logoAlt'] + '\" style=\"' + siteDetails['logoStyle']
+ '\">');\n document.write('<h1 style=\"margin-top:20px;\">' + siteDetails['header']
+ '</h1>');\n document.write('<p id=\"message-1\">' + siteDetails['message1']
+ '</p>');\n document.write('<p id=\"message-2\">' + siteDetails['message2']
+ '</p>');\n document.write('</div>');\n document.write('</td></tr></tbody></table>');\n
\ }\n\n function generateBeaconMarkup(params) {\n document.write('<img
src=\"' + buildUrl('//geo.yahoo.com/b', params) + '\" style=\"display:none;\"
width=\"0px\" height=\"0px\"/>');\n var beacon = new Image();\n beacon.src
= buildUrl('//bcn.fp.yahoo.com/p', params);\n }\n\n var hostname = window.location.hostname;\n
\ var device = 'desktop';\n var ynet = ('-' === '1');\n var time =
new Date().getTime();\n var params = {\n s: '1197757129',\n t:
time,\n err_url: document.URL,\n err: '502',\n test:
'-',\n ats_host: 'e7.ycpi.swb.yahoo.com',\n rid: '-',\n message:
'Could Not Connect'\n };\n\n if(ynet) {\n document.write('<div
style=\"height: 5px; background-color: red;\"></div>');\n }\n generateBRBMarkup(hostname,
params);\n\n </script>\n <noscript>\n <table>\n <tbody>\n <tr>\n
\ <td>\n <div id=\"englishContent\">\n <h1 style=\"margin-top:20px;\">Will
be right back...</h1>\n <p id=\"message-1\">Thank you for your
patience.</p>\n <p id=\"message-2\">Our engineers are working quickly
to resolve the issue.</p>\n </div>\n </td>\n </tr>\n
\ </tbody>\n </table>\n </noscript>\n </body>\n</html>\n"
headers:
Cache-Control:
- no-store
Connection:
- keep-alive
Content-Language:
- en
Content-Length:
- '4350'
Content-Type:
- text/html
Date:
- Mon, 08 Jan 2024 11:43:34 GMT
Expect-CT:
- max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
Server:
- ATS
Set-Cookie:
- A3=d=AQABBNXfm2UCEACtmMeuc8nOjsLoX1hjlwQFEgEBAQExnWWlZdxW0iMA_eMAAA&S=AQAAAqMQ-PrLvICW--J8J9y-wZQ;
Expires=Tue, 7 Jan 2025 17:43:34 GMT; Max-Age=31557600; Domain=.yahoo.com;
Path=/; SameSite=None; Secure; HttpOnly
Strict-Transport-Security:
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-XSS-Protection:
- 1; mode=block
status:
code: 502
message: Connection timed out
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -14,10 +112,10 @@ interactions:
uri: https://query1.finance.yahoo.com/v1/test/getcrumb uri: https://query1.finance.yahoo.com/v1/test/getcrumb
response: response:
body: body:
string: YchZ2EN.z4k string: ASqh.0tGvoh
headers: headers:
Age: Age:
- '346' - '0'
Connection: Connection:
- keep-alive - keep-alive
Expect-CT: Expect-CT:
@@ -37,11 +135,11 @@ interactions:
content-type: content-type:
- text/plain;charset=utf-8 - text/plain;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:36:48 GMT - Mon, 08 Jan 2024 11:43:35 GMT
server: server:
- ATS - ATS
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-yql--mtls-default-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-yql--mtls-default-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '1' - '1'
x-frame-options: x-frame-options:
@@ -55,7 +153,57 @@ interactions:
Accept: Accept:
- '*/*' - '*/*'
Accept-Encoding: Accept-Encoding:
- gzip, deflate - gzip, deflate, br
Connection:
- keep-alive
Cookie:
- MOCK_COOKIE
method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/%5EGSPC?crumb=MOCK_CRUMB&interval=1d&range=1d
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"^GSPC","exchangeName":"SNP","instrumentType":"INDEX","firstTradeDate":-1325583000,"regularMarketTime":1704491654,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":4697.24,"chartPreviousClose":4688.68,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1704704400,"end":1704724200,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1704724200,"end":1704747600,"gmtoffset":-18000},"post":{"timezone":"EST","start":1704747600,"end":1704762000,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1704465000],"indicators":{"quote":[{"high":[4721.490234375],"close":[4697.240234375],"open":[4690.56982421875],"volume":[3844370000],"low":[4682.10986328125]}],"adjclose":[{"adjclose":[4697.240234375]}]}}],"error":null}}'
headers:
Age:
- '1'
Connection:
- keep-alive
Expect-CT:
- max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '936'
content-type:
- application/json;charset=utf-8
date:
- Mon, 08 Jan 2024 11:43:36 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '2'
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate, br
Connection: Connection:
- keep-alive - keep-alive
Cookie: Cookie:
@@ -65,126 +213,127 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAO1c244cR3L9l3mmy3m/6M1YLdZ+sCBYMmBjIRtjcSTRS3Lo4XB3ZYH/7hNZGd1x H4sIAAAAAAAAAO1cWY8kx3H+L/O8Lud96M2QBNkPJgiTBmwItLHmjqi19qBnZyXTxP53f5GVUR1f
omXr0S8DQcPq6qzMyLifiOz65e77n+6fnu+++OXu6eHjp7e4+uMvd+8enu/l1vefnp4e3n//890X tAw+GxgsMJtdnZUZGfeV/fPD9398/fT88KufH54eP31+h9Hvf354//j8Wh59//np6fHD9z89/Orh
d//8zZd3r+4+/vzuPx7f4uO//eGbr3+HGw9/xfPvf3z46v7dA25/89XXuPnm/cfnp0/vHt4/f/vz n7/5zcOrh08/vf+Pj+/w8d9+983Xv8aDx//G+x9+ePzq9ftHPP7mq6/x8O2HT89Pn98/fnj+9qcf
B7n9D199+ft/wRc/vHn6+Pzt0/3rhy/vn/HF38Scah05hPAK6//46e390z/eP/3p4fnbNzJf7KGk 5fE/fPWb3/4LvvjD26dPz98+vX7z+JvXz/jib2JOtY4cQniF/X/4/O710z++fvrT4/O3b2W92EMp
0FLor+5+fPf8+MMPHx+e5bGxnnjGoP9+fC8r/P6bbw013+4vNlV/9+7h6c3393/71cNf/v1fH5/+ M7ZaXj388P754x/+8OnxWV4b641nTPqfjx9kh99+862B5tv9xYbq794/Pr39/vXffvX4l3//149P
dOcW+xrfYlzpJR/51cmRr58e/vzm8dPH3719/Ijv8sjzqK/uPsjQv3/zHlSkV5s/a0dv3v/4NVZ5 f3pwm32NbzGvtNmPhK0WSr5+evzz24+fP/363cdP+DKPPI/66uFHmfv3bz8AjPRqI2gd6e2HH77G
fC18+/D0IP/c0PfxefFathVHW3t4eP9a91mH3LjZ5+cLtb81p05xnTPN9L/N+eHx4/NvTrifv05Y Nh/fCOJ+fHqU/+4A/PS8kC3nkqPJIR4/vNkPUkny4O6gXy5wf3HNvcRtzdLb/7Xmjx8/Pf/igvv9
cvv1CTHj6/vn+z883b8XUt88i9LE18JqkQg+4PLP92/fvP4n+fwRenZ+XeVPfPeIv3n9betv/Bl/ 24Ithb++IFZ88/r59e+eXn8QUN8+C9fEN4JrIQk+YPjn1+/evvkn+fwJjHZ+XeVPfP8Rf/P629bf
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
d1+8//T27efP/wNY463IqWcAAA== zmuD9Nd3X7579fD6zX/qLdif7YeXK7EvV2JfrsS+XInd3ZUvV2K1Y/zlSuz6/HIl9uVK7MuV2Jcr
sS9XYl+uxL5cia0vV2JfrsT+v7oS++W7LxL+Pz49fXx6+NWHz+/effnyvwO1cdbeaAAA
headers: headers:
Age: Age:
- '0' - '0'
@@ -209,13 +358,13 @@ interactions:
content-type: content-type:
- application/json;charset=utf-8 - application/json;charset=utf-8
date: date:
- Tue, 02 Jan 2024 14:36:48 GMT - Mon, 08 Jan 2024 11:43:37 GMT
server: server:
- ATS - ATS
vary: vary:
- Origin,Accept-Encoding - Origin,Accept-Encoding
x-envoy-decorator-operation: x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - finance-chart-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '5' - '5'
status: status:

View File

@@ -26,8 +26,6 @@ from openbb_yfinance.models.undervalued_growth_equities import (
) )
from openbb_yfinance.models.undervalued_large_caps import YFUndervaluedLargeCapsFetcher from openbb_yfinance.models.undervalued_large_caps import YFUndervaluedLargeCapsFetcher
pytest.skip("yf cassettes bug the CI.", allow_module_level=True)
test_credentials = UserService().default_user_settings.credentials.model_dump( test_credentials = UserService().default_user_settings.credentials.model_dump(
mode="json" mode="json"
) )
@@ -101,7 +99,7 @@ def test_y_finance_currency_historical_fetcher(credentials=test_credentials):
@pytest.mark.record_http @pytest.mark.record_http
def test_y_finance_futures_historical_fetcher(credentials=test_credentials): def test_y_finance_futures_historical_fetcher(credentials=test_credentials):
params = { params = {
"symbol": "ES", "symbol": "ES=F",
"start_date": date(2023, 1, 1), "start_date": date(2023, 1, 1),
"end_date": date(2023, 1, 10), "end_date": date(2023, 1, 10),
} }
@@ -111,6 +109,7 @@ def test_y_finance_futures_historical_fetcher(credentials=test_credentials):
assert result is None assert result is None
@pytest.mark.skip("Unreliable amount of data while recording test.")
@pytest.mark.record_http @pytest.mark.record_http
def test_y_finance_futures_curve_fetcher(credentials=test_credentials): def test_y_finance_futures_curve_fetcher(credentials=test_credentials):
params = {"symbol": "ES"} params = {"symbol": "ES"}
@@ -167,7 +166,7 @@ def test_y_finance_available_fetcher(credentials=test_credentials):
@pytest.mark.record_http @pytest.mark.record_http
def test_y_finance_etf_historical_fetcher(credentials=test_credentials): def test_y_finance_etf_historical_fetcher(credentials=test_credentials):
params = { params = {
"symbol": "IOO", "symbol": "SPY",
"start_date": date(2023, 1, 1), "start_date": date(2023, 1, 1),
"end_date": date(2023, 6, 6), "end_date": date(2023, 6, 6),
} }

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@ keywords:
## Requirements ## Requirements
The OpenBB Excel Add-in is available on: The OpenBB Excel Add-in is available on the following platforms:
- Windows (Microsoft 365) - Windows (Microsoft 365)
- Mac (Microsoft 365) - Mac (Microsoft 365)
@@ -17,7 +17,7 @@ The OpenBB Excel Add-in is available on:
## Installation ## Installation
The OpenBB Excel Add-in is available on the Microsoft AppSource. It can be installed by an administrator or by individual users. The OpenBB Excel Add-in is available on the [Microsoft AppSource](https://appsource.microsoft.com/pt-pt/product/office/wa200006381?tab=overview). It can be installed by an administrator or by individual users.
### Individual user ### Individual user

View File

@@ -18,23 +18,12 @@ keywords:
import HeadTitle from '@site/src/components/General/HeadTitle.tsx'; import HeadTitle from '@site/src/components/General/HeadTitle.tsx';
<HeadTitle title="OpenBB Terminal Excel Add-in Docs" /> <HeadTitle title="OpenBB Excel Add-in Docs" />
OpenBB for Excel opens the gateway to a wealth of standardized financial data sourced from top-tier industry providers such as Polygon.io, Financial Modeling Prep, Benzinga, Intrinio, the Federal Reserve Bank of St. Louis, Trading Economics, and Ultima Insights, among others. OpenBB for Excel opens the gateway to a wealth of standardized financial data sourced from top-tier industry providers such as Polygon.io, Financial Modeling Prep, Benzinga, Intrinio, the Federal Reserve Bank of St. Louis, Trading Economics, and Ultima Insights, among others.
Data standardization is at the core of OpenBB for Excel, offering you a consistent and reliable dataset from a diverse range of asset classes, from equity, fixed income, and cryptocurrency to macroeconomics. This seamless fetch of data means you can readily compare across providers and update it instantly, ensuring accuracy and saving you valuable time. Data standardization is at the core of OpenBB for Excel, offering you a consistent and reliable dataset from a diverse range of asset classes, from equity, fixed income, and cryptocurrency to macroeconomics. This seamless fetch of data means you can readily compare across providers and update it instantly, ensuring accuracy and saving you valuable time.
<div style={{position: 'relative', paddingBottom: '56.25%', height: '0', overflow: 'hidden', maxWidth: '100%'}}>
<iframe
style={{position: 'absolute', top: '0', left: '0', width: '100%', height: '100%', display: 'block', margin: '0 auto'}}
src="https://www.youtube.com/embed/9EEI4uce5Bs?si=us54nvFmBtfqe4Tz"
title="YouTube video player"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen>
</iframe>
</div>
--- ---
- **Features** - **Features**

View File

@@ -1,4 +0,0 @@
{
"label": "Reference",
"position": 5
}

View File

@@ -1,30 +0,0 @@
<!-- markdownlint-disable MD041 -->
Get historical data by providing stock symbol and field tag. See tag options at: https://data.intrinio.com/data-tags.
## Syntax
```excel wordwrap
=OBB.HIST(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for, e.g. 'AAPL'. | False |
| tag | Text | Field tag to get data for, e.g. 'EBITDA'. See options at: https://data.intrinio.com/data-tags. | False |
| start_date | Text | Start date of the data, in YYYY-MM-DD format, defaults to 5 years ago. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format, defaults to today. | True |
| frequency | Text | The frequency of the data, can be 'yearly' or 'quarterly', defaults to 'yearly'. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| value | The value of the data. |

View File

@@ -1,23 +0,0 @@
# reference
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="last"
description="Get latest data point by providing stock symbol and tag. See tag options at:..."
url="reference/last"
command
/><ReferenceCard
title="hist"
description="Get historical data by providing stock symbol and field tag. See tag options at:..."
url="reference/hist"
command
/><ReferenceCard
title="Library"
description=""
url="reference/library"
command
/>
</ul>

View File

@@ -1,26 +0,0 @@
<!-- markdownlint-disable MD041 -->
Get latest data point by providing stock symbol and tag. See tag options at: https://data.intrinio.com/data-tags.
## Syntax
```excel wordwrap
=OBB.LAST(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for, e.g. 'AAPL'. | False |
| tag | Text | Field tag to get data for, e.g. 'EBITDA'. See options at: https://data.intrinio.com/data-tags. | False |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| value | The value of the data. |

View File

@@ -1,4 +0,0 @@
{
"label": "Library",
"position": 1
}

View File

@@ -1,4 +0,0 @@
{
"label": "crypto",
"position": 1
}

View File

@@ -1,23 +0,0 @@
# crypto
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Menus
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="price"
description="historical"
url="crypto/price"
/>
</ul>
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="search"
description="Cryptocurrency Search. Search available cryptocurrency pairs."
url="crypto/search"
command
/>
</ul>

View File

@@ -1,4 +0,0 @@
{
"label": "price",
"position": 1
}

View File

@@ -1,77 +0,0 @@
---
title: historical
description: Learn how to use the `obb.equity.price.historical` function to load historical
price data for a specific stock ticker. Find out about the available parameters
and providers, as well as the structure of the returned data and the columns it
contains.
keywords:
- equity historical price
- load stock data
- specific ticker
- python function
- equity data parameters
- alpha vantage provider
- fmp provider
- intrinio provider
- polygon provider
- yfinance provider
- equity historical data returns
- equity data columns
- alpha vantage data columns
- cboe data columns
- fmp data columns
- intrinio data columns
- polygon data columns
- yfinance data columns
---
<!-- markdownlint-disable MD041 -->
Cryptocurrency Historical Price. Cryptocurrency historical price data.
## Syntax
```excel wordwrap
=OBB.CRYPTO.PRICE.HISTORICAL(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. | False |
| provider | Text | Options: fmp, polygon, tiingo | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| timeseries | Number | Number of days to look back. (provider: fmp) | True |
| interval | Text | Data granularity. (provider: fmp, tiingo) | True |
| multiplier | Number | Multiplier of the timespan. (provider: polygon) | True |
| timespan | Text | Timespan of the data. (provider: polygon) | True |
| sort | Text | Sort order of the data. (provider: polygon) | True |
| limit | Number | The number of data entries to return. (provider: polygon) | True |
| adjusted | Boolean | Whether the data is adjusted. (provider: polygon) | True |
| exchanges | Any | To limit the query to a subset of exchanges e.g. ['POLONIEX', 'GDAX'] (provider: tiingo) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| open | The open price. |
| high | The high price. |
| low | The low price. |
| close | The close price. |
| volume | The trading volume. |
| vwap | Volume Weighted Average Price over the period. |
| adj_close | Adjusted Close Price of the symbol. (provider: fmp) |
| unadjusted_volume | Unadjusted volume of the symbol. (provider: fmp) |
| change | Change in the price of the symbol from the previous day. (provider: fmp) |
| change_percent | Change % in the price of the symbol. (provider: fmp) |
| label | Human readable format of the date. (provider: fmp) |
| change_over_time | Change % in the price of the symbol over a period of time. (provider: fmp) |
| transactions | Number of transactions for the symbol in the time period. (provider: polygon); Number of trades. (provider: tiingo) |
| volume_notional | The last size done for the asset on the specific date in the quote currency. The volume of the asset on the specific date in the quote currency. (provider: tiingo) |

View File

@@ -1,14 +0,0 @@
# price
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="historical"
description="Cryptocurrency Historical Price. Cryptocurrency historical price data."
url="price/historical"
command
/>
</ul>

View File

@@ -1,54 +0,0 @@
---
title: search
description: The documentation page provides information on how to perform a cryptocurrency
search, including the search query and provider parameters, as well as the resulting
crypto search data such as symbol, name, currency, and exchange information.
keywords:
- cryptocurrency search
- available cryptocurrency pairs
- python obb crypto search
- search query parameter
- provider parameter
- crypto search results
- crypto search provider
- crypto search warnings
- crypto search chart
- crypto search metadata
- crypto data
- symbol
- crypto name
- crypto currency
- crypto exchange
- crypto exchange name
---
<!-- markdownlint-disable MD041 -->
Cryptocurrency Search. Search available cryptocurrency pairs.
## Syntax
```excel wordwrap
=OBB.CRYPTO.SEARCH(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp | True |
| query | Text | Search query. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. (Crypto) |
| name | Name of the crypto. |
| currency | The currency the crypto trades for. (provider: fmp) |
| exchange | The exchange code the crypto trades on. (provider: fmp) |
| exchange_name | The short name of the exchange the crypto trades on. (provider: fmp) |

View File

@@ -1,4 +0,0 @@
{
"label": "currency",
"position": 9
}

View File

@@ -1,23 +0,0 @@
# currency
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Menus
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="price"
description="historical"
url="currency/price"
/>
</ul>
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="search"
description="Currency Search. Search available currency pairs."
url="currency/search"
command
/>
</ul>

View File

@@ -1,4 +0,0 @@
{
"label": "price",
"position": 1
}

View File

@@ -1,74 +0,0 @@
---
title: historical
description: Learn how to use the `obb.equity.price.historical` function to load historical
price data for a specific stock ticker. Find out about the available parameters
and providers, as well as the structure of the returned data and the columns it
contains.
keywords:
- equity historical price
- load stock data
- specific ticker
- python function
- equity data parameters
- alpha vantage provider
- fmp provider
- intrinio provider
- polygon provider
- yfinance provider
- equity historical data returns
- equity data columns
- alpha vantage data columns
- cboe data columns
- fmp data columns
- intrinio data columns
- polygon data columns
- yfinance data columns
---
<!-- markdownlint-disable MD041 -->
Currency Historical Price. Currency historical data.
## Syntax
```excel wordwrap
=OBB.CURRENCY.PRICE.HISTORICAL(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. | False |
| provider | Text | Options: fmp, polygon, tiingo | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| interval | Text | Data granularity. (provider: fmp, tiingo) | True |
| multiplier | Number | Multiplier of the timespan. (provider: polygon) | True |
| timespan | Text | Timespan of the data. (provider: polygon) | True |
| sort | Text | Sort order of the data. (provider: polygon) | True |
| limit | Number | The number of data entries to return. (provider: polygon) | True |
| adjusted | Boolean | Whether the data is adjusted. (provider: polygon) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| open | The open price. |
| high | The high price. |
| low | The low price. |
| close | The close price. |
| volume | The trading volume. |
| vwap | Volume Weighted Average Price over the period. |
| adj_close | Adjusted Close Price of the symbol. (provider: fmp) |
| unadjusted_volume | Unadjusted volume of the symbol. (provider: fmp) |
| change | Change in the price of the symbol from the previous day. (provider: fmp) |
| change_percent | Change % in the price of the symbol. (provider: fmp) |
| label | Human readable format of the date. (provider: fmp) |
| change_over_time | Change % in the price of the symbol over a period of time. (provider: fmp) |
| transactions | Number of transactions for the symbol in the time period. (provider: polygon) |

View File

@@ -1,14 +0,0 @@
# price
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="historical"
description="Currency Historical Price. Currency historical data."
url="price/historical"
command
/>
</ul>

View File

@@ -1,91 +0,0 @@
---
title: search
description: Learn how to search for available currency pairs using the `obb.currency.search`
function, and retrieve a list of results, including provider name, warnings, chart,
and metadata. Explore the various parameters such as provider, symbol, date, search
terms, active tickers, order data, sort field, and limit. Dive into the details
of the returned data, including name, symbol, currency, stock exchange, exchange
short name, code, base currency, quote currency, market, locale, currency symbol,
currency name, base currency symbol, base currency name, last updated timestamp
in UTC, and delisted timestamp in UTC.
keywords:
- currency search
- available currency pairs
- obb.currency.search
- provider
- symbol
- date
- search terms
- active tickers
- order data
- sort field
- limit
- results
- warnings
- chart
- metadata
- name
- symbol
- currency
- stock exchange
- exchange short name
- code
- base currency
- quote currency
- market
- locale
- currency symbol
- currency name
- base currency symbol
- base currency name
- last updated utc
- delisted utc
---
<!-- markdownlint-disable MD041 -->
Currency Search. Search available currency pairs.
## Syntax
```excel wordwrap
=OBB.CURRENCY.SEARCH(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp, intrinio, polygon | True |
| symbol | Text | Symbol of the pair to search. (provider: polygon) | True |
| date | Text | A specific date to get data for. (provider: polygon) | True |
| search | Text | Search for terms within the ticker and/or company name. (provider: polygon) | True |
| active | Boolean | Specify if the tickers returned should be actively traded on the queried date. (provider: polygon) | True |
| order | Text | Order data by ascending or descending. (provider: polygon) | True |
| sort | Text | Sort field used for ordering. (provider: polygon) | True |
| limit | Number | The number of data entries to return. (provider: polygon) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| name | Name of the currency pair. |
| symbol | Symbol of the currency pair. (provider: fmp) |
| currency | Base currency of the currency pair. (provider: fmp) |
| stock_exchange | Stock exchange of the currency pair. (provider: fmp) |
| exchange_short_name | Short name of the stock exchange of the currency pair. (provider: fmp) |
| code | Code of the currency pair. (provider: intrinio) |
| base_currency | ISO 4217 currency code of the base currency. (provider: intrinio) |
| quote_currency | ISO 4217 currency code of the quote currency. (provider: intrinio) |
| market | Name of the trading market. Always 'fx'. (provider: polygon) |
| locale | Locale of the currency pair. (provider: polygon) |
| currency_symbol | The symbol of the quote currency. (provider: polygon) |
| currency_name | Name of the quote currency. (provider: polygon) |
| base_currency_symbol | The symbol of the base currency. (provider: polygon) |
| base_currency_name | Name of the base currency. (provider: polygon) |
| last_updated_utc | The last updated timestamp in UTC. (provider: polygon) |
| delisted_utc | The delisted timestamp in UTC. (provider: polygon) |

View File

@@ -1,4 +0,0 @@
{
"label": "derivatives",
"position": 3
}

View File

@@ -1,13 +0,0 @@
# derivatives
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Menus
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="options"
description="unusual, chains"
url="derivatives/options"
/>
</ul>

View File

@@ -1,4 +0,0 @@
{
"label": "options",
"position": 1
}

View File

@@ -1,90 +0,0 @@
---
title: chains
description: Learn how to get the complete options chain for a ticker using the OBB.equity.options.chains
function. Explore the available parameters like symbol and provider, and understand
the data returned, including contract symbol, expiration, strike price, and more.
keywords:
- options chain
- ticker
- complete options chain
- symbol
- provider
- data
- contract symbol
- expiration
- strike price
- option type
- eod date
- trading volume
- open price
- open interest
- high price
- low price
- implied volatility
- delta
- gamma
- theta
- vega
- bid size
- ask size
- theoretical value
- last trade price
- prev close
- change percent
- rho
- last trade timestamp
- dte
---
<!-- markdownlint-disable MD041 -->
Get the complete options chain for a ticker.
## Syntax
```excel wordwrap
=OBB.DERIVATIVES.OPTIONS.CHAINS(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: intrinio | True |
| date | Text | Date for which the options chains are returned. (provider: intrinio) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| contract_symbol | Contract symbol for the option. |
| symbol | Symbol representing the entity requested in the data. Here its the underlying symbol for the option. |
| expiration | Expiration date of the contract. |
| strike | Strike price of the contract. |
| option_type | Call or Put. |
| eod_date | Date for which the options chains are returned. |
| close | The close price. |
| close_bid | The closing bid price for the option that day. |
| close_ask | The closing ask price for the option that day. |
| volume | The trading volume. |
| open | The open price. |
| open_bid | The opening bid price for the option that day. |
| open_ask | The opening ask price for the option that day. |
| open_interest | Open interest on the contract. |
| high | The high price. |
| low | The low price. |
| mark | The mid-price between the latest bid-ask spread. |
| ask_high | The highest ask price for the option that day. |
| ask_low | The lowest ask price for the option that day. |
| bid_high | The highest bid price for the option that day. |
| bid_low | The lowest bid price for the option that day. |
| implied_volatility | Implied volatility of the option. |
| delta | Delta of the option. |
| gamma | Gamma of the option. |
| theta | Theta of the option. |
| vega | Vega of the option. |

View File

@@ -1,19 +0,0 @@
# options
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="unusual"
description="Get the complete options chain for a ticker."
url="options/unusual"
command
/><ReferenceCard
title="chains"
description="Get the complete options chain for a ticker."
url="options/chains"
command
/>
</ul>

View File

@@ -1,66 +0,0 @@
---
title: unusual
description: Learn how to get the complete options chain for a ticker with the equity
options unusual API. Explore the available parameters such as symbol and provider.
Retrieve valuable data like the underlying symbol, contract symbol, trade type,
sentiment, total value, total size, average price, ask/bid prices at execution,
underlying price at execution, and timestamp.
keywords:
- complete options chain
- ticker options
- equity options unusual
- symbol
- provider
- intrinio
- source
- data
- underlying symbol
- contract symbol
- trade type
- sentiment
- total value
- total size
- average price
- ask at execution
- bid at execution
- underlying price at execution
- timestamp
---
<!-- markdownlint-disable MD041 -->
Get the complete options chain for a ticker.
## Syntax
```excel wordwrap
=OBB.DERIVATIVES.OPTIONS.UNUSUAL(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: intrinio | True |
| symbol | Text | Symbol to get data for. (the underlying symbol) | True |
| source | Text | The source of the data. Either realtime or delayed. (provider: intrinio) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| underlying_symbol | Symbol representing the entity requested in the data. (the underlying symbol) |
| contract_symbol | Contract symbol for the option. |
| trade_type | The type of unusual trade. (provider: intrinio) |
| sentiment | Bullish, Bearish, or Neutral Sentiment is estimated based on whether the trade was executed at the bid, ask, or mark price. (provider: intrinio) |
| total_value | The aggregated value of all option contract premiums included in the trade. (provider: intrinio) |
| total_size | The total number of contracts involved in a single transaction. (provider: intrinio) |
| average_price | The average premium paid per option contract. (provider: intrinio) |
| ask_at_execution | Ask price at execution. (provider: intrinio) |
| bid_at_execution | Bid price at execution. (provider: intrinio) |
| underlying_price_at_execution | Price of the underlying security at execution of trade. (provider: intrinio) |
| timestamp | The UTC timestamp of order placement. (provider: intrinio) |

View File

@@ -1,4 +0,0 @@
{
"label": "economy",
"position": 2
}

View File

@@ -1,87 +0,0 @@
---
title: calendar
description: The Economic Calendar provides information on economic events and data.
Use the OBB Python function `obb.economy.calendar()` to retrieve economic calendar
data. The function accepts parameters such as start date, end date, provider, country,
importance, and group. It returns a list of economic calendar data, including the
date, event, reference, source, actual value, previous value, consensus value, and
forecast value. The data can be filtered by provider such as FMP, Nasdaq, or Trading
Economics.
keywords:
- economic calendar
- python obb.economy.calendar
- parameters
- start date
- end date
- provider
- country
- importance
- group
- returns
- data
- date
- event
- reference
- source
- source url
- actual
- previous
- consensus
- forecast
- url
- currency
- unit
- change
- change percent
- updated at
- created at
- description
---
<!-- markdownlint-disable MD041 -->
Economic Calendar.
## Syntax
```excel wordwrap
=OBB.ECONOMY.CALENDAR(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp, tradingeconomics | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| country | Any | Country of the event (provider: tradingeconomics) | True |
| importance | Text | Importance of the event. (provider: tradingeconomics) | True |
| group | Text | Grouping of events (provider: tradingeconomics) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| country | Country of event. |
| event | Event name. |
| reference | Abbreviated period for which released data refers to. |
| source | Source of the data. |
| sourceurl | Source URL. |
| actual | Latest released value. |
| previous | Value for the previous period after the revision (if revision is applicable). |
| consensus | Average forecast among a representative group of economists. |
| forecast | Trading Economics projections |
| url | Trading Economics URL |
| importance | Importance of the event. 1-Low, 2-Medium, 3-High |
| currency | Currency of the data. |
| unit | Unit of the data. |
| change | Value change since previous. (provider: fmp) |
| change_percent | Percentage change since previous. (provider: fmp) |
| updated_at | Last updated timestamp. (provider: fmp) |
| created_at | Created at timestamp. (provider: fmp) |

View File

@@ -1,56 +0,0 @@
---
title: cpi
description: Get Consumer Price Index (CPI) data for various countries and calculate
inflation measurements. This economic indicator provides insights into the growth
rate of prices on a monthly, quarterly, and annual basis. Harmonized CPI data is
also available. Specify the start and end dates for the desired data range. The
data provider and metadata information are included in the results.
keywords:
- Consumer Price Index (CPI) Data
- CPI data
- CPI calculation
- inflation measurement
- economic indicator
- country-wise CPI data
- growth rate
- monthly CPI
- quarterly CPI
- annual CPI
- harmonized CPI
- start date
- end date
- data provider
- metadata info
---
<!-- markdownlint-disable MD041 -->
Consumer Price Index (CPI) Data.
## Syntax
```excel wordwrap
=OBB.ECONOMY.CPI(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| countries | Any | The country or countries to get data. | False |
| provider | Text | Options: fred | True |
| units | Text | The unit of measurement for the data. Options: - `growth_previous`: growth from the previous period - `growth_same`: growth from the same period in the previous year - `index_2015`: index with base year 2015. | True |
| frequency | Text | The frequency of the data. Options: `monthly`, `quarter`, and `annual`. | True |
| harmonized | Boolean | Whether you wish to obtain harmonized data. | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |

View File

@@ -1,51 +0,0 @@
<!-- markdownlint-disable MD041 -->
Search for FRED series or economic releases by ID or fuzzy query. This does not return the observation values, only the metadata. Use this function to find series IDs for `fred_series()`.
## Syntax
```excel wordwrap
=OBB.ECONOMY.FRED_SEARCH(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fred | True |
| query | Text | The search word(s). | True |
| is_release | Boolean | Is release? If True, other search filter variables are ignored. If no query text or release_id is supplied, this defaults to True. (provider: fred) | True |
| release_id | Any | A specific release ID to target. (provider: fred) | True |
| limit | Number | The number of data entries to return. (1-1000) (provider: fred) | True |
| offset | Number | Offset the results in conjunction with limit. (provider: fred) | True |
| filter_variable | Any | Filter by an attribute. (provider: fred) | True |
| filter_value | Text | String value to filter the variable by. Used in conjunction with filter_variable. (provider: fred) | True |
| tag_names | Text | A semicolon delimited list of tag names that series match all of. Example: 'japan;imports' (provider: fred) | True |
| exclude_tag_names | Text | A semicolon delimited list of tag names that series match none of. Example: 'imports;services'. Requires that variable tag_names also be set to limit the number of matching series. (provider: fred) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| release_id | The release ID for queries. |
| series_id | The series ID for the item in the release. |
| name | The name of the release. |
| title | The title of the series. |
| observation_start | The date of the first observation in the series. |
| observation_end | The date of the last observation in the series. |
| frequency | The frequency of the data. |
| frequency_short | Short form of the data frequency. |
| units | The units of the data. |
| units_short | Short form of the data units. |
| seasonal_adjustment | The seasonal adjustment of the data. |
| seasonal_adjustment_short | Short form of the data seasonal adjustment. |
| last_updated | The datetime of the last update to the data. |
| notes | Description of the release. |
| press_release | If the release is a press release. |
| url | URL to the release. |
| popularity | Popularity of the series (provider: fred) |
| group_popularity | Group popularity of the release (provider: fred) |

View File

@@ -1,35 +0,0 @@
<!-- markdownlint-disable MD041 -->
Get data by series ID from FRED.
## Syntax
```excel wordwrap
=OBB.ECONOMY.FRED_SERIES(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fred, intrinio | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| limit | Number | The number of data entries to return. | True |
| frequency | Any | Frequency aggregation to convert high frequency data to lower frequency. None = No change a = Annual q = Quarterly m = Monthly w = Weekly d = Daily wef = Weekly, Ending Friday weth = Weekly, Ending Thursday wew = Weekly, Ending Wednesday wetu = Weekly, Ending Tuesday wem = Weekly, Ending Monday wesu = Weekly, Ending Sunday wesa = Weekly, Ending Saturday bwew = Biweekly, Ending Wednesday bwem = Biweekly, Ending Monday (provider: fred) | True |
| aggregation_method | Any | A key that indicates the aggregation method used for frequency aggregation. This parameter has no affect if the frequency parameter is not set. avg = Average sum = Sum eop = End of Period (provider: fred) | True |
| transform | Any | Transformation type None = No transformation chg = Change ch1 = Change from Year Ago pch = Percent Change pc1 = Percent Change from Year Ago pca = Compounded Annual Rate of Change cch = Continuously Compounded Rate of Change cca = Continuously Compounded Annual Rate of Change log = Natural Log (provider: fred) | True |
| all_pages | Boolean | Returns all pages of data from the API call at once. (provider: intrinio) | True |
| sleep | Number | Time to sleep between requests to avoid rate limiting. (provider: intrinio) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| value | Value of the index. (provider: intrinio) |

View File

@@ -1,4 +0,0 @@
{
"label": "gdp",
"position": 1
}

View File

@@ -1,40 +0,0 @@
---
title: forecast
description: Forecasted GDP Data
keywords:
- economy
- gdp
- forecast
---
<!-- markdownlint-disable MD041 -->
Forecasted GDP Data.
## Syntax
```excel wordwrap
=OBB.ECONOMY.GDP.FORECAST(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: oecd | True |
| period | Text | Time period of the data to return. Units for nominal GDP period. Either quarter or annual. | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| type | Text | Type of GDP to get forecast of. Either nominal or real. | True |
| country | Text | Country to get GDP for. (provider: oecd) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| value | Nominal GDP value on the date. |

View File

@@ -1,24 +0,0 @@
# gdp
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="nominal"
description="Nominal GDP Data."
url="gdp/nominal"
command
/><ReferenceCard
title="forecast"
description="Forecasted GDP Data."
url="gdp/forecast"
command
/><ReferenceCard
title="real"
description="Real GDP Data."
url="gdp/real"
command
/>
</ul>

View File

@@ -1,39 +0,0 @@
---
title: nominal
description: Nominal GDP Data
keywords:
- economy
- gdp
- nominal
---
<!-- markdownlint-disable MD041 -->
Nominal GDP Data.
## Syntax
```excel wordwrap
=OBB.ECONOMY.GDP.NOMINAL(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: oecd | True |
| units | Text | The unit of measurement for the data. Units to get nominal GDP in. Either usd or usd_cap indicating per capita. | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| country | Text | Country to get GDP for. (provider: oecd) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| value | Nominal GDP value on the date. |

View File

@@ -1,55 +0,0 @@
---
title: real
description: Learn about Real GDP Data and how to access it using the provided parameters.
Find detailed descriptions of the available parameters and the data returned. Understand
the structure of the returns and explore the data attributes.
keywords:
- Real GDP Data
- parameters
- units
- start date
- end date
- provider
- country
- returns
- results
- GdpReal
- warnings
- chart
- metadata
- data
- date
- value
- documentation
---
<!-- markdownlint-disable MD041 -->
Real GDP Data.
## Syntax
```excel wordwrap
=OBB.ECONOMY.GDP.REAL(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: oecd | True |
| units | Text | The unit of measurement for the data. Either idx (indicating 2015=100), qoq (previous period) or yoy (same period, previous year).) | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| country | Text | Country to get GDP for. (provider: oecd) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| value | Nominal GDP value on the date. |

View File

@@ -1,43 +0,0 @@
# economy
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Menus
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="gdp"
description="nominal, forecast, real"
url="economy/gdp"
/>
</ul>
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="calendar"
description="Economic Calendar."
url="economy/calendar"
command
/><ReferenceCard
title="fred_series"
description="Get data by series ID from FRED."
url="economy/fred_series"
command
/><ReferenceCard
title="risk_premium"
description="Historical Market Risk Premium."
url="economy/risk_premium"
command
/><ReferenceCard
title="fred_search"
description="Search for FRED series or economic releases by ID or fuzzy query. This does not return the..."
url="economy/fred_search"
command
/><ReferenceCard
title="cpi"
description="Consumer Price Index (CPI) Data."
url="economy/cpi"
command
/>
</ul>

View File

@@ -1,53 +0,0 @@
---
title: risk_premium
description: Learn about Historical Market Risk Premium and the obb.economy.risk_premium
function. Explore the parameters, returns, and data available, including results,
warnings, chart, metadata, country, continent, total equity risk premium, and country
risk premium.
keywords:
- Historical Market Risk Premium
- obb.economy.risk_premium
- parameters
- provider
- returns
- OBBject
- results
- RiskPremium
- warnings
- chart
- metadata
- data
- country
- continent
- total equity risk premium
- country risk premium
---
<!-- markdownlint-disable MD041 -->
Historical Market Risk Premium.
## Syntax
```excel wordwrap
=OBB.ECONOMY.RISK_PREMIUM(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| country | Market country. |
| continent | Continent of the country. |
| total_equity_risk_premium | Total equity risk premium for the country. |
| country_risk_premium | Country-specific risk premium. |

View File

@@ -1,4 +0,0 @@
{
"label": "equity",
"position": 6
}

View File

@@ -1,4 +0,0 @@
{
"label": "calendar",
"position": 1
}

View File

@@ -1,65 +0,0 @@
---
title: dividend
description: Get upcoming and historical dividend data with the OBB.equity.calendar.dividend
method. This method allows you to retrieve dividend information such as dates, amounts,
and provider details. It also provides warnings, charts, and metadata for further
analysis.
keywords:
- dividend calendar
- upcoming dividends
- historical dividends
- dividend data
- dividend schedule
- dividend information
- dividend dates
- dividend amounts
- dividend provider
- dividend warnings
- dividend chart
- dividend metadata
- ex-dividend date
- record date
- payment date
- declaration date
- dividend symbol
- dividend name
- dividend adjusted amount
- dividend label
- annualized dividend amount
---
<!-- markdownlint-disable MD041 -->
Upcoming and Historical Dividend Calendar.
## Syntax
```excel wordwrap
=OBB.EQUITY.CALENDAR.DIVIDEND(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. (Ex-Dividend) |
| symbol | Symbol representing the entity requested in the data. |
| amount | Dividend amount, per-share. |
| name | Name of the entity. |
| record_date | The record date of ownership for eligibility. |
| payment_date | The payment date of the dividend. |
| declaration_date | Declaration date of the dividend. |
| adjusted_amount | The adjusted-dividend amount. (provider: fmp) |
| label | Ex-dividend date formatted for display. (provider: fmp) |

View File

@@ -1,67 +0,0 @@
---
title: earnings
description: Learn how to retrieve upcoming and historical earnings calendar data
using the OBB.equity.calendar.earnings Python function. The function allows you
to specify symbols, limit the number of data entries, and choose a data provider.
The returned data includes EPS, revenue, and other important details for the specified
symbols and dates.
keywords:
- earnings calendar
- upcoming earnings
- historical earnings
- Python function
- earnings data retrieval
- symbol
- limit
- provider
- data entries
- chart
- metadata
- data
- EPS
- revenue
- estimated EPS
- estimated revenue
- date
- time
- updated from date
- fiscal date ending
---
<!-- markdownlint-disable MD041 -->
Upcoming and Historical earnings calendar.
## Syntax
```excel wordwrap
=OBB.EQUITY.CALENDAR.EARNINGS(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| report_date | The date of the earnings report. |
| symbol | Symbol representing the entity requested in the data. |
| name | Name of the entity. |
| eps_previous | The earnings-per-share from the same previously reported period. |
| eps_consensus | The analyst conesus earnings-per-share estimate. |
| eps_actual | The actual earnings per share announced. (provider: fmp) |
| revenue_actual | The actual reported revenue. (provider: fmp) |
| revenue_consensus | The revenue forecast consensus. (provider: fmp) |
| period_ending | The fiscal period end date. (provider: fmp) |
| reporting_time | The reporting time - e.g. after market close. (provider: fmp) |
| updated_date | The date the data was updated last. (provider: fmp) |

View File

@@ -1,29 +0,0 @@
# calendar
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="dividend"
description="Upcoming and Historical Dividend Calendar."
url="calendar/dividend"
command
/><ReferenceCard
title="splits"
description="Calendar Splits. Show Stock Split Calendar."
url="calendar/splits"
command
/><ReferenceCard
title="ipo"
description="Upcoming and Historical IPO Calendar."
url="calendar/ipo"
command
/><ReferenceCard
title="earnings"
description="Upcoming and Historical earnings calendar."
url="calendar/earnings"
command
/>
</ul>

View File

@@ -1,107 +0,0 @@
---
title: ipo
description: Access the Upcoming and Historical IPO Calendars and retrieve IPO information
using Python.
keywords:
- Upcoming IPO Calendar
- Historical IPO Calendar
- Python function
- equity.calendar.ipo
- symbol
- start_date
- end_date
- limit
- provider
- intrinio
- nasdaq
- status
- min_value
- max_value
- OBBject
- results
- CalendarIpo
- warnings
- Chart
- Metadata
- data
- ipo_date
- status
- exchange
- offer_amount
- share_price
- share_price_lowest
- share_price_highest
- share_count
- share_count_lowest
- share_count_highest
- announcement_url
- sec_report_url
- open_price
- close_price
- volume
- day_change
- week_change
- month_change
- id
- company
- security
- name
- expected_price_date
- filed_date
- withdraw_date
- deal_status
---
<!-- markdownlint-disable MD041 -->
Upcoming and Historical IPO Calendar.
## Syntax
```excel wordwrap
=OBB.EQUITY.CALENDAR.IPO(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: intrinio | True |
| symbol | Text | Symbol to get data for. | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| limit | Number | The number of data entries to return. | True |
| status | Text | Status of the IPO. [upcoming, priced, or withdrawn] (provider: intrinio) | True |
| offer_amount_greater_than | Number | Return IPOs with an offer dollar amount greater than the given amount. (provider: intrinio) | True |
| offer_amount_less_than | Number | Return IPOs with an offer dollar amount less than the given amount. (provider: intrinio) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| ipo_date | The date of the IPO, when the stock first trades on a major exchange. |
| status | The status of the IPO. Upcoming IPOs have not taken place yet but are expected to. Priced IPOs have taken place. Withdrawn IPOs were expected to take place, but were subsequently withdrawn and did not take place (provider: intrinio) |
| exchange | The acronym of the stock exchange that the company is going to trade publicly on. Typically NYSE or NASDAQ. (provider: intrinio) |
| offer_amount | The total dollar amount of shares offered in the IPO. Typically this is share price * share count (provider: intrinio) |
| share_price | The price per share at which the IPO was offered. (provider: intrinio) |
| share_price_lowest | The expected lowest price per share at which the IPO will be offered. Before an IPO is priced, companies typically provide a range of prices per share at which they expect to offer the IPO (typically available for upcoming IPOs). (provider: intrinio) |
| share_price_highest | The expected highest price per share at which the IPO will be offered. Before an IPO is priced, companies typically provide a range of prices per share at which they expect to offer the IPO (typically available for upcoming IPOs). (provider: intrinio) |
| share_count | The number of shares offered in the IPO. (provider: intrinio) |
| share_count_lowest | The expected lowest number of shares that will be offered in the IPO. Before an IPO is priced, companies typically provide a range of shares that they expect to offer in the IPO (typically available for upcoming IPOs). (provider: intrinio) |
| share_count_highest | The expected highest number of shares that will be offered in the IPO. Before an IPO is priced, companies typically provide a range of shares that they expect to offer in the IPO (typically available for upcoming IPOs). (provider: intrinio) |
| announcement_url | The URL to the company's announcement of the IPO (provider: intrinio) |
| sec_report_url | The URL to the company's S-1, S-1/A, F-1, or F-1/A SEC filing, which is required to be filed before an IPO takes place. (provider: intrinio) |
| open_price | The opening price at the beginning of the first trading day (only available for priced IPOs). (provider: intrinio) |
| close_price | The closing price at the end of the first trading day (only available for priced IPOs). (provider: intrinio) |
| volume | The volume at the end of the first trading day (only available for priced IPOs). (provider: intrinio) |
| day_change | The percentage change between the open price and the close price on the first trading day (only available for priced IPOs). (provider: intrinio) |
| week_change | The percentage change between the open price on the first trading day and the close price approximately a week after the first trading day (only available for priced IPOs). (provider: intrinio) |
| month_change | The percentage change between the open price on the first trading day and the close price approximately a month after the first trading day (only available for priced IPOs). (provider: intrinio) |
| id | The Intrinio ID of the IPO. (provider: intrinio) |
| company | The company that is going public via the IPO. (provider: intrinio) |
| security | The primary Security for the Company that is going public via the IPO (provider: intrinio) |

View File

@@ -1,31 +0,0 @@
<!-- markdownlint-disable MD041 -->
Calendar Splits. Show Stock Split Calendar.
## Syntax
```excel wordwrap
=OBB.EQUITY.CALENDAR.SPLITS(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| date | The date of the data. |
| label | Label of the stock splits. |
| symbol | Symbol representing the entity requested in the data. |
| numerator | Numerator of the stock splits. |
| denominator | Denominator of the stock splits. |

View File

@@ -1,4 +0,0 @@
{
"label": "compare",
"position": 8
}

View File

@@ -1,14 +0,0 @@
# compare
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="peers"
description="Equity Peers. Company peers."
url="compare/peers"
command
/>
</ul>

View File

@@ -1,52 +0,0 @@
---
title: peers
description: Learn how to compare and analyze equity peers with the `obb.equity.compare.peers`
function. This function allows you to retrieve a list of company peers based on
symbol, sector, exchange, and market cap. Understand the parameters, returns, and
data structure provided by this function.
keywords:
- equity peers
- company peers
- compare peers
- symbol
- provider
- parameter
- returns
- data
- list of peers
- sector
- exchange
- market cap
- serializable results
- chart object
- metadata
- command execution
- warnings
---
<!-- markdownlint-disable MD041 -->
Equity Peers. Company peers.
## Syntax
```excel wordwrap
=OBB.EQUITY.COMPARE.PEERS(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fmp | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| peers_list | A list of equity peers based on sector, exchange and market cap. |

View File

@@ -1,4 +0,0 @@
{
"label": "discovery",
"position": 3
}

View File

@@ -1,44 +0,0 @@
---
title: filings
description: Get the most-recent filings submitted to the SEC
keywords:
- equity
- discovery
- filings
---
<!-- markdownlint-disable MD041 -->
Get the most-recent filings submitted to the SEC.
## Syntax
```excel wordwrap
=OBB.EQUITY.DISCOVERY.FILINGS(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| provider | Text | Options: fmp | True |
| start_date | Text | Start date of the data, in YYYY-MM-DD format. | True |
| end_date | Text | End date of the data, in YYYY-MM-DD format. | True |
| form_type | Text | Filter by form type. Visit https://www.sec.gov/forms for a list of supported form types. | True |
| limit | Number | The number of data entries to return. | True |
| isDone | Boolean | Flag for whether or not the filing is done. (provider: fmp) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| cik | Central Index Key (CIK) for the requested entity. |
| title | Title of the filing. |
| date | The date of the data. |
| form_type | The form type of the filing |
| link | URL to the filing page on the SEC site. |

View File

@@ -1,14 +0,0 @@
# discovery
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="filings"
description="Get the most-recent filings submitted to the SEC."
url="discovery/filings"
command
/>
</ul>

View File

@@ -1,4 +0,0 @@
{
"label": "estimates",
"position": 2
}

View File

@@ -1,52 +0,0 @@
---
title: consensus
description: Learn how to access and use the Price Target Consensus functionality
in your application. Explore the available parameters and understand the returned
data structure.
keywords:
- Price target consensus data
- equity estimates consensus
- symbol parameter
- provider parameter
- results attribute
- provider attribute
- warnings attribute
- chart attribute
- metadata attribute
- data table
- target_high column
- target_low column
- target_consensus column
- target_median column
---
<!-- markdownlint-disable MD041 -->
Price Target Consensus. Price target consensus data.
## Syntax
```excel wordwrap
=OBB.EQUITY.ESTIMATES.CONSENSUS(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fmp | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| target_high | High target of the price target consensus. |
| target_low | Low target of the price target consensus. |
| target_consensus | Consensus target of the price target consensus. |
| target_median | Median target of the price target consensus. |

View File

@@ -1,106 +0,0 @@
---
title: historical
description: Learn about historical analyst estimates and analyst stock recommendations
with the OBBPy library in Python. Explore the usage of the `obb.equity.estimates.historical`
function and its parameters, including `symbol`, `period`, `limit`, and `provider`.
Understand the structure of the returned object, `OBBject`, with `results`, `provider`,
`warnings`, `chart`, and `metadata` properties. Dive into the available data such
as `symbol`, `date`, `estimated revenue`, `ebitda`, `ebit`, `net income`, `SGA expense`,
`EPS`, and the number of analysts who estimated revenue and EPS.
keywords:
- historical analyst estimates
- analyst stock recommendations
- python obb.equity.estimates.historical
- parameters
- standard
- symbol
- union[str, list[str]]
- period
- literal['quarter', 'annual']
- limit
- int
- provider
- literal['fmp']
- returns
- obbject
- list[analystestimates]
- serializable results
- optional[literal['fmp']]
- optional[list[warning_]]
- optional[chart]
- optional[metadata]
- data
- symbol
- str
- date
- estimated revenue low
- estimated revenue high
- estimated revenue average
- estimated ebitda low
- estimated ebitda high
- estimated ebitda average
- estimated ebit low
- estimated ebit high
- estimated ebit average
- estimated net income low
- estimated net income high
- estimated net income average
- estimated sga expense low
- estimated sga expense high
- estimated sga expense average
- estimated eps average
- estimated eps high
- estimated eps low
- number of analysts who estimated revenue
- number of analysts who estimated eps
---
<!-- markdownlint-disable MD041 -->
Historical Analyst Estimates. Analyst stock recommendations.
## Syntax
```excel wordwrap
=OBB.EQUITY.ESTIMATES.HISTORICAL(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fmp | True |
| period | Text | Time period of the data to return. | True |
| limit | Number | The number of data entries to return. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| date | The date of the data. |
| estimated_revenue_low | Estimated revenue low. |
| estimated_revenue_high | Estimated revenue high. |
| estimated_revenue_avg | Estimated revenue average. |
| estimated_ebitda_low | Estimated EBITDA low. |
| estimated_ebitda_high | Estimated EBITDA high. |
| estimated_ebitda_avg | Estimated EBITDA average. |
| estimated_ebit_low | Estimated EBIT low. |
| estimated_ebit_high | Estimated EBIT high. |
| estimated_ebit_avg | Estimated EBIT average. |
| estimated_net_income_low | Estimated net income low. |
| estimated_net_income_high | Estimated net income high. |
| estimated_net_income_avg | Estimated net income average. |
| estimated_sga_expense_low | Estimated SGA expense low. |
| estimated_sga_expense_high | Estimated SGA expense high. |
| estimated_sga_expense_avg | Estimated SGA expense average. |
| estimated_eps_avg | Estimated EPS average. |
| estimated_eps_high | Estimated EPS high. |
| estimated_eps_low | Estimated EPS low. |
| number_analyst_estimated_revenue | Number of analysts who estimated revenue. |
| number_analysts_estimated_eps | Number of analysts who estimated EPS. |

View File

@@ -1,24 +0,0 @@
# estimates
import ReferenceCard from '@site/src/components/General/NewReferenceCard';
### Commands
<ul className='grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 -ml-6'>
<ReferenceCard
title="consensus"
description="Price Target Consensus. Price target consensus data."
url="estimates/consensus"
command
/><ReferenceCard
title="price_target"
description="Price Target. Price target data."
url="estimates/price_target"
command
/><ReferenceCard
title="historical"
description="Historical Analyst Estimates. Analyst stock recommendations."
url="estimates/historical"
command
/>
</ul>

View File

@@ -1,63 +0,0 @@
---
title: price_target
description: Get price target data for an equity symbol. Retrieve information such
as publication date, analyst details, price target, and more. Supports multiple
symbols and customizable providers.
keywords:
- price target data
- equity estimates
- symbol
- provider
- grade
- published date
- news URL
- news title
- analyst name
- analyst company
- price target
- adjusted price target
- price when posted
- news publisher
- news base URL
---
<!-- markdownlint-disable MD041 -->
Price Target. Price target data.
## Syntax
```excel wordwrap
=OBB.EQUITY.ESTIMATES.PRICE_TARGET(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fmp | True |
| with_grade | Boolean | Include upgrades and downgrades in the response. (provider: fmp) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| published_date | Published date of the price target. |
| news_url | News URL of the price target. |
| news_title | News title of the price target. |
| analyst_name | Analyst name. |
| analyst_company | Analyst company. |
| price_target | Price target. |
| adj_price_target | Adjusted price target. |
| price_when_posted | Price when posted. |
| news_publisher | News publisher of the price target. |
| news_base_url | News base URL of the price target. |
| new_grade | New grade (provider: fmp) |
| previous_grade | Previous grade (provider: fmp) |
| grading_company | Grading company (provider: fmp) |

View File

@@ -1,4 +0,0 @@
{
"label": "fundamental",
"position": 4
}

View File

@@ -1,124 +0,0 @@
---
title: balance
description: Learn how to use the balance sheet function in Python to retrieve financial
statement data. This documentation provides details about the function parameters,
return values, and available data types.
keywords:
- balance sheet statement
- balance sheet function
- python function
- financial statement function
- balance sheet data parameters
- balance sheet data returns
- balance sheet data types
---
<!-- markdownlint-disable MD041 -->
Balance Sheet. Balance sheet statement.
## Syntax
```excel wordwrap
=OBB.EQUITY.FUNDAMENTAL.BALANCE(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fmp, intrinio, polygon | True |
| period | Text | Time period of the data to return. | True |
| limit | Number | The number of data entries to return. | True |
| cik | Text | Central Index Key (CIK) of the company. (provider: fmp) | True |
| filing_date | Text | Filing date of the financial statement. (provider: polygon) | True |
| filing_date_lt | Text | Filing date less than the given date. (provider: polygon) | True |
| filing_date_lte | Text | Filing date less than or equal to the given date. (provider: polygon) | True |
| filing_date_gt | Text | Filing date greater than the given date. (provider: polygon) | True |
| filing_date_gte | Text | Filing date greater than or equal to the given date. (provider: polygon) | True |
| period_of_report_date | Text | Period of report date of the financial statement. (provider: polygon) | True |
| period_of_report_date_lt | Text | Period of report date less than the given date. (provider: polygon) | True |
| period_of_report_date_lte | Text | Period of report date less than or equal to the given date. (provider: polygon) | True |
| period_of_report_date_gt | Text | Period of report date greater than the given date. (provider: polygon) | True |
| period_of_report_date_gte | Text | Period of report date greater than or equal to the given date. (provider: polygon) | True |
| include_sources | Boolean | Whether to include the sources of the financial statement. (provider: polygon) | True |
| order | Text | Order of the financial statement. (provider: polygon) | True |
| sort | Text | Sort of the financial statement. (provider: polygon) | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| date | The date of the data. |
| cik | Central Index Key (CIK) for the requested entity. |
| currency | Reporting currency. |
| filling_date | Filling date. |
| accepted_date | Accepted date. |
| period | Reporting period of the statement. |
| cash_and_cash_equivalents | Cash and cash equivalents |
| short_term_investments | Short-term investments |
| long_term_investments | Long-term investments |
| inventory | Inventory |
| net_receivables | Receivables, net |
| marketable_securities | Marketable securities |
| property_plant_equipment_net | Property, plant and equipment, net |
| goodwill | Goodwill |
| assets | Total assets |
| current_assets | Total current assets |
| other_current_assets | Other current assets |
| intangible_assets | Intangible assets |
| tax_assets | Accrued income taxes |
| non_current_assets | Total non-current assets |
| other_non_current_assets | Other non-current assets |
| account_payables | Accounts payable |
| tax_payables | Accrued income taxes |
| deferred_revenue | Accrued income taxes, other deferred revenue |
| other_assets | Other assets |
| total_assets | Total assets |
| long_term_debt | Long-term debt, Operating lease obligations, Long-term finance lease obligations |
| short_term_debt | Short-term borrowings, Long-term debt due within one year, Operating lease obligations due within one year, Finance lease obligations due within one year |
| liabilities | Total liabilities |
| other_current_liabilities | Other current liabilities |
| current_liabilities | Total current liabilities |
| total_liabilities_and_total_equity | Total liabilities and total equity |
| other_non_current_liabilities | Other non-current liabilities |
| non_current_liabilities | Total non-current liabilities |
| total_liabilities_and_stockholders_equity | Total liabilities and stockholders' equity |
| other_stockholder_equity | Other stockholders equity |
| total_stockholders_equity | Total stockholders' equity |
| other_liabilities | Other liabilities |
| total_liabilities | Total liabilities |
| common_stock | Common stock |
| preferred_stock | Preferred stock |
| accumulated_other_comprehensive_income_loss | Accumulated other comprehensive income (loss) |
| retained_earnings | Retained earnings |
| minority_interest | Minority interest |
| total_equity | Total equity |
| calendar_year | Calendar Year (provider: fmp) |
| cash_and_short_term_investments | Cash and Short Term Investments (provider: fmp) |
| goodwill_and_intangible_assets | Goodwill and Intangible Assets (provider: fmp) |
| deferred_revenue_non_current | Deferred Revenue Non Current (provider: fmp) |
| total_investments | Total investments (provider: fmp) |
| capital_lease_obligations | Capital lease obligations (provider: fmp) |
| deferred_tax_liabilities_non_current | Deferred Tax Liabilities Non Current (provider: fmp) |
| total_debt | Total Debt (provider: fmp) |
| net_debt | Net Debt (provider: fmp) |
| link | Link to the statement. (provider: fmp) |
| final_link | Link to the final statement. (provider: fmp) |
| note_receivable | Notes and lease receivable. (provider: intrinio) |
| net_ppe | Plant, property, and equipment, net. (provider: intrinio) |
| total_noncurrent_assets | Total noncurrent assets. (provider: intrinio) |
| current_deferred_revenue | Current deferred revenue. (provider: intrinio) |
| other_noncurrent_liabilities | Other noncurrent operating liabilities. (provider: intrinio) |
| total_noncurrent_liabilities | Total noncurrent liabilities. (provider: intrinio) |
| commitments_and_contingencies | Commitments and contingencies. (provider: intrinio) |
| aoci | Accumulated other comprehensive income / (loss). (provider: intrinio) |
| total_common_equity | Total common equity. (provider: intrinio) |
| total_equity_and_noncontrolling_interests | Total equity & noncontrolling interests. (provider: intrinio) |
| total_liabilities_and_equity | Total liabilities & shareholders' equity. (provider: intrinio) |

View File

@@ -1,119 +0,0 @@
---
title: balance_growth
description: Learn about balance sheet statement growth, equity data for a company,
parameters like symbol, limit, and provider, and explore the returned results, warnings,
charts, and metadata. Retrieve detailed data on various balance sheet growth metrics
like cash and cash equivalents, short-term investments, inventory, total assets,
total liabilities, and more.
keywords:
- balance sheet statement growth
- company balance sheet growth
- equity data
- symbol
- limit parameter
- provider parameter
- results
- balance sheet growth
- warnings
- chart
- metadata
- data
- cash and cash equivalents
- short-term investments
- net receivables
- inventory
- current assets
- property, plant, and equipment
- goodwill
- intangible assets
- long-term investments
- tax assets
- other non-current assets
- total non-current assets
- other assets
- total assets
- accounts payable
- short-term debt
- total current liabilities
- long-term debt
- non-current deferred revenue
- non-current deferred tax liabilities
- total non-current liabilities
- common stock
- retained earnings
- accumulated other comprehensive income/loss
- total stockholders' equity
- total liabilities and stockholders' equity
- total investments
- total debt
- net debt
---
<!-- markdownlint-disable MD041 -->
Balance Sheet Statement Growth. Information about the growth of the company balance sheet.
## Syntax
```excel wordwrap
=OBB.EQUITY.FUNDAMENTAL.BALANCE_GROWTH(required; [optional])
```
---
## Parameters
| Name | Type | Description | Optional |
| ---- | ---- | ----------- | -------- |
| symbol | Text | Symbol to get data for. | False |
| provider | Text | Options: fmp | True |
| limit | Number | The number of data entries to return. | True |
---
## Return Data
| Name | Description |
| ---- | ----------- |
| symbol | Symbol representing the entity requested in the data. |
| date | The date of the data. |
| period | Reporting period. |
| growth_cash_and_cash_equivalents | Growth rate of cash and cash equivalents. |
| growth_short_term_investments | Growth rate of short-term investments. |
| growth_cash_and_short_term_investments | Growth rate of cash and short-term investments. |
| growth_net_receivables | Growth rate of net receivables. |
| growth_inventory | Growth rate of inventory. |
| growth_other_current_assets | Growth rate of other current assets. |
| growth_total_current_assets | Growth rate of total current assets. |
| growth_property_plant_equipment_net | Growth rate of net property, plant, and equipment. |
| growth_goodwill | Growth rate of goodwill. |
| growth_intangible_assets | Growth rate of intangible assets. |
| growth_goodwill_and_intangible_assets | Growth rate of goodwill and intangible assets. |
| growth_long_term_investments | Growth rate of long-term investments. |
| growth_tax_assets | Growth rate of tax assets. |
| growth_other_non_current_assets | Growth rate of other non-current assets. |
| growth_total_non_current_assets | Growth rate of total non-current assets. |
| growth_other_assets | Growth rate of other assets. |
| growth_total_assets | Growth rate of total assets. |
| growth_account_payables | Growth rate of accounts payable. |
| growth_short_term_debt | Growth rate of short-term debt. |
| growth_tax_payables | Growth rate of tax payables. |
| growth_deferred_revenue | Growth rate of deferred revenue. |
| growth_other_current_liabilities | Growth rate of other current liabilities. |
| growth_total_current_liabilities | Growth rate of total current liabilities. |
| growth_long_term_debt | Growth rate of long-term debt. |
| growth_deferred_revenue_non_current | Growth rate of non-current deferred revenue. |
| growth_deferrred_tax_liabilities_non_current | Growth rate of non-current deferred tax liabilities. |
| growth_other_non_current_liabilities | Growth rate of other non-current liabilities. |
| growth_total_non_current_liabilities | Growth rate of total non-current liabilities. |
| growth_other_liabilities | Growth rate of other liabilities. |
| growth_total_liabilities | Growth rate of total liabilities. |
| growth_common_stock | Growth rate of common stock. |
| growth_retained_earnings | Growth rate of retained earnings. |
| growth_accumulated_other_comprehensive_income_loss | Growth rate of accumulated other comprehensive income/loss. |
| growth_othertotal_stockholders_equity | Growth rate of other total stockholders' equity. |
| growth_total_stockholders_equity | Growth rate of total stockholders' equity. |
| growth_total_liabilities_and_stockholders_equity | Growth rate of total liabilities and stockholders' equity. |
| growth_total_investments | Growth rate of total investments. |
| growth_total_debt | Growth rate of total debt. |
| growth_net_debt | Growth rate of net debt. |

Some files were not shown because too many files have changed in this diff Show More