diff --git a/project-templates/python/alternative-data-universe-quivercnbcsuniverse/research.ipynb b/project-templates/python/alternative-data-universe-quivercnbcsuniverse/research.ipynb new file mode 100644 index 0000000000..1a80bf145e --- /dev/null +++ b/project-templates/python/alternative-data-universe-quivercnbcsuniverse/research.ipynb @@ -0,0 +1,667 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a1b2c3d4", + "metadata": {}, + "source": [ + "![QuantConnect Logo](https://cdn.quantconnect.com/web/i/icon.png)\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "e5f6a7b8", + "metadata": {}, + "source": [ + "## Quiver CNBC Trading Research\n", + "\n", + "This notebook studies whether CNBC buy-recommendation count helps explain future returns" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c9d0e1f2", + "metadata": {}, + "outputs": [], + "source": [ + "qb = QuantBook()\n", + "# Daily bars will have an end_time that matches the following midnight.\n", + "qb.settings.daily_precise_end_time = False" + ] + }, + { + "cell_type": "markdown", + "id": "a3b4c5d6", + "metadata": {}, + "source": [ + "### Build a CNBC Universe\n", + "\n", + "Select assets with 3 or more BUY recommendations from CNBC commentators, then inspect the returned universe history." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e7f8a9b0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape: (439, 4)\n", + "Columns: ['advicedate', 'direction', 'time', 'traders']\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
advicedatedirectiontimetraders
time
2025-06-02DIS R735QTJ8XC9X2025-06-01Buy2025-06-02Guy Adami
DIS R735QTJ8XC9X2025-06-01Buy2025-06-02Julie Biel
DIS R735QTJ8XC9X2025-06-01Buy2025-06-02Tim Seymour
DIS R735QTJ8XC9X2025-06-01Hold2025-06-02Carter Worth
2025-06-03BA R735QTJ8XC9X2025-06-02Buy2025-06-03Guy Adami
\n", + "
" + ], + "text/plain": [ + " advicedate direction time traders\n", + "time \n", + "2025-06-02 DIS R735QTJ8XC9X 2025-06-01 Buy 2025-06-02 Guy Adami\n", + " DIS R735QTJ8XC9X 2025-06-01 Buy 2025-06-02 Julie Biel\n", + " DIS R735QTJ8XC9X 2025-06-01 Buy 2025-06-02 Tim Seymour\n", + " DIS R735QTJ8XC9X 2025-06-01 Hold 2025-06-02 Carter Worth\n", + "2025-06-03 BA R735QTJ8XC9X 2025-06-02 Buy 2025-06-03 Guy Adami" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def select_assets(data: List[QuiverCNBCsUniverse]) -> List[Symbol]:\n", + " # Group raw CNBC opinions by ticker so we can score each name.\n", + " cnbc_by_symbol: dict[Symbol, list[QuiverCNBCsUniverse]] = {}\n", + " for d in data:\n", + " cnbc_by_symbol.setdefault(d.symbol, []).append(d)\n", + " # Keep names with 3+ BUY recommendations to filter out noise.\n", + " return [s for s, ds in cnbc_by_symbol.items()\n", + " if sum(1 for d in ds if d.direction == OrderDirection.BUY) >= 3]\n", + "\n", + "# Add the Quiver CNBC universe.\n", + "universe = qb.add_universe(QuiverCNBCsUniverse, select_assets)\n", + "# Request universe history of the last 365 days.\n", + "universe_history = qb.universe_history(universe, qb.time - timedelta(365), qb.time - timedelta(1), flatten=True)\n", + "# Print the returned shape and columns.\n", + "print(f\"Shape: {universe_history.shape}\")\n", + "print(f\"Columns: {list(universe_history.columns)}\")\n", + "universe_history.head()" + ] + }, + { + "cell_type": "markdown", + "id": "c1d2e3f4", + "metadata": {}, + "source": [ + "### Universe Diagnostics\n", + "\n", + "Inspects the raw CNBC direction distribution and visualizes how the unique asset footprint expands chronologically." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a5b6c7d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Universe days: 128\n", + "Mean basket size per day: 1.5\n", + "\n", + "count 439\n", + "unique 3\n", + "top Buy\n", + "freq 401\n", + "Name: direction, dtype: object\n" + ] + }, + { + "data": { + "image/png": "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VsLtdgcs69evH6xWK5xOJwDgv/7rv2Cz2XDvvfeGfBZCiJC0/GDWrFmj6al69913AQC9e/cOu+0LL7yAp59+Gk888QROP/30kNfbtm2L0aNH4+mnn9Y0kqKZA0LSBXpuCDEx7733Hnbt2gW3243Dhw9j9erVWLVqFbp06YI333xTCe00b94cI0eOxD//+U+4XC507NgRK1euxL59+xI6/hVXXIG77roLb7zxBm688UbY7faotpszZw7OPPNMDB48GDfccAO6du2KH374AQsWLIDFYsGcOXMSGlcwgwcPRo8ePXD33XfD6XQGhKQA3/w8+eSTuPLKKzF48GBcfvnlaNOmDcrKyvDOO+9gxIgRePzxxyMeY/Xq1Zg5cyYmTZqEXr16we12Y9GiRbDZbLjkkksA+DxE999/P0pLS/HDDz9g4sSJKCoqwr59+/DGG2/ghhtuwB133BH2GDfffDNqa2tx8cUX4+STT0ZDQwPWr1+veKOuvvpqze2OHj2Km266CX369IHD4QiofwQAF198MQoKCvDEE0/grLPOQr9+/XD99dfjpJNOwuHDh/HZZ5/hxx9/xNdffx3NdBNiflKXqEUICYdM15aP3NxcUVJSIs477zwxf/58UVlZGbLNjz/+KC6++GLRokULUVxcLCZNmiR++uknAUD89a9/Ddl3pFRwNePHjxcAxPr162N6Dzt37hSTJ08Wbdu2FTk5OaJt27bi8ssvFzt37gxZt0uXLmLChAkhy4PHFZwKrubuu+8WAESPHj3CjmnNmjVi7Nixori4WOTl5Ynu3buLq666SmzYsEFZZ/r06aKgoCBk271794prrrlGdO/eXeTl5YlWrVqJc845R3z44Ych6/773/8WZ511ligoKBAFBQXi5JNPFjNmzBC7d+8OOzYhhHjvvffENddcI04++WRRWFgocnNzRY8ePcTNN98sDh8+HLCuOhVcpt+He6g/6++//15MmzZNlJSUCLvdLjp27CguuOAC8frrr0ccGyHphEWIGKp7EUKyjosvvhhbt27Fnj17Uj0UQgiJCmpuCCFhOXToEN555x2lVgohhKQD1NwQQkLYt28fPv30Uzz77LOw2+34wx/+kOohEUJI1NBzQwgJ4eOPP8aVV16Jffv24cUXX9SsDUMIIWaFmhtCCCGEZBT03BBCCCEko8g6zY3X68VPP/2EoqKi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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Count selected assets by day.\n", + "universe_size = universe_history[universe_history.direction == OrderDirection.BUY].groupby(level=[0, 1]).count().direction.groupby(level=0).count()\n", + "print(f\"Universe days: {len(universe_size)}\")\n", + "# Store the selected symbol list.\n", + "unique_assets = list(universe_history.index.levels[1].unique())\n", + "print(f\"Mean basket size per day: {universe_size.mean():.1f}\")\n", + "print('')\n", + "print(universe_history.direction.describe())\n", + "universe_size.plot(title='Daily Universe Size', ylabel='Universe Size');" + ] + }, + { + "cell_type": "markdown", + "id": "e9f0a1b2", + "metadata": {}, + "source": [ + "### Daily Universe Prices\n", + "\n", + "Fetch daily price history for every symbol that appears in the universe." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c3d4e5f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
closehighlowopenvolume
symboltime
DIS R735QTJ8XC9X2025-06-03111.714530112.347530111.022187111.5068276704791.0
2025-06-04112.357420113.435498111.309015111.4919918239115.0
2025-06-05112.248624112.792608111.773874112.6739205543754.0
2025-06-06111.299124113.089326110.626562112.3673118325729.0
2025-06-07112.644248112.970639112.120046112.6244674854050.0
.....................
XON R735QTJ8XC9X2026-05-23154.920000155.530000153.170000154.03000012112414.0
2026-05-27149.810000154.550000149.480000153.50000012121531.0
2026-05-28147.900000148.685000145.840000147.22500013696288.0
2026-05-29147.000000150.180000146.870000149.3400009846087.0
2026-05-30145.330000146.920000144.710000146.10000010475825.0
\n", + "

11250 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " close high low open \\\n", + "symbol time \n", + "DIS R735QTJ8XC9X 2025-06-03 111.714530 112.347530 111.022187 111.506827 \n", + " 2025-06-04 112.357420 113.435498 111.309015 111.491991 \n", + " 2025-06-05 112.248624 112.792608 111.773874 112.673920 \n", + " 2025-06-06 111.299124 113.089326 110.626562 112.367311 \n", + " 2025-06-07 112.644248 112.970639 112.120046 112.624467 \n", + "... ... ... ... ... \n", + "XON R735QTJ8XC9X 2026-05-23 154.920000 155.530000 153.170000 154.030000 \n", + " 2026-05-27 149.810000 154.550000 149.480000 153.500000 \n", + " 2026-05-28 147.900000 148.685000 145.840000 147.225000 \n", + " 2026-05-29 147.000000 150.180000 146.870000 149.340000 \n", + " 2026-05-30 145.330000 146.920000 144.710000 146.100000 \n", + "\n", + " volume \n", + "symbol time \n", + "DIS R735QTJ8XC9X 2025-06-03 6704791.0 \n", + " 2025-06-04 8239115.0 \n", + " 2025-06-05 5543754.0 \n", + " 2025-06-06 8325729.0 \n", + " 2025-06-07 4854050.0 \n", + "... ... \n", + "XON R735QTJ8XC9X 2026-05-23 12112414.0 \n", + " 2026-05-27 12121531.0 \n", + " 2026-05-28 13696288.0 \n", + " 2026-05-29 9846087.0 \n", + " 2026-05-30 10475825.0 \n", + "\n", + "[11250 rows x 5 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Extract unique assets\n", + "symbols = list(universe_history.index.get_level_values(1).unique())\n", + "# Fetch daily historical price metrics using the earliest timestamp available in the index.\n", + "history = qb.history(symbols, universe_history.index[0][0] - timedelta(1), qb.time, Resolution.DAILY)\n", + "history" + ] + }, + { + "cell_type": "markdown", + "id": "a7b8c9d0", + "metadata": {}, + "source": [ + "### Align CNBC Signals And Returns\n", + "\n", + "Build a joined table of buy counts and future returns." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d56c7cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
buycountfuturereturn
timesymbol
2025-06-03BA R735QTJ8XC9X30.013020
2025-06-05AVGO UEW4IOBWVPT13-0.026250
2025-06-11ORCL R735QTJ8XC9X40.069158
2025-07-01AAPL R735QTJ8XC9X30.035371
2025-07-02AAPL R735QTJ8XC9X10.025880
\n", + "
" + ], + "text/plain": [ + " buycount futurereturn\n", + "time symbol \n", + "2025-06-03 BA R735QTJ8XC9X 3 0.013020\n", + "2025-06-05 AVGO UEW4IOBWVPT1 3 -0.026250\n", + "2025-06-11 ORCL R735QTJ8XC9X 4 0.069158\n", + "2025-07-01 AAPL R735QTJ8XC9X 3 0.035371\n", + "2025-07-02 AAPL R735QTJ8XC9X 1 0.025880" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset = (\n", + " universe_history.groupby(level=[0, 1]).agg(buycount=('direction', lambda x: (x == OrderDirection.BUY).sum())).rename_axis(['time', 'symbol'])\n", + " .join(history.open.unstack('symbol').sort_index().pct_change(2).shift(-2).stack().rename('futurereturn').rename_axis(['time','symbol']), how='inner')\n", + ")\n", + "dataset.head()" + ] + }, + { + "cell_type": "markdown", + "id": "c5d6e7f8", + "metadata": {}, + "source": [ + "### Analyze Relationships Between Factor and Future Returns\n", + "\n", + "Create a box plot of buy-count quantile buckets compared to future returns." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7d8e9f0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Factor: buycount\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 bucketmean_factormin_future_returnmax_future_returnmean_future_returnstd_future_returnobservations
0(0.999, 3.0]1.930-10.51%14.57%1.37%4.12%114
1(3.0, 6.0]4.538-2.95%12.38%3.23%5.33%13
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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9zcjS0A+ODo6qkOHDvYuAwBwBzFnCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwISTvQsAAKCwJScnKzIyMtd2KSkpioqKkp+fn9zc3EzbBgQEyN3dvaBKRBFGWAIAlHiRkZEKCgoq0D4PHjyopk2bFmifKJoISwCAEi8gIEAHDx7MtV1ERIQGDRqkjz/+WIGBgbn2ibsDYQkAUOK5u7vnaxQoMDCQUSNYMcEbAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADARLELS++//778/Pzk6uqq4OBg/fDDDzdt+9NPP6lXr17y8/OTxWLRnDlzbrtPAABwdylWYWn16tUaPXq0Jk6cqEOHDqlRo0bq0qWLLly4kGP75ORk1ahRQ9OmTZOPj0+B9AkAAO4uxSoszZo1SyNGjNDQoUNVt25dhYeHy93dXQsXLsyxffPmzTV9+nT1799fLi4uBdInAAC4uzjZu4C8SktL08GDBzVu3DjrNgcHB4WEhGjv3r13tM/U1FSlpqZanyckJNzS66NoSU5OVmRkZK7tUlJSFBUVJT8/P7m5uZm2DQgIkLu7e0GVCACwg2ITli5duqSMjAxVqlTJZnulSpXy9AuuIPucOnWqJk+efEuviaIrMjJSQUFBBdrnwYMH1bRp0wLtEwBwZxWbsFSUjBs3TqNHj7Y+T0hIkK+vrx0rQkEICAjQwYMHc20XERGhQYMG6eOPP1ZgYGCufQIAirdiE5YqVKggR0dHxcbG2myPjY296eTtwurTxcXlpnOgUHy5u7vnaxQoMDCQUSMAuAsUmwnezs7OCgoK0rZt26zbMjMztW3bNrVq1arI9AkAAEqWYjOyJEmjR49WWFiYmjVrphYtWmjOnDn6888/NXToUEnS4MGDVbVqVU2dOlXSjQncP//8s/X/z549qyNHjqhMmTKqVatWnvoEAAB3t2IVlvr166eLFy9qwoQJiomJUePG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wARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwARhCQAAwISTvQsAiork5GRFRkbm2i4iIsLmv2YCAgLk7u5+27UBAOyHsAT8f5GRkQoKCspz+0GDBuXa5uDBg2ratOntlAUAsDPCEvD/BQQE6ODBg7m2S0lJUVRUlPz8/OTm5pZrnwCA4s1iGIZh7yKKu4SEBHl5eSk+Pl6enp72LgcAAORBXn9/M8EbAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADABGEJAADARLEJS1euXNHAgQPl6empsmXLatiwYUpKSjI9Zv78+erQoYM8PT1lsVgUFxdXIP0CAIC7R7EJSwMHDtRPP/2krVu3atOmTdq1a5eefPJJ02OSk5PVtWtXjR8/vkD7BQAAdw+LYRiGvYvITUREhOrWrav9+/erWbNmkqQtW7aoW7duOnPmjKpUqWJ6/I4dO9SxY0ddvXpVZcuWLbB+syQkJMjLy0vx8fHy9PS8tZMEAAB3VF5/fxeLkaW9e/eqbNmy1kAjSSEhIXJwcND3339/x/tNTU1VQkKCzQMAAJRMxSIsxcTEqGLFijbbnJycVL58ecXExNzxfqdOnSovLy/rw9fX95ZrAAAARZtdw9Krr74qi8Vi+oiMjLRniTkaN26c4uPjrY/Tp0/buyTcIRkZGdqxY4dWrlypHTt2KCMjw94lAQAKmZM9X3zMmDEaMmSIaZsaNWrIx8dHFy5csNl+/fp1XblyRT4+Prf8+rfar4uLi1xcXG75dVE8rV+/XmPGjFFUVJR1m5+fn2bOnKmePXvarzAAQKGy68iSt7e3AgICTB/Ozs5q1aqV4uLidPDgQeux33zzjTIzMxUcHHzLr19Y/aLkWb9+vXr37q0GDRpo7969SkxM1N69e9WgQQP17t1b69evt3eJAIBCUiyuhpOkhx56SLGxsQoPD1d6erqGDh2qZs2aacWKFZKks2fPqnPnzlq6dKlatGgh6cacpJiYGB04cEAjRozQrl275OHhoXvvvVfly5fPU795wdVwJVtGRoZq1aqlBg0aaOPGjXJw+N/fGJmZmQoNDdXx48d18uRJOTo62rFSAEB+lKir4SRp+fLlCggIUOfOndWtWze1bdtW8+fPt+5PT0/XiRMnlJycbN0WHh6uJk2aaMSIEZKk+++/X02aNNGnn36a536B3bt3KyoqSuPHj7cJSpLk4OCgcePG6dSpU9q9e7edKgQAFKZiM7JUlDGyVLKtXLlSjz32mBITE1WmTJls+xMTE+Xp6akVK1ZowIABdqgQAHArStzIEmAvlStXliQdP348x/1Z27PaAQBKFsISkIt27drJz89Pb7/9tjIzM232ZWZmaurUqfL391e7du3sVCEAoDARloBcODo6aubMmdq0aZNCQ0NtroYLDQ3Vpk2bNGPGDCZ3A0AJZdd1loDiomfPnlq3bp3GjBmj1q1bW7f7+/tr3bp1rLMEACUYE7wLABO87x4ZGRnavXu3zp8/r8qVK6tdu3aMKAFAMZXX39+MLAH54OjoqA4dOti7DADAHcScJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOs4F0Asu4Yk5CQYOdKAABAXmX93s7tzm+EpQKQmJgoSfL19bVzJQAAIL8SExPl5eV10/3cSLcAZGZm6ty5c/Lw8JDFYrF3OShkCQkJ8vX11enTp7lxMlDC8P6+uxiGocTERFWpUkUODjefmcTIUgFwcHBQtWrV7F0G7jBPT09+mAIlFO/vu4fZiFIWJngDAACYICwBAACYICwB+eTi4qKJEyfKxcXF3qUAKGC8v5ETJngDAACYYGQJAADABGEJAADABGEJAADABGEJAADABGEJKCL27t2rqKgoe5cB4DbFx8fbuwQUMMISUAR89NFHatOmjfr166ezZ8/auxwAt2jNmjV6/vnndfjwYXuXggJEWALs7Oeff9bbb7+t8PBwpaWlqVevXjpz5oy9ywKQT6tWrVL//v21bt06zZ07V8eOHbN3SSggrLMEFAG///67atSooT/++ENdunRR2bJltW7dOu45CBQT6enpmjdvnu6//36lpqaqb9++6tChg8aMGaOGDRvauzzcJsISYEeZmZnWO11n/f/p06f14IMPysvLi8AEFCPp6ekqVaqUJGnr1q0aMWKE2rdvT2AqAQhLwB3214D0dxkZGXJ0dCQwAcWAYRiyWCw22zIyMmSxWOTg4EBgKkEIS8AdlBWUkpKSNG3aNP3xxx9q2LChgoKC1KlTJ0nS9evX5eTkRGACirCsP2zS0tIUFRUlNzc3eXp6ysvLS9evX5ejo6MsFou+/vprDR8+XPfff7/GjBmjRo0a2bt03ALCEnCHJSUlqWnTpqpcubIqVqyon3/+WY6OjurVq5cmTpwoKXtgKlu2rNauXUtgAoqArBGlhIQEde3aVXFxcUpISFD16tX1n//8R23atLFpR2Aq/rgaDrjDPvjgA1WuXFmbN2/W2rVr9fnnn6tfv36aN2+eXnrpJUmSk5OTMjIy5Ovrqy1btujq1avq06eP/vjjDztXD8BisSgtLU0hISGqXLmyli9frmnTpsnPz08dOnTQsmXLrG0zMzMVEhKijz76SLt27dKsWbO4Sq4YIiwBd1jWwpOlS5eWJPn5+enpp5/WuHHjtGrVKs2cOVOS5OjoKMMwVL16df3888/6/vvvNW7cOKWmptqrdAD/3/nz55WSkqJx48apSZMmGjRokBYsWKCXX35Zw4YN09q1a2WxWJSZmWkNTAsWLNC+ffv01ltvEZiKGcIScIcFBwcrISHB5oflPffco/79+6tv3776v//7P+s6S1mTRz/55BN5enqqV69ecnFxsUvdAP4nPj5eP/30k7JmsmRmZsrd3V1TpkzR888/r8GDB+vYsWNycnKSxWKRYRh64IEH1K5dO23duvWmF3mgaOK7Bdxh9evXV0pKipYtW6aLFy9at1eqVEmPP/64vv/+e0VERNgcEx8fr5UrV6pXr153ulwAOWjYsKG6dOmiyZMn68KFC3JwcLAGp5dfflkdOnTQRx99pIyMDEk3/vA5duyYjh49qvDwcNWvX9+e5SOfCEvAHRYUFKRx48Zp9uzZevfdd21ub1K7dm3Vq1fP+gM264fv8OHD9dBDD9mlXgA569evny5fvqx33nlHV69etY4Ee3t7y8fHRz/99JP1qjhJ8vf316pVq9SvXz97lo1b4GTvAoC7SdbVMWFhYbp27ZrGjBmjCxcuqHfv3goKCtLatWsVFRWlKlWqSFK2NVwA2F/W+3jIkCGKjIzUli1blJ6erpdfflkVKlSQJFWpUkXXrl3TtWvXrB+de3h4yMPDw56l4xaxdABQgMwWnMzy14Xs1qxZow8++EA//vijKlasqMuXL+u9995T375970S5AG4it/fyX/dPmDBBX3/9tRITE9W/f39dvnxZ77//vj755BM98sgjd6pkFCLCElBAshapS05O1qeffqro6Gh16tRJgYGB1ivf/t5Wks6dO6fY2FjFx8fLx8dHAQEBOa4MDODOyHp/JiUlafHixXrwwQdVp06dbO3+Gpi2bt2q9evX68CBA/L19dWQIUPUvXt33sslBGEJKABZPzQTEhLUrl07lS5dWqdPn5ZhGFqyZIk6d+6crS2AouevC04GBQWpXr16mjp1qu677z7r+zarTU7v5dTUVDk6OsrJyck655CwVPzxExsoAA4ODvrzzz/Vtm1b1a9fX5s2bdLp06dVvXp1ffbZZ9naStKKFSs0ffp08fcKUHRkLTgZGhqqRo0aacOGDQoMDJRhGEpLS7O2uX79uvW9/NerV52dneXk5GRtR1AqGQhLQAHIzMzU7NmzVbt2bc2dO1deXl6SpDZt2sjBwUGjR4/W6tWr9fvvv0uSUlJStGHDBi1dutS6SCWAouHcuXNKTk7W22+/LYvFosmTJ6t79+566KGH9Pzzz0uSdeTo66+/Vvv27bV48WJJjCKVVFwNBxQABwcHtW7dWm3btlW5cuVksVi0du1azZo1S48++qji4uK0a9cuBQQE6N1331X58uU1b948nTlzRv7+/vYuH8BfREdH6/z586pTp45efPFFbd++Xf3799fFixe1fv16HT16VDt27JDFYlHFihX10EMPydfX195loxAxZwkoQFlzGC5fvqyQkBCFhYXp2WefValSpfThhx9q0qRJ2r59uwICAuxdKoCbiI+PV3BwsPr166d9+/Zp4sSJat26tSRpz549GjRokJ555hmNHTtW0o2bY5cpU4bJ3CUYI0tAAcqaw3DPPffoyy+/VMWKFa0LTAYFBcnFxYU5SkARZhiGnJyc1L59e3311Ve6ePGiatSoYd3fvHlz3XfffTYfn5cpU0YSH8GVZMxZAgqJt7e3JFmXCPj2229VpUoVlStXzp5lATBhsVhUunRpPfPMM0pKStLvv/+uFStWWPeXKlVKvr6+1sUl+ePn7sDIElBIsv7KvHbtmlauXKnXXntNK1askI+Pj50rA2DGMAw1atRIy5Yt0xNPPKF58+bp8uXL+sc//qF9+/Zp1apV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "factor = 'buycount'\n", + "# Split factor values into quantile buckets.\n", + "x = dataset[factor]\n", + "y = dataset['futurereturn']\n", + "buckets = pd.cut(x, bins=len(x.unique()))\n", + "# Summarize each bucket with distribution statistics.\n", + "summary = dataset.assign(bucket=buckets).groupby('bucket', observed=True).agg(\n", + " mean_factor=(factor, 'mean'),\n", + " min_future_return=('futurereturn', 'min'),\n", + " max_future_return=('futurereturn', 'max'),\n", + " mean_future_return=('futurereturn', 'mean'),\n", + " std_future_return=('futurereturn', 'std'),\n", + " observations=('futurereturn', 'size')\n", + ").reset_index()\n", + "summary['bucket'] = summary['bucket'].astype(str)\n", + "# Display the bucket summary.\n", + "print(f\"Factor: {factor}\")\n", + "display(summary.style.format({\n", + " 'mean_factor': '{:.3f}',\n", + " 'min_future_return': '{:.2%}',\n", + " 'max_future_return': '{:.2%}',\n", + " 'mean_future_return': '{:.2%}',\n", + " 'std_future_return': '{:.2%}'\n", + "}))\n", + "# Plot the return distribution for each bucket.\n", + "groups = [y[buckets == b].values for b in buckets.cat.categories]\n", + "plt.boxplot(groups, labels=[str(b) for b in buckets.cat.categories])\n", + "plt.axhline(0, color='black', linewidth=1, alpha=0.4)\n", + "plt.title(f'Future Return by {factor} Bucket')\n", + "plt.xlabel(f'{factor} Bucket')\n", + "plt.ylabel('Future Return')\n", + "plt.xticks(rotation=45)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Foundation-Py-Default", + "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.11.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}