{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Historical Prices With the OpenBB Platform\n",
"\n",
"This notebook demonstrates some of the ways to approach loading historical price data using the OpenBB Platform. The action is in the Equity module; but first, we need to initialize the notebook with the import statements block.\n",
"\n",
"## Import Statements"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime, timedelta\n",
"\n",
"import pandas as pd\n",
"from openbb import obb"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Equity Module\n",
"\n",
"Historical market prices typically come in the form of OHLC+V - open, high, low, close, volume. There may be additional fields returned by a provider, but those are the expected columns. Granularity and amount of historical data will vary by provider and subscription status. Visit their websites to understand what your entitlements are.\n",
"\n",
"### openbb.equity.price.historical()\n",
"\n",
"- This endpoint has the most number of providers out of any function. At the time of writing, choices are:\n",
"\n",
"['alpha_vantage', 'cboe', 'fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']\n",
"\n",
"- Common parameters have been standardized across all souces, `start_date`, `end_date`, `interval`.\n",
"\n",
"- The default interval will be `1d`.\n",
"\n",
"- The depth of historical data and choices for granularity will vary by provider and subscription status. Refer to the website and documentation of each source understand your specific entitlements.\n",
"\n",
"- For demonstration purposes, we will use the `openbb-yfinance` data extension."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
" capital_gains | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 441.179993 | \n",
" 441.179993 | \n",
" 437.570007 | \n",
" 438.149994 | \n",
" 65062900 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" open high low close volume \\\n",
"date \n",
"2023-08-22 441.179993 441.179993 437.570007 438.149994 65062900 \n",
"\n",
" split_ratio dividend capital_gains \n",
"date \n",
"2023-08-22 0.0 0.0 0.0 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_daily = obb.equity.price.historical(symbol=\"spy\", provider=\"yfinance\")\n",
"df_daily.to_df().head(1)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"To load the entire history available from a source, pick a starting date well beyond what it might be. For example, `1900-01-01`"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
" capital_gains | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1993-01-29 | \n",
" 43.96875 | \n",
" 43.96875 | \n",
" 43.75 | \n",
" 43.9375 | \n",
" 1003200 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" open high low close volume split_ratio \\\n",
"date \n",
"1993-01-29 43.96875 43.96875 43.75 43.9375 1003200 0.0 \n",
"\n",
" dividend capital_gains \n",
"date \n",
"1993-01-29 0.0 0.0 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_daily = obb.equity.price.historical(\n",
" symbol=\"spy\", start_date=\"1990-01-01\", provider=\"yfinance\"\n",
").to_df()\n",
"df_daily.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Intervals\n",
"\n",
"The intervals are entered according to this pattern:\n",
"\n",
"- `1m` = One Minute\n",
"- `1h` = One Hour\n",
"- `1d` = One Day\n",
"- `1W` = One Week\n",
"- `1M` = One Month\n",
"\n",
"The date for monthly value is the first or last, depending on the provider. This can be easily resampled from daily data."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
" capital_gains | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2024-07-01 | \n",
" 545.630005 | \n",
" 565.159973 | \n",
" 537.450012 | \n",
" 550.809998 | \n",
" 1038465500 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-01 | \n",
" 552.570007 | \n",
" 563.150024 | \n",
" 510.269989 | \n",
" 556.570007 | \n",
" 954486073 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" open high low close volume \\\n",
"date \n",
"2024-07-01 545.630005 565.159973 537.450012 550.809998 1038465500 \n",
"2024-08-01 552.570007 563.150024 510.269989 556.570007 954486073 \n",
"\n",
" split_ratio dividend capital_gains \n",
"date \n",
"2024-07-01 0.0 0.0 0.0 \n",
"2024-08-01 0.0 0.0 0.0 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_monthly = obb.equity.price.historical(\n",
" \"spy\", start_date=\"1990-01-01\", interval=\"1M\", provider=\"yfinance\"\n",
").to_df()\n",
"df_monthly.tail(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Resample a Time Series\n",
"\n",
"`yfinance` returns the monthly data for the first day of each month. Let's resample it to take from the last, using the daily information captured in the previous cells."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1993-01-31 | \n",
" 43.968750 | \n",
" 43.968750 | \n",
" 43.750000 | \n",
" 43.937500 | \n",
" 1003200 | \n",
"
\n",
" \n",
" | 1993-02-28 | \n",
" 43.968750 | \n",
" 45.125000 | \n",
" 42.812500 | \n",
" 44.406250 | \n",
" 5417600 | \n",
"
\n",
" \n",
" | 1993-03-31 | \n",
" 44.562500 | \n",
" 45.843750 | \n",
" 44.218750 | \n",
" 45.187500 | \n",
" 3019200 | \n",
"
\n",
" \n",
" | 1993-04-30 | \n",
" 45.250000 | \n",
" 45.250000 | \n",
" 43.281250 | \n",
" 44.031250 | \n",
" 2697200 | \n",
"
\n",
" \n",
" | 1993-05-31 | \n",
" 44.093750 | \n",
" 45.656250 | \n",
" 43.843750 | \n",
" 45.218750 | \n",
" 1808000 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-04-30 | \n",
" 523.830017 | \n",
" 524.380005 | \n",
" 493.859985 | \n",
" 501.980011 | \n",
" 1592974000 | \n",
"
\n",
" \n",
" | 2024-05-31 | \n",
" 501.380005 | \n",
" 533.070007 | \n",
" 499.549988 | \n",
" 527.369995 | \n",
" 1153264400 | \n",
"
\n",
" \n",
" | 2024-06-30 | \n",
" 529.020020 | \n",
" 550.280029 | \n",
" 522.599976 | \n",
" 544.219971 | \n",
" 888923200 | \n",
"
\n",
" \n",
" | 2024-07-31 | \n",
" 545.630005 | \n",
" 565.159973 | \n",
" 537.450012 | \n",
" 550.809998 | \n",
" 1038465500 | \n",
"
\n",
" \n",
" | 2024-08-31 | \n",
" 552.570007 | \n",
" 563.150024 | \n",
" 510.269989 | \n",
" 556.565002 | \n",
" 954484078 | \n",
"
\n",
" \n",
"
\n",
"
380 rows × 5 columns
\n",
"
"
],
"text/plain": [
" open high low close volume\n",
"date \n",
"1993-01-31 43.968750 43.968750 43.750000 43.937500 1003200\n",
"1993-02-28 43.968750 45.125000 42.812500 44.406250 5417600\n",
"1993-03-31 44.562500 45.843750 44.218750 45.187500 3019200\n",
"1993-04-30 45.250000 45.250000 43.281250 44.031250 2697200\n",
"1993-05-31 44.093750 45.656250 43.843750 45.218750 1808000\n",
"... ... ... ... ... ...\n",
"2024-04-30 523.830017 524.380005 493.859985 501.980011 1592974000\n",
"2024-05-31 501.380005 533.070007 499.549988 527.369995 1153264400\n",
"2024-06-30 529.020020 550.280029 522.599976 544.219971 888923200\n",
"2024-07-31 545.630005 565.159973 537.450012 550.809998 1038465500\n",
"2024-08-31 552.570007 563.150024 510.269989 556.565002 954484078\n",
"\n",
"[380 rows x 5 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_daily.index = pd.to_datetime(df_daily.index)\n",
"(\n",
" df_daily[[\"open\", \"high\", \"low\", \"close\", \"volume\"]]\n",
" .resample(\"ME\")\n",
" .agg(\n",
" {\"open\": \"first\", \"high\": \"max\", \"low\": \"min\", \"close\": \"last\", \"volume\": \"sum\"}\n",
" )\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"The block below packs an object with most intervals."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['one', 'five', 'fifteen', 'thirty', 'sixty', 'daily', 'weekly', 'monthly'])"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
" capital_gains | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2024-08-12 | \n",
" 534.210022 | \n",
" 555.02002 | \n",
" 530.950012 | \n",
" 554.309998 | \n",
" 242599600 | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 554.72998 | \n",
" 563.150024 | \n",
" 553.859985 | \n",
" 557.031006 | \n",
" 142159243 | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" open high low close volume \\\n",
"date \n",
"2024-08-12 534.210022 555.02002 530.950012 554.309998 242599600 \n",
"2024-08-19 554.72998 563.150024 553.859985 557.031006 142159243 \n",
"\n",
" split_ratio dividend capital_gains \n",
"date \n",
"2024-08-12 0 0.0 0 \n",
"2024-08-19 0 0.0 0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
" capital_gains | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2024-08-16 09:30:00 | \n",
" 551.419983 | \n",
" 551.929993 | \n",
" 551.289978 | \n",
" 551.349976 | \n",
" 1881026 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2024-08-16 09:31:00 | \n",
" 551.349976 | \n",
" 551.77002 | \n",
" 551.26001 | \n",
" 551.630005 | \n",
" 230595 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" open high low close volume \\\n",
"date \n",
"2024-08-16 09:30:00 551.419983 551.929993 551.289978 551.349976 1881026 \n",
"2024-08-16 09:31:00 551.349976 551.77002 551.26001 551.630005 230595 \n",
"\n",
" split_ratio dividend capital_gains \n",
"date \n",
"2024-08-16 09:30:00 0 0 0 \n",
"2024-08-16 09:31:00 0 0 0 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"class HistoricalPrices:\n",
" def __init__(self, symbol, start_date, end_date, provider, **kwargs) -> None:\n",
" self.one: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"1m\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.five: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"5m\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.fifteen: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"15m\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.thirty: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"30m\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.sixty: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"60m\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.daily: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"1d\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.weekly: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"1W\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
" self.monthly: pd.DataFrame = (\n",
" obb.equity.price.historical(\n",
" symbol=symbol,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" interval=\"1M\",\n",
" provider=provider,\n",
" **kwargs\n",
" )\n",
" .to_df()\n",
" .convert_dtypes()\n",
" )\n",
"\n",
"\n",
"def load_historical(\n",
" symbol: str = \"\", start_date=None, end_date=None, provider=None, **kwargs\n",
") -> HistoricalPrices:\n",
"\n",
" if symbol == \"\":\n",
" display(\"Please enter a ticker symbol\")\n",
" if provider is None:\n",
" provider = \"yfinance\"\n",
" prices = HistoricalPrices(symbol, start_date, end_date, provider, **kwargs)\n",
"\n",
" return prices\n",
"\n",
"\n",
"prices = load_historical(\"spy\")\n",
"display(prices.__dict__.keys())\n",
"display(prices.weekly.tail(2))\n",
"\n",
"display(prices.one.head(2))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"To demonstrate the difference between sources, let's compare values for daily volume from several sources."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" AV Volume | \n",
" FMP Volume | \n",
" Intrinio Volume | \n",
" Yahoo Volume | \n",
" Polygon Volume | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2024-08-09 | \n",
" 45619558 | \n",
" 45619558.0 | \n",
" 45619558.0 | \n",
" 45619600.0 | \n",
" 45425963.0 | \n",
"
\n",
" \n",
" | 2024-08-12 | \n",
" 42542069 | \n",
" 42542069.0 | \n",
" 42542069.0 | \n",
" 42542100.0 | \n",
" 42533175.0 | \n",
"
\n",
" \n",
" | 2024-08-13 | \n",
" 52333073 | \n",
" 52333073.0 | \n",
" 52333073.0 | \n",
" 52333100.0 | \n",
" 50110167.0 | \n",
"
\n",
" \n",
" | 2024-08-14 | \n",
" 42446929 | \n",
" 42446929.0 | \n",
" 42446929.0 | \n",
" 42446900.0 | \n",
" 42362522.0 | \n",
"
\n",
" \n",
" | 2024-08-15 | \n",
" 60846812 | \n",
" 60846812.0 | \n",
" 60846812.0 | \n",
" 60846800.0 | \n",
" 60762738.0 | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 44430728 | \n",
" 44430728.0 | \n",
" 44430728.0 | \n",
" 44430700.0 | \n",
" 44368969.0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 39121793 | \n",
" 39121793.0 | \n",
" 39121793.0 | \n",
" 39121800.0 | \n",
" 38648958.0 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 33732264 | \n",
" 33732264.0 | \n",
" 33732264.0 | \n",
" 33732300.0 | \n",
" 33693989.0 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 41514600 | \n",
" 38682509.0 | \n",
" 41514600.0 | \n",
" 41467000.0 | \n",
" 41532360.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" AV Volume FMP Volume Intrinio Volume Yahoo Volume \\\n",
"date \n",
"2024-08-09 45619558 45619558.0 45619558.0 45619600.0 \n",
"2024-08-12 42542069 42542069.0 42542069.0 42542100.0 \n",
"2024-08-13 52333073 52333073.0 52333073.0 52333100.0 \n",
"2024-08-14 42446929 42446929.0 42446929.0 42446900.0 \n",
"2024-08-15 60846812 60846812.0 60846812.0 60846800.0 \n",
"2024-08-16 44430728 44430728.0 44430728.0 44430700.0 \n",
"2024-08-19 39121793 39121793.0 39121793.0 39121800.0 \n",
"2024-08-20 33732264 33732264.0 33732264.0 33732300.0 \n",
"2024-08-21 41514600 38682509.0 41514600.0 41467000.0 \n",
"\n",
" Polygon Volume \n",
"date \n",
"2024-08-09 45425963.0 \n",
"2024-08-12 42533175.0 \n",
"2024-08-13 50110167.0 \n",
"2024-08-14 42362522.0 \n",
"2024-08-15 60762738.0 \n",
"2024-08-16 44368969.0 \n",
"2024-08-19 38648958.0 \n",
"2024-08-20 33693989.0 \n",
"2024-08-21 41532360.0 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Collect the data\n",
"\n",
"yahoo = obb.equity.price.historical(\"spy\", provider=\"yfinance\").to_df()\n",
"alphavantage = obb.equity.price.historical(\"spy\", provider=\"alpha_vantage\").to_df()\n",
"intrinio = obb.equity.price.historical(\"spy\", provider=\"intrinio\").to_df()\n",
"fmp = obb.equity.price.historical(\"spy\", provider=\"fmp\").to_df()\n",
"polygon = obb.equity.price.historical(\"spy\", provider=\"polygon\").to_df()\n",
"\n",
"# Make a new DataFrame with just the volume columns\n",
"compare = pd.DataFrame()\n",
"compare[\"AV Volume\"] = alphavantage[\"volume\"].tail(10)\n",
"compare[\"FMP Volume\"] = fmp[\"volume\"].tail(10)\n",
"compare[\"Intrinio Volume\"] = intrinio[\"volume\"].tail(10)\n",
"compare[\"Yahoo Volume\"] = yahoo[\"volume\"].tail(10)\n",
"compare[\"Polygon Volume\"] = polygon[\"volume\"].tail(10)\n",
"\n",
"compare.dropna(how=\"any\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Other Types of Symbols\n",
"\n",
"Other types of assets and ticker symbols can be loaded from `obb.equity.price.historical()`, below are some examples but not an exhaustive list.\n",
"\n",
"### Share Classes\n",
"\n",
"Some sources use `-` as the distinction between a share class, e.g., `BRK-A` and `BRK-B`. Other formats include:\n",
"\n",
"- A period: `BRK.A`\n",
"- A slash: `BRK/A`\n",
"- No separator, the share class becomes the fourth or fifth letter.\n",
"\n",
"```python\n",
"obb.equity.price.historical(\"brk.b\", provider=\"polygon\")\n",
"```\n",
"\n",
"```python\n",
"obb.equity.price.historical(\"brk-b\", provider=\"fmp\")\n",
"```\n",
"\n",
"While some providers handle the different formats on their end, others do not. This is something to consider when no results are returned from one source. Some may even use a combination, or accept multiple variations. Sometimes there is no real logic behind the additional characters, `GOOGL` vs. `GOOG`. These are known unknown variables of ticker symbology, what's good for one source may return errors from another. \n",
"\n",
"### Regional Identifiers\n",
"\n",
"With providers supporting market data from multiple jurisdictions, the most common method for requesting data outside of US-listings is to append a suffix to the ticker symbol (e.g., `RELIANCE.NS` for Indian equities). Formats may be unique to a provider, so it is best to review the source's documentation for an overview of their specific conventions. [This page](https://help.yahoo.com/kb/SLN2310.html) on Yahoo describes how they format symbols, which many others follow to some degree.\n",
"\n",
"### Indexes\n",
"\n",
"Sources will have their own treatment of these symbols, some examples are:\n",
"\n",
"- YahooFinance/FMP/CBOE: ^RUT\n",
"- Polygon: I:NDX\n",
"\n",
"### Currencies\n",
"\n",
"FX symbols face the same dilemna as share classes, there are several variations of the same symbol.\n",
"\n",
"- YahooFinance: `EURUSD=X`\n",
"- Polygon: `C:EURUSD`\n",
"- AlphaVantage/FMP: `EURUSD`\n",
"\n",
"**The symbol prefixes are handled internally when `obb.currency.price.historical()` is used to enter a pair with no extra characters.**\n",
"\n",
"### Crypto\n",
"\n",
"Similar, but different to FX tickers.\n",
"\n",
"- YahooFinance: `BTC-USD`\n",
"- Polygon: `X:BTCUSD`\n",
"- AlphaVantage/FMP: `BTCUSD`\n",
"\n",
"**The symbol prefixes are handled internally when `obb.crypto.price.historical()` is used to enter a pair with no extra characters and placing the fiat currency second.**\n",
"\n",
"### Futures\n",
"\n",
"Historical prices for active contracts, and the continuation chart, can be fetched via `yfinance`.\n",
"\n",
"- Continuous front-month: `CL=F`\n",
"- December 2023 contract: `CLZ24.NYM`\n",
"- March 2024 contract: `CLH24.NYM`\n",
"\n",
"Individual contracts will require knowing which of the CME venues the future is listed on. `[\"NYM\", \"NYB\", \"CME\", \"CBT\"]`.\n",
"\n",
"### Options\n",
"\n",
"Individual options contracts are also loadable from `openbb.equity.price.historical()`.\n",
"\n",
"- YahooFinance: `SPY241220P00400000`\n",
"- Polygon: `O:SPY241220P00400000`"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"These examples represent only a few methods for fetching historical price data. Explore the contents of each module to find more!"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 25.10 | \n",
" 25.100000 | \n",
" 25.10 | \n",
" 25.100000 | \n",
" 11 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-23 | \n",
" 25.00 | \n",
" 25.000000 | \n",
" 24.50 | \n",
" 24.500000 | \n",
" 2 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-24 | \n",
" 25.00 | \n",
" 25.200001 | \n",
" 25.00 | \n",
" 25.200001 | \n",
" 2 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-25 | \n",
" 25.35 | \n",
" 25.350000 | \n",
" 24.18 | \n",
" 24.549999 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-29 | \n",
" 24.00 | \n",
" 24.700001 | \n",
" 22.50 | \n",
" 23.910000 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 5.95 | \n",
" 6.100000 | \n",
" 5.95 | \n",
" 5.990000 | \n",
" 4 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 5.92 | \n",
" 5.920000 | \n",
" 5.71 | \n",
" 5.710000 | \n",
" 40 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 5.73 | \n",
" 6.240000 | \n",
" 5.73 | \n",
" 6.240000 | \n",
" 42 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 6.28 | \n",
" 6.660000 | \n",
" 6.28 | \n",
" 6.440000 | \n",
" 276 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-22 | \n",
" 6.29 | \n",
" 6.660000 | \n",
" 6.29 | \n",
" 6.660000 | \n",
" 4 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
234 rows × 7 columns
\n",
"
"
],
"text/plain": [
" open high low close volume split_ratio dividend\n",
"date \n",
"2023-08-22 25.10 25.100000 25.10 25.100000 11 0.0 0.0\n",
"2023-08-23 25.00 25.000000 24.50 24.500000 2 0.0 0.0\n",
"2023-08-24 25.00 25.200001 25.00 25.200001 2 0.0 0.0\n",
"2023-08-25 25.35 25.350000 24.18 24.549999 0 0.0 0.0\n",
"2023-08-29 24.00 24.700001 22.50 23.910000 0 0.0 0.0\n",
"... ... ... ... ... ... ... ...\n",
"2024-08-16 5.95 6.100000 5.95 5.990000 4 0.0 0.0\n",
"2024-08-19 5.92 5.920000 5.71 5.710000 40 0.0 0.0\n",
"2024-08-20 5.73 6.240000 5.73 6.240000 42 0.0 0.0\n",
"2024-08-21 6.28 6.660000 6.28 6.440000 276 0.0 0.0\n",
"2024-08-22 6.29 6.660000 6.29 6.660000 4 0.0 0.0\n",
"\n",
"[234 rows x 7 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.equity.price.historical(\"SPY251219P00400000\", provider=\"yfinance\").to_df()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1978-01-03 | \n",
" 94.74 | \n",
" 95.15 | \n",
" 93.49 | \n",
" 93.82 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1978-01-04 | \n",
" 93.16 | \n",
" 94.10 | \n",
" 92.57 | \n",
" 93.52 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1978-01-05 | \n",
" 94.18 | \n",
" 94.53 | \n",
" 92.51 | \n",
" 92.74 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1978-01-06 | \n",
" 92.06 | \n",
" 92.66 | \n",
" 91.05 | \n",
" 91.62 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1978-01-09 | \n",
" 90.82 | \n",
" 91.48 | \n",
" 89.97 | \n",
" 90.64 | \n",
" 0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-15 | \n",
" 5501.13 | \n",
" 5546.23 | \n",
" 5501.13 | \n",
" 5543.22 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 5530.50 | \n",
" 5561.98 | \n",
" 5525.17 | \n",
" 5554.25 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 5557.23 | \n",
" 5608.30 | \n",
" 5550.74 | \n",
" 5608.25 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 5602.88 | \n",
" 5620.51 | \n",
" 5585.50 | \n",
" 5597.12 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 5603.09 | \n",
" 5632.68 | \n",
" 5591.57 | \n",
" 5620.85 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
11509 rows × 5 columns
\n",
"
"
],
"text/plain": [
" open high low close volume\n",
"date \n",
"1978-01-03 94.74 95.15 93.49 93.82 0\n",
"1978-01-04 93.16 94.10 92.57 93.52 0\n",
"1978-01-05 94.18 94.53 92.51 92.74 0\n",
"1978-01-06 92.06 92.66 91.05 91.62 0\n",
"1978-01-09 90.82 91.48 89.97 90.64 0\n",
"... ... ... ... ... ...\n",
"2024-08-15 5501.13 5546.23 5501.13 5543.22 0\n",
"2024-08-16 5530.50 5561.98 5525.17 5554.25 0\n",
"2024-08-19 5557.23 5608.30 5550.74 5608.25 0\n",
"2024-08-20 5602.88 5620.51 5585.50 5597.12 0\n",
"2024-08-21 5603.09 5632.68 5591.57 5620.85 0\n",
"\n",
"[11509 rows x 5 columns]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.equity.price.historical(\"SPX\", provider=\"cboe\").to_df()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" vwap | \n",
" adj_close | \n",
" unadjusted_volume | \n",
" change | \n",
" change_percent | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 4415.33008 | \n",
" 4418.58984 | \n",
" 4382.77002 | \n",
" 4387.54980 | \n",
" 3522760000 | \n",
" 4396.30 | \n",
" 4387.54980 | \n",
" 3.522760e+09 | \n",
" -27.78028 | \n",
" -0.006292 | \n",
"
\n",
" \n",
" | 2023-08-23 | \n",
" 4396.43994 | \n",
" 4443.18018 | \n",
" 4396.43994 | \n",
" 4436.00977 | \n",
" 3837270000 | \n",
" 4425.21 | \n",
" 4436.00977 | \n",
" 3.837270e+09 | \n",
" 39.56983 | \n",
" 0.009000 | \n",
"
\n",
" \n",
" | 2023-08-24 | \n",
" 4455.16016 | \n",
" 4458.29980 | \n",
" 4375.54980 | \n",
" 4376.31006 | \n",
" 3723470000 | \n",
" 4403.39 | \n",
" 4376.31006 | \n",
" 3.723470e+09 | \n",
" -78.85010 | \n",
" -0.017700 | \n",
"
\n",
" \n",
" | 2023-08-25 | \n",
" 4389.37988 | \n",
" 4418.45996 | \n",
" 4356.29004 | \n",
" 4405.70996 | \n",
" 3296180000 | \n",
" 4393.49 | \n",
" 4405.70996 | \n",
" 3.296180e+09 | \n",
" 16.33008 | \n",
" 0.003720 | \n",
"
\n",
" \n",
" | 2023-08-28 | \n",
" 4426.02979 | \n",
" 4439.56006 | \n",
" 4414.97998 | \n",
" 4433.31006 | \n",
" 2957230000 | \n",
" 4429.28 | \n",
" 4433.31006 | \n",
" 2.957230e+09 | \n",
" 7.28027 | \n",
" 0.001645 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 5530.50000 | \n",
" 5561.97998 | \n",
" 5525.16992 | \n",
" 5554.25000 | \n",
" 3357690000 | \n",
" 5542.97 | \n",
" 5554.25000 | \n",
" 3.357690e+09 | \n",
" 23.75000 | \n",
" 0.004294 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 5557.22998 | \n",
" 5608.29981 | \n",
" 5550.74023 | \n",
" 5608.25000 | \n",
" 3222050000 | \n",
" 5581.13 | \n",
" 5608.25000 | \n",
" 3.222050e+09 | \n",
" 51.02002 | \n",
" 0.009181 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 5602.87988 | \n",
" 5620.50977 | \n",
" 5585.50000 | \n",
" 5597.12012 | \n",
" 2994420000 | \n",
" 5601.50 | \n",
" 5597.12012 | \n",
" 2.994420e+09 | \n",
" -5.75976 | \n",
" -0.001028 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 5603.08984 | \n",
" 5632.68018 | \n",
" 5591.56982 | \n",
" 5620.85010 | \n",
" 1982137065 | \n",
" 5612.05 | \n",
" 5620.85010 | \n",
" 1.982137e+09 | \n",
" 17.76026 | \n",
" 0.003170 | \n",
"
\n",
" \n",
" | 2024-08-22 | \n",
" 5637.77000 | \n",
" 5643.22000 | \n",
" 5563.54000 | \n",
" 5577.27000 | \n",
" 1218069912 | \n",
" 5594.68 | \n",
" 5577.27000 | \n",
" 1.218070e+09 | \n",
" -60.50000 | \n",
" -0.010731 | \n",
"
\n",
" \n",
"
\n",
"
253 rows × 10 columns
\n",
"
"
],
"text/plain": [
" open high low close volume \\\n",
"date \n",
"2023-08-22 4415.33008 4418.58984 4382.77002 4387.54980 3522760000 \n",
"2023-08-23 4396.43994 4443.18018 4396.43994 4436.00977 3837270000 \n",
"2023-08-24 4455.16016 4458.29980 4375.54980 4376.31006 3723470000 \n",
"2023-08-25 4389.37988 4418.45996 4356.29004 4405.70996 3296180000 \n",
"2023-08-28 4426.02979 4439.56006 4414.97998 4433.31006 2957230000 \n",
"... ... ... ... ... ... \n",
"2024-08-16 5530.50000 5561.97998 5525.16992 5554.25000 3357690000 \n",
"2024-08-19 5557.22998 5608.29981 5550.74023 5608.25000 3222050000 \n",
"2024-08-20 5602.87988 5620.50977 5585.50000 5597.12012 2994420000 \n",
"2024-08-21 5603.08984 5632.68018 5591.56982 5620.85010 1982137065 \n",
"2024-08-22 5637.77000 5643.22000 5563.54000 5577.27000 1218069912 \n",
"\n",
" vwap adj_close unadjusted_volume change change_percent \n",
"date \n",
"2023-08-22 4396.30 4387.54980 3.522760e+09 -27.78028 -0.006292 \n",
"2023-08-23 4425.21 4436.00977 3.837270e+09 39.56983 0.009000 \n",
"2023-08-24 4403.39 4376.31006 3.723470e+09 -78.85010 -0.017700 \n",
"2023-08-25 4393.49 4405.70996 3.296180e+09 16.33008 0.003720 \n",
"2023-08-28 4429.28 4433.31006 2.957230e+09 7.28027 0.001645 \n",
"... ... ... ... ... ... \n",
"2024-08-16 5542.97 5554.25000 3.357690e+09 23.75000 0.004294 \n",
"2024-08-19 5581.13 5608.25000 3.222050e+09 51.02002 0.009181 \n",
"2024-08-20 5601.50 5597.12012 2.994420e+09 -5.75976 -0.001028 \n",
"2024-08-21 5612.05 5620.85010 1.982137e+09 17.76026 0.003170 \n",
"2024-08-22 5594.68 5577.27000 1.218070e+09 -60.50000 -0.010731 \n",
"\n",
"[253 rows x 10 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.equity.price.historical(\"^SPX\", provider=\"fmp\").to_df()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 71.419998 | \n",
" 71.949997 | \n",
" 71.029999 | \n",
" 71.160004 | \n",
" 5342 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-23 | \n",
" 71.120003 | \n",
" 71.320000 | \n",
" 69.709999 | \n",
" 70.730003 | \n",
" 5139 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-24 | \n",
" 70.459999 | \n",
" 70.860001 | \n",
" 69.870003 | \n",
" 70.190002 | \n",
" 7594 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-25 | \n",
" 70.050003 | \n",
" 70.889999 | \n",
" 69.470001 | \n",
" 70.680000 | \n",
" 9328 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-28 | \n",
" 70.690002 | \n",
" 71.190002 | \n",
" 70.239998 | \n",
" 70.480003 | \n",
" 6234 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 70.940002 | \n",
" 70.989998 | \n",
" 69.440002 | \n",
" 70.019997 | \n",
" 38165 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 70.099998 | \n",
" 70.400002 | \n",
" 68.870003 | \n",
" 69.029999 | \n",
" 29067 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 69.150002 | \n",
" 69.250000 | \n",
" 68.309998 | \n",
" 68.389999 | \n",
" 29827 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 68.389999 | \n",
" 68.959999 | \n",
" 67.370003 | \n",
" 67.629997 | \n",
" 29827 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-22 | \n",
" 67.730003 | \n",
" 68.650002 | \n",
" 67.430000 | \n",
" 68.220001 | \n",
" 33722 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
254 rows × 7 columns
\n",
"
"
],
"text/plain": [
" open high low close volume split_ratio \\\n",
"date \n",
"2023-08-22 71.419998 71.949997 71.029999 71.160004 5342 0.0 \n",
"2023-08-23 71.120003 71.320000 69.709999 70.730003 5139 0.0 \n",
"2023-08-24 70.459999 70.860001 69.870003 70.190002 7594 0.0 \n",
"2023-08-25 70.050003 70.889999 69.470001 70.680000 9328 0.0 \n",
"2023-08-28 70.690002 71.190002 70.239998 70.480003 6234 0.0 \n",
"... ... ... ... ... ... ... \n",
"2024-08-16 70.940002 70.989998 69.440002 70.019997 38165 0.0 \n",
"2024-08-19 70.099998 70.400002 68.870003 69.029999 29067 0.0 \n",
"2024-08-20 69.150002 69.250000 68.309998 68.389999 29827 0.0 \n",
"2024-08-21 68.389999 68.959999 67.370003 67.629997 29827 0.0 \n",
"2024-08-22 67.730003 68.650002 67.430000 68.220001 33722 0.0 \n",
"\n",
" dividend \n",
"date \n",
"2023-08-22 0.0 \n",
"2023-08-23 0.0 \n",
"2023-08-24 0.0 \n",
"2023-08-25 0.0 \n",
"2023-08-28 0.0 \n",
"... ... \n",
"2024-08-16 0.0 \n",
"2024-08-19 0.0 \n",
"2024-08-20 0.0 \n",
"2024-08-21 0.0 \n",
"2024-08-22 0.0 \n",
"\n",
"[254 rows x 7 columns]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.equity.price.historical(\"CLZ25.NYM\", provider=\"yfinance\").to_df()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" vwap | \n",
" adj_close | \n",
" unadjusted_volume | \n",
" change | \n",
" change_percent | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 80.80 | \n",
" 80.99 | \n",
" 80.10 | \n",
" 80.35 | \n",
" 287489 | \n",
" 80.48 | \n",
" 80.35 | \n",
" 287489.0 | \n",
" -0.45 | \n",
" -0.005569 | \n",
"
\n",
" \n",
" | 2023-08-23 | \n",
" 79.64 | \n",
" 79.91 | \n",
" 77.62 | \n",
" 78.89 | \n",
" 378146 | \n",
" 78.81 | \n",
" 78.89 | \n",
" 378146.0 | \n",
" -0.75 | \n",
" -0.009417 | \n",
"
\n",
" \n",
" | 2023-08-24 | \n",
" 78.57 | \n",
" 79.28 | \n",
" 77.59 | \n",
" 79.05 | \n",
" 349230 | \n",
" 78.64 | \n",
" 79.05 | \n",
" 349230.0 | \n",
" 0.48 | \n",
" 0.006109 | \n",
"
\n",
" \n",
" | 2023-08-25 | \n",
" 78.88 | \n",
" 80.45 | \n",
" 78.14 | \n",
" 79.83 | \n",
" 411409 | \n",
" 79.47 | \n",
" 79.83 | \n",
" 411409.0 | \n",
" 0.95 | \n",
" 0.012000 | \n",
"
\n",
" \n",
" | 2023-08-28 | \n",
" 80.15 | \n",
" 80.87 | \n",
" 79.61 | \n",
" 80.10 | \n",
" 246584 | \n",
" 80.19 | \n",
" 80.10 | \n",
" 246584.0 | \n",
" -0.05 | \n",
" -0.000624 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-18 | \n",
" 76.58 | \n",
" 76.71 | \n",
" 76.48 | \n",
" 76.71 | \n",
" 175 | \n",
" 76.62 | \n",
" 76.71 | \n",
" 175.0 | \n",
" 0.13 | \n",
" 0.001698 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 76.58 | \n",
" 76.87 | \n",
" 74.17 | \n",
" 74.37 | \n",
" 118172 | \n",
" 75.50 | \n",
" 74.37 | \n",
" 118172.0 | \n",
" -2.21 | \n",
" -0.028900 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 74.34 | \n",
" 75.03 | \n",
" 73.50 | \n",
" 74.04 | \n",
" 118172 | \n",
" 74.23 | \n",
" 74.04 | \n",
" 118172.0 | \n",
" -0.30 | \n",
" -0.004036 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 73.12 | \n",
" 74.16 | \n",
" 71.46 | \n",
" 71.93 | \n",
" 361850 | \n",
" 72.67 | \n",
" 71.93 | \n",
" 361850.0 | \n",
" -1.19 | \n",
" -0.016300 | \n",
"
\n",
" \n",
" | 2024-08-22 | \n",
" 71.93 | \n",
" 73.52 | \n",
" 71.58 | \n",
" 73.00 | \n",
" 28663 | \n",
" 72.70 | \n",
" 73.00 | \n",
" 28663.0 | \n",
" 1.07 | \n",
" 0.014876 | \n",
"
\n",
" \n",
"
\n",
"
266 rows × 10 columns
\n",
"
"
],
"text/plain": [
" open high low close volume vwap adj_close \\\n",
"date \n",
"2023-08-22 80.80 80.99 80.10 80.35 287489 80.48 80.35 \n",
"2023-08-23 79.64 79.91 77.62 78.89 378146 78.81 78.89 \n",
"2023-08-24 78.57 79.28 77.59 79.05 349230 78.64 79.05 \n",
"2023-08-25 78.88 80.45 78.14 79.83 411409 79.47 79.83 \n",
"2023-08-28 80.15 80.87 79.61 80.10 246584 80.19 80.10 \n",
"... ... ... ... ... ... ... ... \n",
"2024-08-18 76.58 76.71 76.48 76.71 175 76.62 76.71 \n",
"2024-08-19 76.58 76.87 74.17 74.37 118172 75.50 74.37 \n",
"2024-08-20 74.34 75.03 73.50 74.04 118172 74.23 74.04 \n",
"2024-08-21 73.12 74.16 71.46 71.93 361850 72.67 71.93 \n",
"2024-08-22 71.93 73.52 71.58 73.00 28663 72.70 73.00 \n",
"\n",
" unadjusted_volume change change_percent \n",
"date \n",
"2023-08-22 287489.0 -0.45 -0.005569 \n",
"2023-08-23 378146.0 -0.75 -0.009417 \n",
"2023-08-24 349230.0 0.48 0.006109 \n",
"2023-08-25 411409.0 0.95 0.012000 \n",
"2023-08-28 246584.0 -0.05 -0.000624 \n",
"... ... ... ... \n",
"2024-08-18 175.0 0.13 0.001698 \n",
"2024-08-19 118172.0 -2.21 -0.028900 \n",
"2024-08-20 118172.0 -0.30 -0.004036 \n",
"2024-08-21 361850.0 -1.19 -0.016300 \n",
"2024-08-22 28663.0 1.07 0.014876 \n",
"\n",
"[266 rows x 10 columns]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.equity.price.historical(\"CL=F\", provider=\"fmp\").to_df()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
" split_ratio | \n",
" dividend | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 146.238007 | \n",
" 146.389999 | \n",
" 145.501999 | \n",
" 146.238007 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-23 | \n",
" 145.763000 | \n",
" 145.813004 | \n",
" 144.580002 | \n",
" 145.763000 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-24 | \n",
" 144.673004 | \n",
" 145.947006 | \n",
" 144.621002 | \n",
" 144.673004 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-25 | \n",
" 146.067001 | \n",
" 146.604996 | \n",
" 145.733994 | \n",
" 146.067001 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-28 | \n",
" 146.531006 | \n",
" 146.716003 | \n",
" 146.278000 | \n",
" 146.531006 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 149.222000 | \n",
" 149.229996 | \n",
" 147.639008 | \n",
" 149.222000 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 147.955994 | \n",
" 147.959000 | \n",
" 145.220993 | \n",
" 147.955994 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 146.699005 | \n",
" 147.319000 | \n",
" 145.533997 | \n",
" 146.699005 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 145.347000 | \n",
" 146.339005 | \n",
" 144.981003 | \n",
" 145.347000 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-22 | \n",
" 145.117996 | \n",
" 146.524994 | \n",
" 144.839996 | \n",
" 146.292999 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
262 rows × 7 columns
\n",
"
"
],
"text/plain": [
" open high low close volume \\\n",
"date \n",
"2023-08-22 146.238007 146.389999 145.501999 146.238007 0 \n",
"2023-08-23 145.763000 145.813004 144.580002 145.763000 0 \n",
"2023-08-24 144.673004 145.947006 144.621002 144.673004 0 \n",
"2023-08-25 146.067001 146.604996 145.733994 146.067001 0 \n",
"2023-08-28 146.531006 146.716003 146.278000 146.531006 0 \n",
"... ... ... ... ... ... \n",
"2024-08-16 149.222000 149.229996 147.639008 149.222000 0 \n",
"2024-08-19 147.955994 147.959000 145.220993 147.955994 0 \n",
"2024-08-20 146.699005 147.319000 145.533997 146.699005 0 \n",
"2024-08-21 145.347000 146.339005 144.981003 145.347000 0 \n",
"2024-08-22 145.117996 146.524994 144.839996 146.292999 0 \n",
"\n",
" split_ratio dividend \n",
"date \n",
"2023-08-22 0.0 0.0 \n",
"2023-08-23 0.0 0.0 \n",
"2023-08-24 0.0 0.0 \n",
"2023-08-25 0.0 0.0 \n",
"2023-08-28 0.0 0.0 \n",
"... ... ... \n",
"2024-08-16 0.0 0.0 \n",
"2024-08-19 0.0 0.0 \n",
"2024-08-20 0.0 0.0 \n",
"2024-08-21 0.0 0.0 \n",
"2024-08-22 0.0 0.0 \n",
"\n",
"[262 rows x 7 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.equity.price.historical(\"usdjpy=x\", provider=\"yfinance\").to_df()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" open | \n",
" high | \n",
" low | \n",
" close | \n",
" volume | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2023-08-22 | \n",
" 146.238007 | \n",
" 146.389999 | \n",
" 145.501999 | \n",
" 146.238007 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-23 | \n",
" 145.763000 | \n",
" 145.813004 | \n",
" 144.580002 | \n",
" 145.763000 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-24 | \n",
" 144.673004 | \n",
" 145.947006 | \n",
" 144.621002 | \n",
" 144.673004 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-25 | \n",
" 146.067001 | \n",
" 146.604996 | \n",
" 145.733994 | \n",
" 146.067001 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2023-08-28 | \n",
" 146.531006 | \n",
" 146.716003 | \n",
" 146.278000 | \n",
" 146.531006 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 2024-08-16 | \n",
" 149.222000 | \n",
" 149.229996 | \n",
" 147.639008 | \n",
" 149.222000 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-19 | \n",
" 147.955994 | \n",
" 147.959000 | \n",
" 145.220993 | \n",
" 147.955994 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-20 | \n",
" 146.699005 | \n",
" 147.319000 | \n",
" 145.533997 | \n",
" 146.699005 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-21 | \n",
" 145.347000 | \n",
" 146.339005 | \n",
" 144.981003 | \n",
" 145.347000 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 2024-08-22 | \n",
" 145.117996 | \n",
" 146.524994 | \n",
" 144.839996 | \n",
" 146.287003 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
262 rows × 5 columns
\n",
"
"
],
"text/plain": [
" open high low close volume\n",
"date \n",
"2023-08-22 146.238007 146.389999 145.501999 146.238007 0.0\n",
"2023-08-23 145.763000 145.813004 144.580002 145.763000 0.0\n",
"2023-08-24 144.673004 145.947006 144.621002 144.673004 0.0\n",
"2023-08-25 146.067001 146.604996 145.733994 146.067001 0.0\n",
"2023-08-28 146.531006 146.716003 146.278000 146.531006 0.0\n",
"... ... ... ... ... ...\n",
"2024-08-16 149.222000 149.229996 147.639008 149.222000 0.0\n",
"2024-08-19 147.955994 147.959000 145.220993 147.955994 0.0\n",
"2024-08-20 146.699005 147.319000 145.533997 146.699005 0.0\n",
"2024-08-21 145.347000 146.339005 144.981003 145.347000 0.0\n",
"2024-08-22 145.117996 146.524994 144.839996 146.287003 0.0\n",
"\n",
"[262 rows x 5 columns]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obb.currency.price.historical(\"usdjpy\", provider=\"yfinance\").to_df()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "obb",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}