{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "7ffc94eb",
      "metadata": {},
      "source": [
        "# Uploading New Exposures to Existing Dataset and Updating the Risk Dataset\n",
        "\n",
        "Use this notebook to append new exposure data to an existing upload and update an existing risk dataset."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "aacb4bc0",
      "metadata": {},
      "outputs": [],
      "source": [
        "import datetime as dt\n",
        "from pathlib import Path\n",
        "\n",
        "import polars as pl\n",
        "from tqdm import tqdm\n",
        "\n",
        "from bayesline.apiclient import BayeslineApiClient\n",
        "from bayesline.api.equity import (\n",
        "    ContinuousExposureGroupSettings,\n",
        "    ExposureSettings, \n",
        "    UniverseSettings,\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "a210bdb7",
      "metadata": {
        "tags": [
          "skip-execution"
        ]
      },
      "outputs": [],
      "source": [
        "bln = BayeslineApiClient.new_client(\n",
        "    endpoint=\"https://[ENDPOINT]\",\n",
        "    api_key=\"[API-KEY]\",\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4c70b88c",
      "metadata": {},
      "source": [
        "## Updating New Exposure Files"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "id": "cce47038",
      "metadata": {},
      "outputs": [],
      "source": [
        "exposure_dir = Path(\"PATH/TO/EXPOSURES\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "id": "eddc08b3",
      "metadata": {},
      "outputs": [],
      "source": [
        "exposure_dataset_name = \"My-Exposures\""
      ]
    },
    {
      "cell_type": "markdown",
      "id": "f37bfa31",
      "metadata": {},
      "source": [
        "Below gets the exposure uploader for the chosen dataset name `My-Exposures`. This dataset is assummed to be already created since we demonstrate a catch up upload. See the [Uploaders Tutorial](https://docs.bayesline.com/0.12.1/notebooks/tutorial_uploaders.html) for a deep dive into the `Uploaders API`."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "id": "83717d79",
      "metadata": {},
      "outputs": [],
      "source": [
        "exposure_uploader = bln.equity.uploaders.get_data_type(\"exposures\")\n",
        "uploader = exposure_uploader.get_dataset(dataset=exposure_dataset_name)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "56753e2c",
      "metadata": {},
      "source": [
        "Below we list the existing files in the provided folder and filter out all dates for which we already processed files in a previous run."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "id": "aaa246e1",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Got 30 new dates\n"
          ]
        }
      ],
      "source": [
        "# list all csv files and group them by year\n",
        "# expects file pattern \"*_YYYY-MM-DD.csv\"\n",
        "\n",
        "files = list(exposure_dir.glob(\"*.csv\"))\n",
        "file_date_strs = [file.name.split(\"_\")[-1].replace(\"-\", \"\")[:8] for file in files]\n",
        "\n",
        "available_dates = [\n",
        "    dt.date(int(d[:4]), int(d[4:6]), int(d[6:8])) for d in file_date_strs\n",
        "]\n",
        "\n",
        "existing_dates = (\n",
        "    uploader.get_data(columns=[\"date\"], unique=True).collect().to_series().to_list()\n",
        ")\n",
        "\n",
        "new_dates = sorted(set(available_dates) - set(existing_dates))\n",
        "\n",
        "print(f\"Got {len(new_dates)} new dates\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "id": "d3d51e8e",
      "metadata": {},
      "outputs": [],
      "source": [
        "files_by_date = {\n",
        "    dt.date(int(d[:4]), int(d[4:6]), int(d[6:8])): f for d, f in zip(file_date_strs, files)\n",
        "}"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "ebee4c21",
      "metadata": {},
      "source": [
        "As a next step we iterate over each `csv` file and stage it. Note that for large amounts of files it's much more performant to upload `zip` files instead. See this [recipe](https://docs.bayesline.com/0.12.1/notebooks/recipe_daily_exposure_upload.html) for details.\n",
        "\n",
        "See the [Uploaders Tutorial](https://docs.bayesline.com/0.12.1/notebooks/tutorial_uploaders.html#staging-data) for more details on the *staging* and *commit* concepts."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "id": "f7a87e8e",
      "metadata": {
        "tags": [
          "remove-output"
        ]
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            "  0%|          | 0/30 [00:00<?, ?it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            "  3%|▎         | 1/30 [00:00<00:15,  1.89it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            "  7%|▋         | 2/30 [00:01<00:14,  1.89it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 10%|█         | 3/30 [00:01<00:13,  1.97it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 13%|█▎        | 4/30 [00:02<00:13,  1.94it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 17%|█▋        | 5/30 [00:02<00:13,  1.88it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 20%|██        | 6/30 [00:03<00:12,  1.90it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 23%|██▎       | 7/30 [00:03<00:11,  1.93it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 27%|██▋       | 8/30 [00:04<00:11,  1.95it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 30%|███       | 9/30 [00:04<00:11,  1.90it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 33%|███▎      | 10/30 [00:05<00:10,  1.87it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 37%|███▋      | 11/30 [00:05<00:09,  1.91it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 40%|████      | 12/30 [00:06<00:09,  1.86it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 43%|████▎     | 13/30 [00:06<00:08,  1.96it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 47%|████▋     | 14/30 [00:07<00:08,  1.91it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 50%|█████     | 15/30 [00:07<00:07,  1.91it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 53%|█████▎    | 16/30 [00:08<00:07,  1.91it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 57%|█████▋    | 17/30 [00:08<00:06,  1.97it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 60%|██████    | 18/30 [00:09<00:06,  1.98it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 63%|██████▎   | 19/30 [00:09<00:05,  2.09it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 67%|██████▋   | 20/30 [00:10<00:04,  2.06it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 70%|███████   | 21/30 [00:10<00:04,  2.06it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 73%|███████▎  | 22/30 [00:11<00:03,  2.03it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 77%|███████▋  | 23/30 [00:11<00:03,  2.03it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 80%|████████  | 24/30 [00:12<00:02,  2.04it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 83%|████████▎ | 25/30 [00:12<00:02,  2.10it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 87%|████████▋ | 26/30 [00:13<00:02,  1.97it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 90%|█████████ | 27/30 [00:13<00:01,  1.98it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 93%|█████████▎| 28/30 [00:14<00:00,  2.03it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            " 97%|█████████▋| 29/30 [00:14<00:00,  1.96it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            "100%|██████████| 30/30 [00:15<00:00,  2.02it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\r",
            "100%|██████████| 30/30 [00:15<00:00,  1.97it/s]"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\n"
          ]
        }
      ],
      "source": [
        "for date in tqdm(new_dates):\n",
        "    file = files_by_date[date]\n",
        "    result = uploader.stage_file(file)\n",
        "    assert result.success"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "id": "c47c0e38",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "UploadCommitResult(version=2, committed_names=['exposures_2025-06-14', 'exposures_2025-06-05', 'exposures_2025-06-04', 'exposures_2025-06-06', 'exposures_2025-06-28', 'exposures_2025-06-10', 'exposures_2025-06-26', 'exposures_2025-06-21', 'exposures_2025-06-29', 'exposures_2025-06-08', 'exposures_2025-06-17', 'exposures_2025-06-24', 'exposures_2025-06-22', 'exposures_2025-06-11', 'exposures_2025-06-01', 'exposures_2025-06-25', 'exposures_2025-06-27', 'exposures_2025-06-19', 'exposures_2025-06-13', 'exposures_2025-06-12', 'exposures_2025-06-02', 'exposures_2025-06-30', 'exposures_2025-06-03', 'exposures_2025-06-23', 'exposures_2025-06-18', 'exposures_2025-06-16', 'exposures_2025-06-07', 'exposures_2025-06-15', 'exposures_2025-06-20', 'exposures_2025-06-09'])"
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "uploader.commit(mode=\"append\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "id": "1b9a47be",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div><style>\n",
              ".dataframe > thead > tr,\n",
              ".dataframe > tbody > tr {\n",
              "  text-align: right;\n",
              "  white-space: pre-wrap;\n",
              "}\n",
              "</style>\n",
              "<small>shape: (61, 6)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>date</th><th>n_assets</th><th>min_exposure</th><th>max_exposure</th><th>mean_exposure</th><th>std_exposure</th></tr><tr><td>date</td><td>i64</td><td>f32</td><td>f32</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>2025-05-01</td><td>9108</td><td>-3.0</td><td>3.0</td><td>0.07378</td><td>0.871145</td></tr><tr><td>2025-05-02</td><td>9107</td><td>-3.0</td><td>3.0</td><td>0.075814</td><td>0.869677</td></tr><tr><td>2025-05-03</td><td>9106</td><td>-3.0</td><td>3.0</td><td>0.075695</td><td>0.869591</td></tr><tr><td>2025-05-04</td><td>9106</td><td>-3.0</td><td>3.0</td><td>0.075698</td><td>0.869592</td></tr><tr><td>2025-05-05</td><td>9107</td><td>-3.0</td><td>3.0</td><td>0.080996</td><td>0.868992</td></tr><tr><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td></tr><tr><td>2025-06-26</td><td>9126</td><td>-3.0</td><td>3.0</td><td>0.08665</td><td>0.868966</td></tr><tr><td>2025-06-27</td><td>9124</td><td>-3.0</td><td>3.0</td><td>0.085263</td><td>0.868539</td></tr><tr><td>2025-06-28</td><td>9119</td><td>-3.0</td><td>3.0</td><td>0.085423</td><td>0.868163</td></tr><tr><td>2025-06-29</td><td>9119</td><td>-3.0</td><td>3.0</td><td>0.085438</td><td>0.868134</td></tr><tr><td>2025-06-30</td><td>9121</td><td>-3.0</td><td>3.0</td><td>0.085612</td><td>0.86852</td></tr></tbody></table></div>"
            ],
            "text/plain": [
              "shape: (61, 6)\n",
              "┌────────────┬──────────┬──────────────┬──────────────┬───────────────┬──────────────┐\n",
              "│ date       ┆ n_assets ┆ min_exposure ┆ max_exposure ┆ mean_exposure ┆ std_exposure │\n",
              "│ ---        ┆ ---      ┆ ---          ┆ ---          ┆ ---           ┆ ---          │\n",
              "│ date       ┆ i64      ┆ f32          ┆ f32          ┆ f64           ┆ f64          │\n",
              "╞════════════╪══════════╪══════════════╪══════════════╪═══════════════╪══════════════╡\n",
              "│ 2025-05-01 ┆ 9108     ┆ -3.0         ┆ 3.0          ┆ 0.07378       ┆ 0.871145     │\n",
              "│ 2025-05-02 ┆ 9107     ┆ -3.0         ┆ 3.0          ┆ 0.075814      ┆ 0.869677     │\n",
              "│ 2025-05-03 ┆ 9106     ┆ -3.0         ┆ 3.0          ┆ 0.075695      ┆ 0.869591     │\n",
              "│ 2025-05-04 ┆ 9106     ┆ -3.0         ┆ 3.0          ┆ 0.075698      ┆ 0.869592     │\n",
              "│ 2025-05-05 ┆ 9107     ┆ -3.0         ┆ 3.0          ┆ 0.080996      ┆ 0.868992     │\n",
              "│ …          ┆ …        ┆ …            ┆ …            ┆ …             ┆ …            │\n",
              "│ 2025-06-26 ┆ 9126     ┆ -3.0         ┆ 3.0          ┆ 0.08665       ┆ 0.868966     │\n",
              "│ 2025-06-27 ┆ 9124     ┆ -3.0         ┆ 3.0          ┆ 0.085263      ┆ 0.868539     │\n",
              "│ 2025-06-28 ┆ 9119     ┆ -3.0         ┆ 3.0          ┆ 0.085423      ┆ 0.868163     │\n",
              "│ 2025-06-29 ┆ 9119     ┆ -3.0         ┆ 3.0          ┆ 0.085438      ┆ 0.868134     │\n",
              "│ 2025-06-30 ┆ 9121     ┆ -3.0         ┆ 3.0          ┆ 0.085612      ┆ 0.86852      │\n",
              "└────────────┴──────────┴──────────────┴──────────────┴───────────────┴──────────────┘"
            ]
          },
          "execution_count": 11,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "uploader.get_data_detail_summary()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "68a3116a",
      "metadata": {},
      "source": [
        "## Updating the Risk Dataset\n",
        "\n",
        "To bring the newly uploaded exposures into the pre-existing dataset we need to update it. This pulls the most recent version for all referenced datasets and re-creates the risk dataset."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "id": "4d06d24e",
      "metadata": {},
      "outputs": [],
      "source": [
        "risk_dataset_name = \"My-Risk-Dataset\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "id": "f38c34e7",
      "metadata": {},
      "outputs": [],
      "source": [
        "risk_datasets = bln.equity.riskdatasets\n",
        "risk_dataset = risk_datasets.load(risk_dataset_name)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "id": "9571936e",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "RiskDatasetUpdateResult()"
            ]
          },
          "execution_count": 14,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "risk_dataset.update()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "id": "5fae939c",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "RiskDatasetProperties(factor_risk_model_settings_menu=FactorRiskModelSettingsMenu(exposure_settings_menu=ExposureSettingsMenu(universe_settings_menu=UniverseSettingsMenu(calendar_settings_menu=CalendarSettingsMenu(exchanges=['ARCX', 'BVCA', 'BVMF', 'DIFX', 'DSMD', 'ETFP', 'FRAB', 'HSTC', 'JBUL', 'PFTS', 'ROCO', 'SHSC', 'SZSC', 'WBDM', 'XADS', 'XAMM', 'XAMS', 'XASE', 'XASX', 'XATH', 'XBAH', 'XBEL', 'XBEY', 'XBKF', 'XBKK', 'XBOG', 'XBOM', 'XBOS', 'XBRA', 'XBRU', 'XBRV', 'XBUD', 'XBUE', 'XCAI', 'XCAN', 'XCAS', 'XCHG', 'XCSE', 'XCYS', 'XDUB', 'XEQY', 'XETB', 'XHEL', 'XHKG', 'XHNX', 'XICE', 'XIDX', 'XJAM', 'XJAS', 'XJSE', 'XKAR', 'XKLS', 'XKOS', 'XKRX', 'XKUW', 'XLIM', 'XLIS', 'XLIT', 'XLJU', 'XLON', 'XLUX', 'XMAD', 'XMAL', 'XMAU', 'XMEX', 'XMUS', 'XNAI', 'XNAM', 'XNCM', 'XNGO', 'XNMS', 'XNSA', 'XNSE', 'XNYS', 'XNZE', 'XOSL', 'XPAE', 'XPAR', 'XPHS', 'XPRM', 'XPSX', 'XQUI', 'XRIS', 'XSAU', 'XSEC', 'XSES', 'XSGO', 'XSHE', 'XSHG', 'XSSC', 'XSTC', 'XSTO', 'XSWX', 'XTAE', 'XTAI', 'XTAL', 'XTKS', 'XTSE', 'XTSX', 'XTUN', 'XWAR', 'XZAG', 'XZIM']), id_types=['bayesid'], categorical_hierarchies={'trbc': {'50': {'5010': {'501010': {'50101010': ['5010101010', '5010101011', '5010101012']}, '501020': {'50102010': ['5010201010'], '50102020': ['5010202010', '5010202011', '5010202012', '5010202013', '5010202014', '5010202015'], '50102030': ['5010203010', '5010203011', '5010203012', '5010203013']}, '501030': {'50103010': ['5010301010', '5010301011', '5010301012', '5010301013', '5010301014', '5010301015'], '50103020': ['5010302010', '5010302011', '5010302012', '5010302013'], '50103030': ['5010303010', '5010303011', '5010303012', '5010303013', '5010303014', '5010303015']}}, '5020': {'502010': {'50201010': ['5020101010', '5020101011', '5020101012', '5020101013', '5020101014', '5020101015', '5020101016', '5020101017', '5020101018', '5020101019', '5020101020'], '50201020': ['5020102010', '5020102011', '5020102012', '5020102013', '5020102014', '5020102015']}}, '5030': {'503010': {'50301010': ['5030101010', '5030101011', '5030101012']}}}, '51': {'5110': {'511010': {'51101010': ['5110101010', '5110101011', '5110101012', '5110101013', '5110101014', '5110101015', '5110101016', '5110101017'], '51101020': ['5110102010', '5110102011', '5110102012', '5110102013', '5110102014'], '51101030': ['5110103010', '5110103011', '5110103012', '5110103014', '5110103016', '5110103017', '5110103018', '5110103019'], '51101090': ['5110109010']}}, '5120': {'512010': {'51201010': ['5120101010', '5120101011', '5120101012', '5120101013', '5120101014', '5120101015', '5120101016'], '51201020': ['5120102010', '5120102011', '5120102012', '5120102013', '5120102014', '5120102015', '5120102016'], '51201030': ['5120103010', '5120103011', '5120103012', '5120103013', '5120103014', '5120103015', '5120103016'], '51201050': ['5120105010', '5120105011', '5120105012', '5120105013', '5120105014', '5120105015', '5120105016', '5120105017'], '51201060': ['5120106010', '5120106011', '5120106012'], '51201070': ['5120107010', '5120107011', '5120107012', '5120107013'], '51201080': ['5120108010']}, '512020': {'51202010': ['5120201010', '5120201011', '5120201012', '5120201013', '5120201014', '5120201015']}}, '5130': {'513010': {'51301010': ['5130101010', '5130101011', '5130101012', '5130101013', '5130101014', '5130101015', '5130101016'], '51301020': ['5130102010', '5130102011', '5130102012', '5130102013', '5130102014']}, '513020': {'51302010': ['5130201010', '5130201011', '5130201012', '5130201013', '5130201014', '5130201015', '5130201016'], '51302020': ['5130202010', '5130202011']}}}, '52': {'5210': {'521010': {'52101010': ['5210101010', '5210101011', '5210101012', '5210101013', '5210101014', '5210101015', '5210101016', '5210101017', '5210101018', '5210101019', '5210101020', '5210101021']}, '521020': {'52102010': ['5210201010', '5210201011', '5210201012', '5210201013', '5210201014', '5210201015', '5210201016', '5210201017', '5210201018', '5210201019', '5210201020', '5210201021', '5210201022', '5210201023', '5210201024', '5210201025'], '52102020': ['5210202010', '5210202011', '5210202012', '5210202013', '5210202014', '5210202015', '5210202016', '5210202017'], '52102030': ['5210203010', '5210203011', '5210203012', '5210203013', '5210203014', '5210203015', '5210203016', '5210203017', '5210203018', '5210203019', '5210203020'], '52102040': ['5210204010', '5210204011', '5210204012', '5210204013', '5210204014', '5210204015', '5210204016'], '52102050': ['5210205010', '5210205011', '5210205012']}}, '5220': {'522010': {'52201020': ['5220102010', '5220102011', '5220102012', '5220102013', '5220102014', '5220102015', '5220102016', '5220102017', '5220102018', '5220102019', '5220102020', '5220102021', '5220102022', '5220102023']}, '522020': {'52202010': ['5220201010']}, '522030': {'52203010': ['5220301010', '5220301011', '5220301012', '5220301013', '5220301014', '5220301015'], '52203020': ['5220302010', '5220302011', '5220302012', '5220302013'], '52203030': ['5220303010', '5220303011', '5220303012', '5220303013', '5220303014'], '52203040': ['5220304010', '5220304011', '5220304012', '5220304013', '5220304014', '5220304016', '5220304017', '5220304018', '5220304019', '5220304020', '5220304021', '5220304022', '5220304023', '5220304024', '5220304025', '5220304026', '5220304027'], '52203060': ['5220306010', '5220306011', '5220306012', '5220306013', '5220306014'], '52203070': ['5220307010', '5220307011', '5220307012', '5220307013', '5220307014', '5220307015', '5220307016', '5220307017', '5220307018', '5220307019']}}, '5230': {'523010': {'52301010': ['5230101010']}}, '5240': {'524050': {'52405010': ['5240501010', '5240501011', '5240501012', '5240501013', '5240501014'], '52405020': ['5240502010', '5240502011', '5240502012', '5240502013'], '52405030': ['5240503010', '5240503011', '5240503012', '5240503013', '5240503014']}, '524060': {'52406010': ['5240601010', '5240601011', '5240601012', '5240601013', '5240601014'], '52406020': ['5240602010', '5240602011', '5240602012', '5240602013', '5240602014', '5240602015', '5240602016', '5240602017']}, '524070': {'52407010': ['5240701010', '5240701011', '5240701012', '5240701013', '5240701014'], '52407020': ['5240702010', '5240702011', '5240702012', '5240702013'], '52407030': ['5240703010', '5240703011', '5240703012', '5240703013']}}}, '53': {'5310': {'531010': {'53101010': ['5310101010', '5310101011', '5310101012', '5310101013', '5310101014', '5310101015', '5310101016'], '53101020': ['5310102010', '5310102011', '5310102012', '5310102013', '5310102014', '5310102015', '5310102016', '5310102017'], '53101030': ['5310103010', '5310103011', '5310103012', '5310103013', '5310103014', '5310103015']}}, '5320': {'532020': {'53202010': ['5320201010', '5320201011', '5320201012', '5320201013', '5320201014', '5320201015', '5320201016', '5320201017', '5320201018', '5320201019'], '53202020': ['5320202010', '5320202011', '5320202012', '5320202013', '5320202014', '5320202015', '5320202016', '5320202017', '5320202018', '5320202019', '5320202020', '5320202021', '5320202022', '5320202023', '5320202024', '5320202025', '5320202026', '5320202027', '5320202028', '5320202029', '5320202030'], '53202030': ['5320203010', '5320203011', '5320203012', '5320203013', '5320203014', '5320203015', '5320203016', '5320203017']}, '532030': {'53203010': ['5320301010', '5320301011', '5320301012', '5320301013', '5320301014', '5320301015', '5320301016'], '53203020': ['5320302010', '5320302011', '5320302012', '5320302013', '5320302014', '5320302015', '5320302016', '5320302017', '5320302018', '5320302019', '5320302020']}, '532040': {'53204030': ['5320403010', '5320403011', '5320403012', '5320403013', '5320403014', '5320403015', '5320403016'], '53204040': ['5320404010', '5320404011', '5320404012', '5320404014', '5320404015', '5320404016', '5320404017', '5320404018']}, '532050': {'53205010': ['5320501010', '5320501011', '5320501012', '5320501013', '5320501014', '5320501015', '5320501016'], '53205020': ['5320502010', '5320502011', '5320502012', '5320502013', '5320502014', '5320502015', '5320502016', '5320502017']}}, '5330': {'533010': {'53301010': ['5330101010', '5330101011', '5330101012', '5330101013', '5330101014', '5330101015', '5330101016', '5330101017'], '53301020': ['5330102010', '5330102011', '5330102012', '5330102013', '5330102014', '5330102015', '5330102016'], '53301030': ['5330103010', '5330103011', '5330103012', '5330103013', '5330103014', '5330103015'], '53301040': ['5330104010', '5330104011', '5330104012', '5330104013', '5330104014', '5330104015', '5330104016', '5330104017', '5330104018', '5330104019', '5330104020', '5330104021', '5330104022', '5330104023']}, '533020': {'53302010': ['5330201010', '5330201011', '5330201012', '5330201013', '5330201014', '5330201015', '5330201016', '5330201017', '5330201018', '5330201019', '5330201020', '5330201021', '5330201022'], '53302020': ['5330202010', '5330202011', '5330202012', '5330202013'], '53302030': ['5330203010', '5330203011', '5330203012', '5330203013', '5330203014', '5330203015', '5330203016'], '53302040': ['5330204010', '5330204011', '5330204012', '5330204013', '5330204014', '5330204015', '5330204016', '5330204017']}}, '5340': {'534020': {'53402010': ['5340201010', '5340201011', '5340201012', '5340201013'], '53402020': ['5340202010', '5340202011', '5340202012', '5340202013', '5340202014', '5340202015']}, '534030': {'53403010': ['5340301010', '5340301011', '5340301012', '5340301013', '5340301014', '5340301015', '5340301016'], '53403020': ['5340302010', '5340302011', '5340302012', '5340302013', '5340302014', '5340302015', '5340302016', '5340302017'], '53403030': ['5340303010', '5340303011', '5340303012', '5340303013', '5340303014', '5340303015', '5340303016'], '53403040': ['5340304010', '5340304011', '5340304012', '5340304013', '5340304014', '5340304015', '5340304016', '5340304017', '5340304018', '5340304019'], '53403050': ['5340305010', '5340305011', '5340305012', '5340305013'], '53403090': ['5340309010', '5340309011', '5340309012', '5340309013', '5340309014', '5340309015', '5340309016', '5340309017', '5340309018', '5340309019', '5340309020', '5340309021', '5340309022', '5340309023', '5340309024', '5340309025']}}}, '54': {'5410': {'541010': {'54101010': ['5410101010', '5410101011'], '54101020': ['5410102010', '5410102011', '5410102012', '5410102013'], '54101030': ['5410103010', '5410103011', '5410103012', '5410103013', '5410103014']}, '541020': {'54102010': ['5410201010', '5410201011', '5410201012', '5410201013', '5410201014', '5410201015', '5410201016', '5410201017', '5410201018', '5410201019', '5410201020', '5410201021', '5410201022', '5410201023', '5410201024', '5410201025', '5410201026', '5410201027', '5410201028', '5410201029', '5410201030'], '54102020': ['5410202010', '5410202011', '5410202012', '5410202013', '5410202014', '5410202015', '5410202016', '5410202017', '5410202018', '5410202019', '5410202020', '5410202021', '5410202022', '5410202023', '5410202024', '5410202025', '5410202026', '5410202027', '5410202028', '5410202030', '5410202031', '5410202032'], '54102030': ['5410203010', '5410203011', '5410203012', '5410203013', '5410203014']}}, '5420': {'542010': {'54201010': ['5420101010', '5420101011', '5420101012', '5420101013', '5420101015', '5420101016'], '54201020': ['5420102010', '5420102011', '5420102012', '5420102013', '5420102014', '5420102015', '5420102016'], '54201030': ['5420103010', '5420103011', '5420103012', '5420103013', '5420103015', '5420103016', '5420103017', '5420103018']}}, '5430': {'543010': {'54301010': ['5430101010', '5430101011', '5430101012', '5430101013', '5430101014'], '54301020': ['5430102010', '5430102011', '5430102012', '5430102013', '5430102014', '5430102015', '5430102016']}}, '5440': {'544010': {'54401010': ['5440101010']}}}, '55': {'5510': {'551010': {'55101010': ['5510101010', '5510101011', '5510101012', '5510101013', '5510101014', '5510101015'], '55101030': ['5510103010', '5510103011', '5510103012', '5510103013', '5510103014', '5510103015'], '55101050': ['5510105010', '5510105011', '5510105012', '5510105013', '5510105014', '5510105015']}, '551020': {'55102010': ['5510201010', '5510201011', '5510201012', '5510201013', '5510201014', '5510201015'], '55102020': ['5510202010', '5510202011', '5510202012', '5510202013', '5510202014', '5510202015', '5510202016', '5510202017'], '55102030': ['5510203010'], '55102050': ['5510205010', '5510205011', '5510205012']}}, '5530': {'553010': {'55301010': ['5530101010', '5530101011', '5530101012'], '55301020': ['5530102010', '5530102011', '5530102012', '5530102013', '5530102014'], '55301030': ['5530103010', '5530103011', '5530103012'], '55301050': ['5530105010', '5530105011', '5530105012']}}, '5550': {'555010': {'55501010': ['5550101010'], '55501020': ['5550102010', '5550102011'], '55501030': ['5550103010'], '55501040': ['5550104010', '5550104011', '5550104012'], '55501050': ['5550105010'], '55501060': ['5550106010']}}, '5560': {'556010': {'55601010': ['5560101010', '5560101011']}}}, '56': {'5610': {'561010': {'56101010': ['5610101010', '5610101011', '5610101012', '5610101013', '5610101014', '5610101015', '5610101016'], '56101020': ['5610102010', '5610102011', '5610102012', '5610102013', '5610102014', '5610102015', '5610102016', '5610102017', '5610102018', '5610102019']}, '561020': {'56102010': ['5610201010', '5610201011', '5610201012', '5610201013', '5610201014', '5610201015', '5610201016', '5610201017', '5610201018', '5610201019', '5610201020'], '56102020': ['5610202010', '5610202011']}}, '5620': {'562010': {'56201040': ['5620104010', '5620104011', '5620104012', '5620104013', '5620104014', '5620104015', '5620104016', '5620104017', '5620104018']}, '562020': {'56202010': ['5620201010', '5620201011', '5620201012', '5620201013']}}}, '57': {'5710': {'571010': {'57101010': ['5710101010', '5710101011', '5710101012', '5710101013', '5710101014', '5710101015'], '57101020': ['5710102010', '5710102011', '5710102012', '5710102013']}, '571020': {'57102010': ['5710201010', '5710201011', '5710201012', '5710201013', '5710201014', '5710201015', '5710201016', '5710201017']}, '571040': {'57104010': ['5710401010', '5710401011', '5710401012', '5710401013', '5710401014', '5710401015']}, '571050': {'57105010': ['5710501010', '5710501011', '5710501012', '5710501013', '5710501014', '5710501015']}, '571060': {'57106010': ['5710601010', '5710601011', '5710601012', '5710601013', '5710601014', '5710601015', '5710601016', '5710601017', '5710601018', '5710601019'], '57106020': ['5710602010', '5710602011', '5710602012', '5710602013', '5710602014', '5710602015'], '57106030': ['5710603010', '5710603011', '5710603012', '5710603013', '5710603014']}, '571070': {'57107010': ['5710701010']}}, '5720': {'572010': {'57201010': ['5720101010', '5720101011', '5720101012', '5720101013', '5720101014', '5720101015', '5720101016'], '57201020': ['5720102010', '5720102011', '5720102012', '5720102013', '5720102014', '5720102015', '5720102016', '5720102017', '5720102018'], '57201030': ['5720103010', '5720103011', '5720103012', '5720103013', '5720103014', '5720103015', '5720103016']}}, '5730': {'573010': {'57301010': ['5730101010', '5730101020', '5730101030', '5730101040'], '57301020': ['5730102010', '5730102020', '5730102030'], '57301030': ['5730103010', '5730103020', '5730103030', '5730103040', '5730103050'], '57301090': ['5730109010']}}, '5740': {'574010': {'57401010': ['5740101010', '5740101020', '5740101030', '5740101040', '5740101050', '5740101060'], '57401020': ['5740102010', '5740102020', '5740102030', '5740102040', '5740102050']}}}, '59': {'5910': {'591010': {'59101010': ['5910101010', '5910101012', '5910101013', '5910101014', '5910101020', '5910101021', '5910101022', '5910101023', '5910101024', '5910101025'], '59101020': ['5910102010', '5910102011', '5910102012', '5910102013']}, '591020': {'59102010': ['5910201010', '5910201011']}, '591030': {'59103010': ['5910301010', '5910301011', '5910301012', '5910301013']}, '591040': {'59104010': ['5910401010']}}}, '60': {'6010': {'601010': {'60101010': ['6010101010', '6010101020', '6010101030', '6010101040', '6010101050'], '60101020': ['6010102010', '6010102020', '6010102030', '6010102040', '6010102050']}, '601020': {'60102010': ['6010201010'], '60102020': ['6010202010', '6010202020', '6010202030', '6010202040'], '60102030': ['6010203010'], '60102040': ['6010204010', '6010204020', '6010204030', '6010204040', '6010204050', '6010204060', '6010204070']}}}, '61': {'6110': {'611010': {'61101010': ['6110101010'], '61101020': ['6110102010'], '61101030': ['6110103010'], '61101040': ['6110104010'], '61101050': ['6110105010', '6110105020', '6110105030', '6110105040']}}}, '62': {'6210': {'621010': {'62101010': ['6210101010', '6210101020'], '62101020': ['6210102010', '6210102020', '6210102030'], '62101030': ['6210103010'], '62101040': ['6210104010']}}}, '63': {'6310': {'631010': {'63101010': ['6310101010']}, '631020': {'63102010': ['6310201010', '6310201020', '6310201030', '6310201040', '6310201050', '6310201060']}, '631030': {'63103010': ['6310301010']}}}}}, categorical_hierarchies_labels={'trbc': {'50': 'Energy', '51': 'Basic Materials', '52': 'Industrials', '53': 'Consumer Cyclicals', '54': 'Consumer Non-Cyclicals', '55': 'Financials', '56': 'Healthcare', '57': 'Technology', '59': 'Utilities', '60': 'Real Estate', '61': 'Institutions, Associations & Organizations', '62': 'Government Activity', '63': 'Academic & Educational Services', '5010': 'Energy - Fossil Fuels', '5020': 'Renewable Energy', '5030': 'Uranium', '5110': 'Chemicals', '5120': 'Mineral Resources', '5130': 'Applied Resources', '5210': 'Industrial Goods', '5220': 'Industrial & Commercial Services', '5230': 'Industrial Conglomerates', '5240': 'Transportation', '5310': 'Automobiles & Auto Parts', '5320': 'Cyclical Consumer Products', '5330': 'Cyclical Consumer Services', '5340': 'Retailers', '5410': 'Food & Beverages', '5420': 'Personal & Household Products & Services', '5430': 'Food & Drug Retailing', '5440': 'Consumer Goods Conglomerates', '5510': 'Banking & Investment Services', '5530': 'Insurance', '5550': 'Collective Investments', '5560': 'Investment Holding Companies', '5610': 'Healthcare Services & Equipment', '5620': 'Pharmaceuticals & Medical Research', '5710': 'Technology Equipment', '5720': 'Software & IT Services', '5730': 'Financial Technology (Fintech) & Infrastructure', '5740': 'Telecommunications Services', '5910': 'Utilities', '6010': 'Real Estate', '6110': 'Institutions, Associations & Organizations', '6210': 'Government Activity', '6310': 'Academic & Educational Services', '501010': 'Coal', '501020': 'Oil & Gas', '501030': 'Oil & Gas Related Equipment and Services', '502010': 'Renewable Energy', '503010': 'Uranium', '511010': 'Chemicals', '512010': 'Metals & Mining', '512020': 'Construction Materials', '513010': 'Paper & Forest Products', '513020': 'Containers & Packaging', '521010': 'Aerospace & Defense', '521020': 'Machinery, Tools, Heavy Vehicles, Trains & Ships', '522010': 'Construction & Engineering', '522020': 'Diversified Industrial Goods Wholesale', '522030': 'Professional & Commercial Services', '523010': 'Industrial Conglomerates', '524050': 'Freight & Logistics Services', '524060': 'Passenger Transportation Services', '524070': 'Transport Infrastructure', '531010': 'Automobiles & Auto Parts', '532020': 'Textiles & Apparel', '532030': 'Homebuilding & Construction Supplies', '532040': 'Household Goods', '532050': 'Leisure Products', '533010': 'Hotels & Entertainment Services', '533020': 'Media & Publishing', '534020': 'Diversified Retail', '534030': 'Specialty Retailers', '541010': 'Beverages', '541020': 'Food & Tobacco', '542010': 'Personal & Household Products & Services', '543010': 'Food & Drug Retailing', '544010': 'Consumer Goods Conglomerates', '551010': 'Banking Services', '551020': 'Investment Banking & Investment Services', '553010': 'Insurance', '555010': 'Collective Investments', '556010': 'Investment Holding Companies', '561010': 'Healthcare Equipment & Supplies', '561020': 'Healthcare Providers & Services', '562010': 'Pharmaceuticals', '562020': 'Biotechnology & Medical Research', '571010': 'Semiconductors & Semiconductor Equipment', '571020': 'Communications & Networking', '571040': 'Electronic Equipment & Parts', '571050': 'Office Equipment', '571060': 'Computers, Phones & Household Electronics', '571070': 'Integrated Hardware & Software', '572010': 'Software & IT Services', '573010': 'Financial Technology (Fintech) & Infrastructure', '574010': 'Telecommunications Services', '591010': 'Electrical Utilities & IPPs', '591020': 'Natural Gas Utilities', '591030': 'Water & Related Utilities', '591040': 'Multiline Utilities', '601010': 'Real Estate Operations', '601020': 'Residential & Commercial REITs', '611010': 'Institutions, Associations & Organizations', '621010': 'Government Activity', '631010': 'Miscellaneous Educational Service Providers', '631020': 'School, College & University', '631030': 'Professional & Business Education', '50101010': 'Coal', '50102010': 'Integrated Oil & Gas', '50102020': 'Oil & Gas Exploration and Production', '50102030': 'Oil & Gas Refining and Marketing', '50103010': 'Oil & Gas Drilling', '50103020': 'Oil Related Services and Equipment', '50103030': 'Oil & Gas Transportation Services', '50201010': 'Renewable Energy Equipment & Services', '50201020': 'Renewable Fuels', '50301010': 'Uranium', '51101010': 'Commodity Chemicals', '51101020': 'Agricultural Chemicals', '51101030': 'Specialty Chemicals', '51101090': 'Diversified Chemicals', '51201010': 'Non-Gold Precious Metals & Minerals', '51201020': 'Iron & Steel', '51201030': 'Aluminum', '51201050': 'Specialty Mining & Metals', '51201060': 'Gold', '51201070': 'Mining Support Services & Equipment', '51201080': 'Diversified Mining', '51202010': 'Construction Materials', '51301010': 'Forest & Wood Products', '51301020': 'Paper Products', '51302010': 'Non-Paper Containers & Packaging', '51302020': 'Paper Packaging', '52101010': 'Aerospace & Defense', '52102010': 'Industrial Machinery & Equipment', '52102020': 'Heavy Machinery & Vehicles', '52102030': 'Electrical Components & Equipment', '52102040': 'Heavy Electrical Equipment', '52102050': 'Shipbuilding', '52201020': 'Construction & Engineering', '52202010': 'Diversified Industrial Goods Wholesale', '52203010': 'Environmental Services & Equipment', '52203020': 'Commercial Printing Services', '52203030': 'Employment Services', '52203040': 'Business Support Services', '52203060': 'Business Support Supplies', '52203070': 'Professional Information Services', '52301010': 'Industrial Conglomerates', '52405010': 'Courier, Postal, Air Freight & Land-based Logistics', '52405020': 'Marine Freight & Logistics', '52405030': 'Ground Freight & Logistics', '52406010': 'Airlines', '52406020': 'Passenger Transportation, Ground & Sea', '52407010': 'Airport Operators & Services', '52407020': 'Marine Port Services', '52407030': 'Highways & Rail Tracks', '53101010': 'Auto & Truck Manufacturers', '53101020': 'Auto, Truck & Motorcycle Parts', '53101030': 'Tires & Rubber Products', '53202010': 'Textiles & Leather Goods', '53202020': 'Apparel & Accessories', '53202030': 'Footwear', '53203010': 'Homebuilding', '53203020': 'Construction Supplies & Fixtures', '53204030': 'Appliances, Tools & Housewares', '53204040': 'Home Furnishings', '53205010': \"Toys & Children's Products\", '53205020': 'Recreational Products', '53301010': 'Hotels, Motels & Cruise Lines', '53301020': 'Restaurants & Bars', '53301030': 'Casinos & Gaming', '53301040': 'Leisure & Recreation', '53302010': 'Advertising & Marketing', '53302020': 'Broadcasting', '53302030': 'Entertainment Production', '53302040': 'Consumer Publishing', '53402010': 'Department Stores', '53402020': 'Discount Stores', '53403010': 'Auto Vehicles, Parts & Service Retailers', '53403020': 'Home Improvement Products & Services Retailers', '53403030': 'Home Furnishings Retailers', '53403040': 'Apparel & Accessories Retailers', '53403050': 'Computer & Electronics Retailers', '53403090': 'Miscellaneous Specialty Retailers', '54101010': 'Brewers', '54101020': 'Distillers & Wineries', '54101030': 'Non-Alcoholic Beverages', '54102010': 'Fishing & Farming', '54102020': 'Food Processing', '54102030': 'Tobacco', '54201010': 'Household Products', '54201020': 'Personal Products', '54201030': 'Personal Services', '54301010': 'Drug Retailers', '54301020': 'Food Retail & Distribution', '54401010': 'Consumer Goods Conglomerates', '55101010': 'Banks', '55101030': 'Consumer Lending', '55101050': 'Corporate Financial Services', '55102010': 'Investment Banking & Brokerage Services', '55102020': 'Investment Management & Fund Operators', '55102030': 'Diversified Investment Services', '55102050': 'Financial & Commodity Market Operators & Service Providers', '55301010': 'Multiline Insurance & Brokers', '55301020': 'Property & Casualty Insurance', '55301030': 'Life & Health Insurance', '55301050': 'Reinsurance', '55501010': 'UK Investment Trusts', '55501020': 'Mutual Funds', '55501030': 'Closed End Funds', '55501040': 'Exchange-Traded Funds', '55501050': 'Pension Funds', '55501060': 'Insurance Funds', '55601010': 'Investment Holding Companies', '56101010': 'Advanced Medical Equipment & Technology', '56101020': 'Medical Equipment, Supplies & Distribution', '56102010': 'Healthcare Facilities & Services', '56102020': 'Managed Healthcare', '56201040': 'Pharmaceuticals', '56202010': 'Biotechnology & Medical Research', '57101010': 'Semiconductors', '57101020': 'Semiconductor Equipment & Testing', '57102010': 'Communications & Networking', '57104010': 'Electronic Equipment & Parts', '57105010': 'Office Equipment', '57106010': 'Computer Hardware', '57106020': 'Phones & Handheld Devices', '57106030': 'Household Electronics', '57107010': 'Integrated Hardware & Software', '57201010': 'IT Services & Consulting', '57201020': 'Software', '57201030': 'Online Services', '57301010': 'Financial Technology (Fintech)', '57301020': 'Crowd Collaboration', '57301030': 'Blockchain & Cryptocurrency', '57301090': 'Miscellaneous Fintech Infrastructure', '57401010': 'Integrated Telecommunications Services', '57401020': 'Wireless Telecommunications Services', '59101010': 'Electric Utilities', '59101020': 'Independent Power Producers', '59102010': 'Natural Gas Utilities', '59103010': 'Water & Related Utilities', '59104010': 'Multiline Utilities', '60101010': 'Real Estate Rental, Development & Operations', '60101020': 'Real Estate Services', '60102010': 'Diversified REITs', '60102020': 'Commercial REITs', '60102030': 'Residential REITs', '60102040': 'Specialized REITs', '61101010': 'Religious Organizations', '61101020': 'Civic & Social Organizations', '61101030': 'Environmental Organizations', '61101040': 'Charity Organizations', '61101050': 'Professional Organizations', '62101010': 'Government & Government Finance', '62101020': 'Legal & Safety Public Services', '62101030': 'Government Administration Activities', '62101040': 'National Security & International Affairs', '63101010': 'Miscellaneous Educational Service Providers', '63102010': 'School, College & University', '63103010': 'Professional & Business Education', '5010101010': 'Coal (NEC)', '5010101011': 'Coal Mining Support', '5010101012': 'Coal Wholesale', '5010201010': 'Integrated Oil & Gas', '5010202010': 'Oil & Gas Exploration and Production (NEC)', '5010202011': 'Oil Exploration & Production - Onshore', '5010202012': 'Oil Exploration & Production - Offshore', '5010202013': 'Natural Gas Exploration & Production - Onshore', '5010202014': 'Natural Gas Exploration & Production - Offshore', '5010202015': 'Unconventional Oil & Gas Production', '5010203010': 'Oil & Gas Refining and Marketing (NEC)', '5010203011': 'Petroleum Refining', '5010203012': 'Gasoline Stations', '5010203013': 'Petroleum Product Wholesale', '5010301010': 'Oil & Gas Drilling (NEC)', '5010301011': 'Oil Drilling - Onshore', '5010301012': 'Gas Drilling - Onshore', '5010301013': 'Oil Drilling - Offshore', '5010301014': 'Gas Drilling - Offshore', '5010301015': 'Unconventional Oil & Gas Drilling', '5010302010': 'Oil Related Services and Equipment (NEC)', '5010302011': 'Oil Related Services', '5010302012': 'Oil Related Equipment', '5010302013': 'Oil Related - Surveying & Mapping Services', '5010303010': 'Oil & Gas Transportation Services (NEC)', '5010303011': 'LNG Transportation & Storage', '5010303012': 'Natural Gas Pipeline Transportation', '5010303013': 'Oil Pipeline Transportation', '5010303014': 'Sea-Borne Tankers', '5010303015': 'Oil & Gas Storage', '5020101010': 'Renewable Energy Equipment & Services (NEC)', '5020101011': 'Wind Systems & Equipment', '5020101012': 'Stationary Fuel Cells', '5020101013': 'Photovoltaic Solar Systems & Equipment', '5020101014': 'Thermal Solar Systems & Equipment', '5020101015': 'Biomass Power Energy Equipment', '5020101016': 'Waste to Energy Systems & Equipment', '5020101017': 'Hydropower Equipment', '5020101018': 'Wave Power Energy Equipment', '5020101019': 'Renewable Energy Services', '5020101020': 'Geothermal Equipment', '5020102010': 'Renewable Fuels (NEC)', '5020102011': 'Biodiesel', '5020102012': 'Ethanol Fuels', '5020102013': 'Pyrolytic & Synthetic Fuels', '5020102014': 'Biomass & Biogas Fuels', '5020102015': 'Hydrogen Fuel', '5030101010': 'Uranium (NEC)', '5030101011': 'Uranium Mining', '5030101012': 'Uranium Processing', '5110101010': 'Commodity Chemicals (NEC)', '5110101011': 'Plastics', '5110101012': 'Paints & Coatings', '5110101013': 'Tanning & Softening Agents', '5110101014': 'Explosives', '5110101015': 'Industrial Gases', '5110101016': 'Commodity Chemicals Wholesale', '5110101017': 'Glass', '5110102010': 'Agricultural Chemicals (NEC)', '5110102011': 'Fertilizers', '5110102012': 'Pesticides', '5110102013': 'Organic Fertilizers', '5110102014': 'Agricultural Chemicals Wholesale', '5110103010': 'Specialty Chemicals (NEC)', '5110103011': 'Coloring Agents', '5110103012': 'Synthetic Fibers', '5110103014': 'Advanced Polymers', '5110103016': 'Industrial Biotechnology Chemicals', '5110103017': 'Specialty Chemicals Wholesale', '5110103018': 'Composites', '5110103019': 'Adhesive & Epoxy', '5110109010': 'Diversified Chemicals', '5120101010': 'Non-Gold Precious Metals & Minerals (NEC)', '5120101011': 'Silver Mining', '5120101012': 'Platinum Mining', '5120101013': 'Diamond Mining', '5120101014': 'Semiprecious Gem Stones', '5120101015': 'Pearl Cultivation', '5120101016': 'Rare Earth Minerals', '5120102010': 'Iron & Steel (NEC)', '5120102011': 'Iron Ore Mining', '5120102012': 'Coke Coal Mining', '5120102013': 'Iron, Steel Mills & Foundries', '5120102014': 'Metal Service Centers', '5120102015': 'Metallic Rolling & Drawing Products', '5120102016': 'Metal Merchant Wholesale', '5120103010': 'Aluminum (NEC)', '5120103011': 'Primary Aluminum Production', '5120103012': 'Secondary Smelting & Alloying of Aluminum', '5120103013': 'Aluminum Rolling', '5120103014': 'Aluminum Refining', '5120103015': 'Aluminum Wholesale', '5120103016': 'Bauxite Mining', '5120105010': 'Specialty Mining & Metals (NEC)', '5120105011': 'Lead Ore Mining', '5120105012': 'Copper Ore Mining', '5120105013': 'Nickel Ore Mining', '5120105014': 'Zinc Ore Mining', '5120105015': 'Nonferrous Metal Mining', '5120105016': 'Nonferrous Metal Processing', '5120105017': 'Specialty Mining & Metals Wholesale', '5120106010': 'Gold (NEC)', '5120106011': 'Gold Mining', '5120106012': 'Gold Refining', '5120107010': 'Mining Support Services & Equipment (NEC)', '5120107011': 'Geophysical Surveying & Mapping Services', '5120107012': 'Mining Support Services', '5120107013': 'Mining Machinery & Equipment Manufacturing', '5120108010': 'Diversified Mining', '5120201010': 'Construction Materials (NEC)', '5120201011': 'Construction Material Processing', '5120201012': 'Cement & Concrete Manufacturing', '5120201013': 'Tile & Paving Material Manufacturing', '5120201014': 'Rock Mining', '5120201015': 'Construction Material Wholesale', '5130101010': 'Forest & Wood Products (NEC)', '5130101011': 'Timber Tract Operations', '5130101012': 'Forest Nurseries & Gathering of Forest Products', '5130101013': 'Logging & Sawmills', '5130101014': 'Forest Support & Services', '5130101015': 'Wood Products', '5130101016': 'Wood Product Wholesale', '5130102010': 'Paper Products (NEC)', '5130102011': 'Paper Mills & Products', '5130102012': 'Newsprint Mills', '5130102013': 'Pulp Mills', '5130102014': 'Paper Product Wholesale', '5130201010': 'Non-Paper Containers & Packaging (NEC)', '5130201011': 'Textile Containers & Packaging', '5130201012': 'Glass Containers & Packaging', '5130201013': 'Metal Containers & Packaging', '5130201014': 'Plastic Containers & Packaging', '5130201015': 'Wood Container & Packaging', '5130201016': 'Container & Packaging Material Wholesale', '5130202010': 'Paper Packaging (NEC)', '5130202011': 'Paper Packaging Wholesale', '5210101010': 'Aerospace & Defense (NEC)', '5210101011': 'Arms & Ammunitions Manufacturing', '5210101012': 'Commercial Aircraft Manufacturing', '5210101013': 'Military Aircraft Manufacturing', '5210101014': 'Aircraft Parts Manufacturing', '5210101015': 'Military Vehicles Manufacturing', '5210101016': 'Satellite Design & Manufacture', '5210101017': 'Spacecraft Manufacturing', '5210101018': 'Military Clothing & Accessories', '5210101019': 'Aircraft Equipment Wholesale', '5210101020': 'Aerospace & Defense Electronics', '5210101021': 'Drone Manufacturing', '5210201010': 'Industrial Machinery & Equipment (NEC)', '5210201011': 'Industrial Components', '5210201012': 'Industrial Machinery', '5210201013': 'Ball & Roller Bearings', '5210201014': 'Testing & Measuring Equipment', '5210201015': 'Pump & Pumping Equipment', '5210201016': 'Air & Gas Compressors', '5210201017': 'Welding & Soldering Equipment', '5210201018': 'Industrial Process Furnace & Ovens', '5210201019': 'Fluid Power Cylinder & Actuators', '5210201020': 'Automatic Vending Machines', '5210201021': 'Industrial Moulds', '5210201022': 'Machine Tools', '5210201023': 'Industrial Valve Manufacturing', '5210201024': 'Industrial Machinery & Equipment Wholesale', '5210201025': 'Commercial Equipment', '5210202010': 'Heavy Machinery & Vehicles (NEC)', '5210202011': 'Construction Machinery', '5210202012': 'Heavy Trucks', '5210202013': 'Heavy Buses & Coaches', '5210202014': 'Locomotive Engines & Rolling Stock', '5210202015': 'Agricultural Machinery', '5210202016': 'Commercial Landscaping Equipment', '5210202017': 'Heavy Machinery & Vehicles Wholesale', '5210203010': 'Electrical Components & Equipment (NEC)', '5210203011': 'Batteries & Uninterruptible Power Supplies', '5210203012': 'Wires & Cables', '5210203013': 'Electrical Components', '5210203014': 'Lighting Equipment', '5210203015': 'Heating, Ventilation & Air Conditioning Systems', '5210203016': 'Electrical Insulators', '5210203017': 'Switchgear', '5210203018': 'Portable Motors & Generators', '5210203019': 'Electrical Measuring & Testing Instruments', '5210203020': 'Electric Equipment Wholesale', '5210204010': 'Heavy Electrical Equipment (NEC)', '5210204011': 'Electrical Transmission & Grid Equipment', '5210204012': 'Elevator & Conveying Equipment', '5210204013': 'Turbine Manufacturing', '5210204014': 'Heavy Motors & Generators', '5210204015': 'Industrial Electrical Switchgear', '5210204016': 'Nuclear Generators & Components', '5210205010': 'Shipbuilding (NEC)', '5210205011': 'Ship Parts Manufacturers', '5210205012': 'Ship Repairing & Maintenance', '5220102010': 'Construction & Engineering (NEC)', '5220102011': 'Commercial Buildings', '5220102012': 'Highway & Bridge Construction', '5220102013': 'Railway Construction', '5220102014': 'Power & Communications Network Construction', '5220102015': 'Civil Engineers & Architects', '5220102016': 'Building Contractors', '5220102017': 'Industrial Plant Construction', '5220102018': 'Water & Sewage Construction', '5220102019': 'Land Division & Subdivision', '5220102020': 'Gas Infrastructure Construction', '5220102021': 'Electric Power Plant Construction', '5220102022': 'Nuclear Power Plant Construction', '5220102023': 'Telecommunication Construction', '5220201010': 'Diversified Industrial Goods Wholesale', '5220301010': 'Environmental Services & Equipment (NEC)', '5220301011': 'Purification & Treatment Equipment', '5220301012': 'Waste Management, Disposal & Recycling Services', '5220301013': 'Environmental Consultancy Services', '5220301014': 'Environmental R&D Services & Biotechnology', '5220301015': 'Carbon Capture & Storage', '5220302010': 'Commercial Printing Services (NEC)', '5220302011': 'Specialized Printing Services', '5220302012': 'Newspaper & Magazine Printing Services', '5220302013': 'Book Printing Services', '5220303010': 'Employment Services (NEC)', '5220303011': 'Human Resources Consulting Services', '5220303012': 'Outsourcing & Staffing Services', '5220303013': 'Executive Search Services', '5220303014': 'Online Job Portals', '5220304010': 'Business Support Services (NEC)', '5220304011': 'Corporate Accounting Services', '5220304012': 'Legal Services', '5220304013': 'Management Consulting Services', '5220304014': 'Security Services', '5220304016': 'Cleaning Services', '5220304017': 'Data Processing Services', '5220304018': 'Industrial Equipment Rental', '5220304019': 'Office Equipment & Supplies Rental', '5220304020': 'Pest Control Services', '5220304021': 'Maintenance & Repair Services', '5220304022': 'Industrial Design Services', '5220304023': 'Translation & Interpretation Services', '5220304024': 'Testing Laboratories', '5220304025': 'Call Center Services', '5220304026': 'Exhibition & Conference Services', '5220304027': 'Transaction & Payment Services', '5220306010': 'Business Support Supplies (NEC)', '5220306011': 'Office Furniture', '5220306012': 'Office Supplies', '5220306013': 'Health, Safety & Fire Protection Equipment', '5220306014': 'Office Supplies Wholesale', '5220307010': 'Professional Information Services (NEC)', '5220307011': 'Financial Information Providers', '5220307012': 'Compliance & Investor Communication', '5220307013': 'Rating Agencies', '5220307014': 'Trade & Business Publishing', '5220307015': 'Legal & Tax Information Providers', '5220307016': 'Education & Training Information Providers', '5220307017': 'Journals & Scholarly Research', '5220307018': 'News Agencies', '5220307019': 'Libraries & Archives', '5230101010': 'Industrial Conglomerates', '5240501010': 'Courier, Postal, Air Freight & Land-based Logistics (NEC)', '5240501011': 'Freight Logistics', '5240501012': 'Air Freight', '5240501013': 'Courier Services', '5240501014': 'Integrated Logistics Operators', '5240502010': 'Marine Freight & Logistics (NEC)', '5240502011': 'Marine Logistics', '5240502012': 'Inland Water Freight', '5240502013': 'Deep Sea Freight', '5240503010': 'Ground Freight & Logistics (NEC)', '5240503011': 'Railway Freight Operators', '5240503012': 'Freight Trucking', '5240503013': 'Warehousing', '5240503014': 'Truck Rental', '5240601010': 'Airlines (NEC)', '5240601011': 'Regional Airlines', '5240601012': 'Charter & Private Air Services', '5240601013': 'Specialized Aviation Services', '5240601014': 'Inter-Modal Passenger Transportation', '5240602010': 'Passenger Transportation, Ground & Sea (NEC)', '5240602011': 'Commuting Services', '5240602012': 'Charter Bus Services', '5240602013': 'Rail Services', '5240602014': 'Marine Passenger Transportation', '5240602015': 'Commuter Ferry Operators', '5240602016': 'Taxis & Limousines', '5240602017': 'Passenger Car Rental', '5240701010': 'Airport Operators & Services (NEC)', '5240701011': 'Airport Operators', '5240701012': 'Duty Free Shops', '5240701013': 'Airport Fueling Services', '5240701014': 'Airline Catering Services', '5240702010': 'Marine Port Services (NEC)', '5240702011': 'Port Warehousing Services', '5240702012': 'Port Operators', '5240702013': 'Marine Cargo Handling Services', '5240703010': 'Highways & Rail Tracks (NEC)', '5240703011': 'Highway Operators', '5240703012': 'Railway Operators', '5240703013': 'Parking Lot Operators', '5310101010': 'Auto & Truck Manufacturers (NEC)', '5310101011': 'Motorcycles & Scooters', '5310101012': 'Automobiles & Multi Utility Vehicles', '5310101013': 'Light Trucks', '5310101014': 'Electric (Alternative) Vehicles', '5310101015': 'Luxury Vehicles', '5310101016': 'Auto & Truck Wholesale', '5310102010': 'Auto, Truck & Motorcycle Parts (NEC)', '5310102011': 'Automotive Body Parts', '5310102012': 'Engine & Powertrain Systems', '5310102013': 'Automotive Batteries', '5310102014': 'Automotive Systems', '5310102015': 'Automotive Accessories', '5310102016': 'Motorcycle Parts & Accessories', '5310102017': 'Auto & Truck Parts Wholesale', '5310103010': 'Tires & Rubber Products (NEC)', '5310103011': 'Tire & Tube Manufacturers', '5310103012': 'Tire Retreading', '5310103013': 'Industrial Rubber Products', '5310103014': 'Rubber Plantations', '5310103015': 'Tires & Rubber Products Wholesale', '5320201010': 'Textiles & Leather Goods (NEC)', '5320201011': 'Synthetic Fabrics', '5320201012': 'Natural Fabrics', '5320201013': 'Organic & Ecologically Produced Fabric', '5320201014': 'Leather Goods', '5320201015': 'Fur Goods', '5320201016': 'Fabric Dyeing & Finishing', '5320201017': 'Yarn Goods', '5320201018': 'Cotton Farming', '5320201019': 'Textiles & Leather Goods Wholesale', '5320202010': 'Apparel & Accessories (NEC)', '5320202011': \"Men's Clothing\", '5320202012': \"Women's Clothing\", '5320202013': \"Children's & Infants' Clothing\", '5320202014': 'Sportswear & Outdoors Clothing', '5320202015': 'Jeans', '5320202016': 'Knitwear', '5320202017': 'Lingerie', '5320202018': 'Hosiery & Socks', '5320202019': 'Industrial Clothing & Uniforms', '5320202020': 'Fair Trade & Ethical Clothing', '5320202021': 'Luxury Clothing', '5320202022': 'Theatrical Costumes', '5320202023': 'Animal & Pet Clothing', '5320202024': 'Luxury Accessories', '5320202025': 'Accessories', '5320202026': 'Jewelry', '5320202027': 'Watches', '5320202028': 'Handbags & Luggage', '5320202029': 'Fashion Eyewear', '5320202030': 'Apparel Wholesale', '5320203010': 'Footwear (NEC)', '5320203011': \"Men's Footwear\", '5320203012': \"Women's Footwear\", '5320203013': \"Children's & Infants' Footwear\", '5320203014': 'Sports & Outdoor Footwear', '5320203015': 'Luxury Footwear', '5320203016': 'Functional Footwear', '5320203017': 'Footwear Wholesale', '5320301010': 'Homebuilding (NEC)', '5320301011': 'Residential Builders - Single Homes', '5320301012': 'Residential Builders - Multifamily Homes', '5320301013': 'Prefabricated Homes', '5320301014': 'Sustainable & Energy Efficient Home Builders', '5320301015': 'Retirement Home Builders', '5320301016': 'Residential Architectural & Interior Design Services', '5320302010': 'Construction Supplies & Fixtures (NEC)', '5320302011': 'Construction Supplies', '5320302012': 'Luxury Construction Supplies & Fixtures', '5320302013': 'Doors & Window Frames', '5320302014': 'Flooring & Interior Tile Manufacturers', '5320302015': 'Plumbing Fixtures & Fittings', '5320302016': 'Kitchen Cabinets', '5320302017': 'Bathroom Fixtures', '5320302018': 'Roofing Supplies', '5320302019': 'Lighting Fixtures', '5320302020': 'Construction Supplies & Fixtures Wholesale', '5320403010': 'Appliances, Tools & Housewares (NEC)', '5320403011': 'Household Appliances', '5320403012': 'Tools & Housewares', '5320403013': 'Kitchen Appliances', '5320403014': 'Cutlery & Flatware', '5320403015': 'Appliance & Houseware Wholesale', '5320403016': 'Luxury Appliances', '5320404010': 'Home Furnishings (NEC)', '5320404011': 'Carpets & Curtains', '5320404012': 'Wallpaper', '5320404014': 'Luxury Furnishing', '5320404015': 'Antiques', '5320404016': 'Home Furnishings Wholesale', '5320404017': 'Furniture', '5320404018': 'Art & Craftwork', '5320501010': \"Toys & Children's Products (NEC)\", '5320501011': 'Dolls & Stuffed Toys', '5320501012': \"Games, Toys & Children's Vehicles\", '5320501013': \"Children's Safety Products\", '5320501014': \"Children's Furniture\", '5320501015': \"Children's Products & Accessories\", '5320501016': \"Toys & Children's Products Wholesale\", '5320502010': 'Recreational Products (NEC)', '5320502011': 'Sailing Yachts & Motorboats', '5320502012': 'Bicycle Manufacturing', '5320502013': 'Sporting & Outdoor Goods', '5320502014': 'Musical Instruments', '5320502015': 'Luxury Recreational Products', '5320502016': 'Leisure Products Wholesale', '5320502017': 'Electric Scooters & Bicycles', '5330101010': 'Hotels, Motels & Cruise Lines (NEC)', '5330101011': 'Hotels & Motels', '5330101012': 'Cruise Lines', '5330101013': 'Luxury Hotels', '5330101014': 'Resort Operators', '5330101015': 'Bed & Breakfast', '5330101016': 'Self-Catering Accommodation', '5330101017': 'Campsite Operators', '5330102010': 'Restaurants & Bars (NEC)', '5330102011': 'Pubs, Bars & Night Clubs', '5330102012': 'Commercial Food Services', '5330102013': 'Quick Service Restaurants', '5330102014': 'Mobile Caterers', '5330102015': 'Banquet Halls & Catering', '5330102016': 'Cafés', '5330103010': 'Casinos & Gaming (NEC)', '5330103011': 'Gambling & Gaming Machine Manufacturers', '5330103012': 'Gaming Machine Operators', '5330103013': 'Casinos', '5330103014': 'Horse & Dog Race Tracks', '5330103015': 'Lottery Operators', '5330104010': 'Leisure & Recreation (NEC)', '5330104011': 'Movie Theaters & Movie Products', '5330104012': 'Theatres & Performing Arts', '5330104013': 'Museums & Historic Places', '5330104014': 'Travel Agents', '5330104015': 'Amusement Parks and Zoos', '5330104016': 'Gyms, Fitness and Spa Centers', '5330104017': 'Adventure Sports Facilities & Ski Resorts', '5330104018': 'Public Sport Facilities', '5330104019': 'Professional Sports Venues', '5330104020': 'Golf Courses', '5330104021': 'Hunting & Fishing', '5330104022': 'Marinas', '5330104023': 'Guided Tour Operators', '5330201010': 'Advertising & Marketing (NEC)', '5330201011': 'Advertising Agency', '5330201012': 'Media Buying Agency', '5330201013': 'Signs & Advertising Specialty Producers', '5330201014': 'Outdoor Advertising', '5330201015': 'Direct Marketing', '5330201016': 'Sales Promotions & Events Management', '5330201017': 'Guerrilla & Sensory Marketing', '5330201018': 'Public Relations', '5330201019': 'Digital Media Agencies', '5330201020': 'Branding & Naming', '5330201021': 'Market Research', '5330201022': 'Marketing Consulting Services', '5330202010': 'Broadcasting (NEC)', '5330202011': 'Television Broadcasting', '5330202012': 'Radio Broadcasting', '5330202013': 'Cable Service Providers', '5330203010': 'Entertainment Production (NEC)', '5330203011': 'Movie, TV Production & Distribution', '5330203012': 'Music, Music Video Production & Distribution', '5330203013': 'Plays & Concert Production', '5330203014': 'Entertainment Production Equipment & Services', '5330203015': 'Copyright Management', '5330203016': 'Adult Entertainment Production & Broadcasting', '5330204010': 'Consumer Publishing (NEC)', '5330204011': 'Newspaper Publishing', '5330204012': 'Magazine Publishing', '5330204013': 'Book Publishing', '5330204014': 'Directory Publishing', '5330204015': 'Digital Publishing', '5330204016': 'Adult Publishing', '5330204017': 'Books, Newspapers & Magazines Wholesale', '5340201010': 'Department Stores (NEC)', '5340201011': 'General Department Stores', '5340201012': 'Luxury Department Stores', '5340201013': 'Internet & Mail Order Department Stores', '5340202010': 'Discount Stores (NEC)', '5340202011': 'Internet & Mail Order Discount Stores', '5340202012': 'Discount Stores with Grocery', '5340202013': 'Discount Stores without Grocery', '5340202014': 'Discount Stores with Gasoline', '5340202015': 'Discount Stores without Gasoline', '5340301010': 'Auto Vehicles, Parts & Service Retailers (NEC)', '5340301011': 'New Car Dealers', '5340301012': 'Used Car Dealers', '5340301013': 'Motorcycle Dealers', '5340301014': 'Automotive Parts & Accessories Retailers', '5340301015': 'Tire Dealers', '5340301016': 'Luxury Car Dealers', '5340302010': 'Home Improvement Products & Services Retailers (NEC)', '5340302011': 'Paint & Wallpaper Retailers', '5340302012': 'Builder Merchants', '5340302013': 'Nursery & Garden Centers', '5340302014': 'Kitchen & Bathroom Retailers', '5340302015': 'Home Décor Retailers', '5340302016': 'Interior Design Services', '5340302017': 'Luxury Home Improvement Product Retailers', '5340303010': 'Home Furnishings Retailers (NEC)', '5340303011': 'Furniture Retailers', '5340303012': 'Floor Covering Retailers', '5340303013': 'Soft Furnishing Retailers', '5340303014': 'Luxury Furnishing Retailers', '5340303015': 'Antique Dealers', '5340303016': 'Art & Craftwork Retailers', '5340304010': 'Apparel & Accessories Retailers (NEC)', '5340304011': 'Footwear Retailers', '5340304012': 'Jewelry & Watch Retailers', '5340304013': \"Men's Apparel Retailers\", '5340304014': \"Women's Apparel Retailers\", '5340304015': \"Children's & Infants' Clothing Retailers\", '5340304016': 'Teen Fashion Retailers', '5340304017': 'Handbags & Luggage Retailers', '5340304018': 'Luxury Apparel Retailers', '5340304019': 'Sports & Outdoors Retailers', '5340305010': 'Computer & Electronics Retailers (NEC)', '5340305011': 'Computer Hardware & Software Retailers', '5340305012': 'Consumer Electronics Retailers', '5340305013': 'Mobile Phone Retailers', '5340309010': 'Miscellaneous Specialty Retailers (NEC)', '5340309011': 'Luxury Beauty Supply Retailers', '5340309012': 'Personal Care Products Retailers', '5340309013': 'Optical Goods Stores', '5340309014': 'Health Food Stores', '5340309015': 'Musical Instrument Retailers', '5340309016': 'Hobby & Craft Product Retailers', '5340309017': 'Toys & Games Retailers', '5340309018': 'Book & Magazine Retailers', '5340309019': 'Florists', '5340309020': 'Office Supplies & Stationery Stores', '5340309021': 'Gift, Novelty & Souvenir Stores', '5340309022': 'Used Merchandise Stores', '5340309023': 'Sporting Goods Stores', '5340309024': 'Pet & Pet Supplies Retailers', '5340309025': 'Adult Products Retailers', '5410101010': 'Brewers (NEC)', '5410101011': 'Craft & Micro Brewers', '5410102010': 'Distillers & Wineries (NEC)', '5410102011': 'Wineries', '5410102012': 'Distilleries', '5410102013': 'Malt Producers', '5410103010': 'Non-Alcoholic Beverages (NEC)', '5410103011': 'Carbonated Soft Drinks', '5410103012': 'Fruit Drinks', '5410103013': 'Energy Drinks', '5410103014': 'Bottled Water & Ice', '5410201010': 'Fishing & Farming (NEC)', '5410201011': 'Grain (Crop) Production', '5410201012': 'Poultry Farming', '5410201013': 'Sheep & Specialty Livestock Farming', '5410201014': 'Vegetable, Fruit & Nut Farming', '5410201015': 'Coffee, Tea & Cocoa Farming', '5410201016': 'Sugarcane Farming', '5410201017': 'Commercial Nurseries', '5410201018': 'Commercial Fishing', '5410201019': 'Aquaculture', '5410201020': 'Fur Farming', '5410201021': 'Animal Breeding', '5410201022': 'Agriculture Support Services', '5410201023': 'Organic Farming', '5410201024': 'Animal Feed', '5410201025': 'Agricultural Consultancy Services', '5410201026': 'Fishing & Farming Wholesale', '5410201027': 'Agricultural Biotechnology', '5410201028': 'Hog & Pig Farming', '5410201029': 'Cattle Farming', '5410201030': 'Fair Trade & Ethical Fishing & Farming', '5410202010': 'Food Processing (NEC)', '5410202011': 'Flour Milling', '5410202012': 'Bread & Bakery Product Manufacturing', '5410202013': 'Breakfast Cereal Manufacturing', '5410202014': 'Cookie, Cracker & Pasta Manufacturing', '5410202015': 'Fruit & Vegetable Processing', '5410202016': 'Meat Processing', '5410202017': 'Halal Meat Processing', '5410202018': 'Seafood Product Preparation & Packaging', '5410202019': 'Dairy Products', '5410202020': 'Starch, Vegetable Fat & Oil Manufacturing', '5410202021': 'Coffee & Tea', '5410202022': 'Sugar & Artificial Sweeteners', '5410202023': 'Chocolate & Confectionery', '5410202024': 'Snack Food & Non-Chocolate Confectionary', '5410202025': 'Special Foods & Wellbeing Products', '5410202026': 'Food Ingredients', '5410202027': 'Baby Food', '5410202028': 'Ready-Made Meals', '5410202030': 'Frozen Food Manufacturing', '5410202031': 'Pet Food Manufacturing', '5410202032': 'Vegan & Vegetarian Food Manufacturing', '5410203010': 'Tobacco (NEC)', '5410203011': 'Tobacco Farming', '5410203012': 'Tobacco Stemming & Redrying', '5410203013': 'Cigars & Cigarette Manufacturing', '5410203014': 'Chewing Tobacco Products', '5420101010': 'Household Products (NEC)', '5420101011': 'Laundry Supplies', '5420101012': 'Cleaning Supplies', '5420101013': 'Air Fresheners', '5420101015': 'Pet & Plant Protection Agents', '5420101016': 'Auto Cleaning Products', '5420102010': 'Personal Products (NEC)', '5420102011': 'Cosmetics & Perfumes', '5420102012': 'Luxury Cosmetics', '5420102013': 'Sanitary Products', '5420102014': 'Hair Accessories', '5420102015': 'Birth Control Products', '5420102016': 'Halal Personal Products', '5420103010': 'Personal Services (NEC)', '5420103011': 'Consumer Goods Rental', '5420103012': 'Accounting & Tax Preparation', '5420103013': 'Personal Legal Services', '5420103015': 'Child Care & Family Services', '5420103016': 'Consumer Repair Services', '5420103017': 'Personal Care Services', '5420103018': 'Funeral Services', '5430101010': 'Drug Retailers (NEC)', '5430101011': 'Retail - Drugs with Grocery', '5430101012': 'Retail - Drugs without Grocery', '5430101013': 'Cannabis Product Retailers', '5430101014': 'Non-Cannabis Recreational Drug Retailers', '5430102010': 'Food Retail & Distribution (NEC)', '5430102011': 'Food Wholesale', '5430102012': 'Supermarkets & Convenience Stores', '5430102013': 'Beer, Wine & Liquor Stores', '5430102014': 'Vending Machine Providers', '5430102015': 'Tobacco Stores', '5430102016': 'Food Markets', '5440101010': 'Consumer Goods Conglomerates', '5510101010': 'Banks (NEC)', '5510101011': 'Corporate Banks', '5510101012': 'Retail & Mortgage Banks', '5510101013': 'Money Center Banks', '5510101014': 'Private Banks', '5510101015': 'Islamic Banks', '5510103010': 'Consumer Lending (NEC)', '5510103011': 'Personal & Car Loans', '5510103012': 'Consumer Credit Cards Services', '5510103013': 'Consumer Leasing', '5510103014': 'Credit Unions', '5510103015': 'Microfinancing', '5510105010': 'Corporate Financial Services (NEC)', '5510105011': 'Commercial Loans', '5510105012': 'Import-Export Banks', '5510105013': 'International Trade Financing', '5510105014': 'Factoring', '5510105015': 'Commercial Leasing', '5510201010': 'Investment Banking & Brokerage Services (NEC)', '5510201011': 'Investment Banking', '5510201012': 'Brokerage Services', '5510201013': 'Inter-Dealer Broker', '5510201014': 'Islamic Investment Banking & Brokerage Services', '5510201015': 'Merchant Banks', '5510202010': 'Investment Management & Fund Operators (NEC)', '5510202011': 'Investment Management', '5510202012': 'Hedge Funds', '5510202013': 'Collective Investment Fund Operators', '5510202014': 'Wealth Management', '5510202015': 'Venture Capital', '5510202016': 'Private Equity', '5510202017': 'Islamic Investment Management & Fund Operators', '5510203010': 'Diversified Investment Services', '5510205010': 'Financial & Commodity Market Operators & Service Providers (NEC)', '5510205011': 'Securities & Commodity Exchanges', '5510205012': 'Clearing, Settlement & Custodial Service', '5530101010': 'Multiline Insurance & Brokers (NEC)', '5530101011': 'Islamic Insurance', '5530101012': 'Insurance Brokers', '5530102010': 'Property & Casualty Insurance (NEC)', '5530102011': 'Property Insurance', '5530102012': 'Insurance - Automobile', '5530102013': 'Travel Insurance', '5530102014': 'Casualty Insurance', '5530103010': 'Life & Health Insurance (NEC)', '5530103011': 'Life Insurance', '5530103012': 'Health Insurance', '5530105010': 'Reinsurance (NEC)', '5530105011': 'Life & Health Reinsurance', '5530105012': 'Property & Casualty Reinsurance', '5550101010': 'UK Investment Trusts', '5550102010': 'Mutual Funds (NEC)', '5550102011': 'Islamic Mutual Funds', '5550103010': 'Closed End Funds', '5550104010': 'Exchange-Traded Funds (NEC)', '5550104011': 'Islamic ETFs', '5550104012': 'Islamic Commodity ETFs', '5550105010': 'Pension Funds', '5550106010': 'Insurance Funds', '5560101010': 'Investment Holding Companies (NEC)', '5560101011': 'Shell Companies', '5610101010': 'Advanced Medical Equipment & Technology (NEC)', '5610101011': 'Medical Diagnostic & Testing Equipment', '5610101012': 'Medical Monitoring Systems', '5610101013': 'Laser Equipment', '5610101014': 'Medical Imaging Systems', '5610101015': 'Medical Software & Technology Services', '5610101016': 'Advanced Medical Equipment Wholesale', '5610102010': 'Medical Equipment, Supplies & Distribution (NEC)', '5610102011': 'Medical Supplies', '5610102012': 'Medical Prosthetics', '5610102013': 'Medical Equipment', '5610102014': 'Medical Devices & Implants', '5610102015': 'Medical Equipment Wholesale', '5610102016': 'Glasses, Spectacles & Contact Lenses', '5610102017': 'Laboratory Diagnostic & Testing Substances', '5610102018': 'Veterinary Medical Equipment & Supplies', '5610102019': 'Drug Delivery Systems', '5610201010': 'Healthcare Facilities & Services (NEC)', '5610201011': 'Hospitals, Clinics & Primary Care Services', '5610201012': 'Residential & Long-Term Care', '5610201013': 'Ambulance & Emergency Services', '5610201014': \"Doctor's Office\", '5610201015': 'Medical & Diagnostic Laboratories', '5610201016': 'Veterinary Services', '5610201017': 'Telemedicine Services', '5610201018': 'Home Healthcare Services', '5610201019': 'Alternative Medicine Facilities', '5610201020': 'Medical Farming', '5610202010': 'Managed Healthcare (NEC)', '5610202011': 'HMO Medical Centers', '5620104010': 'Pharmaceuticals (NEC)', '5620104011': 'Proprietary & Advanced Pharmaceuticals', '5620104012': 'Biopharmaceuticals', '5620104013': 'In-Vivo Diagnostic & Testing Substances', '5620104014': 'Veterinary Drugs', '5620104015': 'Generic Pharmaceuticals', '5620104016': 'Alternative Medicine', '5620104017': 'Recreational Pharmaceuticals', '5620104018': 'Pharmaceuticals Wholesale', '5620201010': 'Biotechnology & Medical Research (NEC)', '5620201011': 'Bio Therapeutic Drugs', '5620201012': 'Bio Diagnostics & Testing', '5620201013': 'Bio Medical Devices', '5710101010': 'Semiconductors (NEC)', '5710101011': 'Integrated Circuits', '5710101012': 'Memory Chips (RAM)', '5710101013': 'Processors', '5710101014': 'Semiconductor Wholesale', '5710101015': 'NFC & RFID Systems', '5710102010': 'Semiconductor Equipment & Testing (NEC)', '5710102011': 'Semiconductor Machinery Manufacturing', '5710102012': 'Semiconductor Testing Equipment & Service', '5710102013': 'Semiconductor Equipment Wholesale', '5710201010': 'Communications & Networking (NEC)', '5710201011': 'Network Equipment', '5710201012': 'Security & Surveillance', '5710201013': 'Conferencing Tools & Systems', '5710201014': 'VOIP Equipment & Systems', '5710201015': 'Broadcasting Equipment', '5710201016': 'Satellite Communications Network', '5710201017': 'Fiber Optic Cable Manufacturing', '5710401010': 'Electronic Equipment & Parts (NEC)', '5710401011': 'Biometric Products', '5710401012': 'Advanced Electronic Equipment', '5710401013': 'Display Screens', '5710401014': 'Electronic Components', '5710401015': '3D Printers', '5710501010': 'Office Equipment (NEC)', '5710501011': 'Commercial Document Management', '5710501012': 'Office Technology Equipment', '5710501013': 'Point of Sale Systems', '5710501014': 'Scientific & Precision Equipment', '5710501015': 'Office Equipment Wholesale', '5710601010': 'Computer Hardware (NEC)', '5710601011': 'Scientific & Super Computers', '5710601012': 'Laptop & Desktop Computers', '5710601013': 'Tablet & Netbook Computers', '5710601014': 'Input Devices', '5710601015': 'Output Devices', '5710601016': 'Servers & Systems', '5710601017': 'Storage Devices', '5710601018': 'Computer Hardware Component Assembly', '5710601019': 'Consumer Document Management', '5710602010': 'Phones & Handheld Devices (NEC)', '5710602011': 'Phones & Smart Phones', '5710602012': 'Portable Satellite Navigation', '5710602013': 'Personal Music Players', '5710602014': 'Electronic Books', '5710602015': 'Mobile Device Component Assembly', '5710603010': 'Household Electronics (NEC)', '5710603011': 'Photographic Equipment', '5710603012': 'TV & Video', '5710603013': 'Home Audio', '5710603014': 'Consumer Electronic Wholesale', '5710701010': 'Integrated Hardware & Software', '5720101010': 'IT Services & Consulting (NEC)', '5720101011': 'Computer Programming', '5720101012': 'Computer Training', '5720101013': 'Technology Consulting & Outsourcing Services', '5720101014': 'IT Testing Services', '5720101015': 'Cloud Computing Services', '5720101016': 'Machine Learning & Artificial Intelligence (AI) Services', '5720102010': 'Software (NEC)', '5720102011': 'System Software', '5720102012': 'Application Software', '5720102013': 'Enterprise Software', '5720102014': 'Mobile Application Software', '5720102015': 'Mobile System Software', '5720102016': 'Programming Software & Testing Tools', '5720102017': 'Server & Database Software', '5720102018': 'Security Software', '5720103010': 'Online Services (NEC)', '5720103011': 'Search Engines', '5720103012': 'Social Media & Networking', '5720103013': 'E-commerce & Auction Services', '5720103014': 'Content & Site Management Services', '5720103015': 'Internet Security & Transactions Services', '5720103016': 'Internet Gaming', '5730101010': 'Financial Technology (Fintech) (NEC)', '5730101020': 'Business to Business', '5730101030': 'Business to Consumer', '5730101040': 'Consumer to Consumer', '5730102010': 'Crowd Collaboration (NEC)', '5730102020': 'Crowdfinancing & Crowdfunding', '5730102030': 'Crowdsourcing Platforms', '5730103010': 'Blockchain & Cryptocurrency (NEC)', '5730103020': 'Cryptocurrency Trading Platforms (Exchanges)', '5730103030': 'Blockchain Technology (Software)', '5730103040': 'Cryptocurrency Hardware', '5730103050': 'Cryptocurrency Mining', '5730109010': 'Miscellaneous Fintech Infrastructure', '5740101010': 'Integrated Telecommunications Services (NEC)', '5740101020': 'Wired Telecommunications Carriers', '5740101030': 'Telecommunications Resellers', '5740101040': 'Internet Service Providers', '5740101050': 'Telecommunications Network Infrastructure', '5740101060': 'VOIP Services', '5740102010': 'Wireless Telecommunications Services (NEC)', '5740102020': 'Alternative Communications Services', '5740102030': 'Satellite Service Operators', '5740102040': 'Wi-Fi & Wi-Max Providers', '5740102050': 'Wireless Telecoms Service Providers', '5910101010': 'Electric Utilities (NEC)', '5910101012': 'Fossil Fuel Electric Utilities', '5910101013': 'Nuclear Utilities', '5910101014': 'Power Charging Stations', '5910101020': 'Alternative Electric Utilities', '5910101021': 'Hydroelectric & Tidal Utilities', '5910101022': 'Solar Electric Utilities', '5910101023': 'Wind Electric Utilities', '5910101024': 'Biomass & Waste to Energy Electric Utilities', '5910101025': 'Geothermal Electric Utilities', '5910102010': 'Independent Power Producers (NEC)', '5910102011': 'Fossil Fuel IPPs', '5910102012': 'Renewable IPPs', '5910102013': 'Nuclear IPPs', '5910201010': 'Natural Gas Utilities (NEC)', '5910201011': 'Natural Gas Distribution', '5910301010': 'Water & Related Utilities (NEC)', '5910301011': 'Water Supply & Irrigation Systems', '5910301012': 'Sewage Treatment Facilities', '5910301013': 'Heating & Air-Conditioning Supply', '5910401010': 'Multiline Utilities', '6010101010': 'Real Estate Rental, Development & Operations (NEC)', '6010101020': 'Office Real Estate Rental & Development', '6010101030': 'Retail Real Estate Rental & Development', '6010101040': 'Industrial Real Estate Rental & Development', '6010101050': 'Residential Real Estate Rental & Development', '6010102010': 'Real Estate Services (NEC)', '6010102020': 'Office Real Estate Services', '6010102030': 'Retail Real Estate Services', '6010102040': 'Industrial Real Estate Services', '6010102050': 'Residential Real Estate Services', '6010201010': 'Diversified REITs', '6010202010': 'Commercial REITs (NEC)', '6010202020': 'Office REITs', '6010202030': 'Retail REITs', '6010202040': 'Industrial REITs', '6010203010': 'Residential REITs', '6010204010': 'Specialized REITs (NEC)', '6010204020': 'Healthcare REITs', '6010204030': 'Hospitality REITs', '6010204040': 'Self-Storage REITs', '6010204050': 'Timber REITs', '6010204060': 'Mortgage REITs', '6010204070': 'Islamic REITs', '6110101010': 'Religious Organizations', '6110102010': 'Civic & Social Organizations', '6110103010': 'Environmental Organizations', '6110104010': 'Charity Organizations', '6110105010': 'Professional Organizations (NEC)', '6110105020': 'Business, Professional & Labor Organizations', '6110105030': 'Political Organizations', '6110105040': 'Non-Governmental Organizations (NGOs)', '6210101010': 'Government & Government Finance (NEC)', '6210101020': 'Public Finance Activities', '6210102010': 'Legal & Safety Public Services (NEC)', '6210102020': 'Police, Justice & Legal Counsel', '6210102030': 'Fire', '6210103010': 'Government Administration Activities', '6210104010': 'National Security & International Affairs', '6310101010': 'Miscellaneous Educational Service Providers', '6310201010': 'School, College & University (NEC)', '6310201020': 'Nursery & Pre-Schools', '6310201030': 'Elementary & Primary Schools', '6310201040': 'Colleges & Secondary Schools', '6310201050': 'Universities', '6310201060': 'School Districts', '6310301010': 'Professional & Business Education'}}), continuous_hierarchies={'market': ['Market'], 'style': ['Dividend', 'Growth', 'Leverage', 'Momentum', 'Size', 'Value', 'Volatility']}, continuous_hierarchies_labels={'market': {'Market': 'Market'}, 'style': {'Dividend': 'Dividend', 'Growth': 'Growth', 'Leverage': 'Leverage', 'Momentum': 'Momentum', 'Size': 'Size', 'Value': 'Value', 'Volatility': 'Volatility'}}), modelconstruction_settings_menu=ModelConstructionSettingsMenu(weights=['SqrtCap', 'InvIdioVar'])))"
            ]
          },
          "execution_count": 15,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "risk_dataset.describe()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "id": "99a9235c",
      "metadata": {},
      "outputs": [],
      "source": [
        "exposures_api = bln.equity.exposures.load(\n",
        "    ExposureSettings(\n",
        "        exposures=[\n",
        "            ContinuousExposureGroupSettings(hierarchy=\"market\"),\n",
        "            ContinuousExposureGroupSettings(hierarchy=\"style\"),\n",
        "        ]\n",
        "    ),\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "id": "f1f4990e",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div><style>\n",
              ".dataframe > thead > tr,\n",
              ".dataframe > tbody > tr {\n",
              "  text-align: right;\n",
              "  white-space: pre-wrap;\n",
              "}\n",
              "</style>\n",
              "<small>shape: (5, 10)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>date</th><th>bayesid</th><th>market.Market</th><th>style.Dividend</th><th>style.Growth</th><th>style.Leverage</th><th>style.Momentum</th><th>style.Size</th><th>style.Value</th><th>style.Volatility</th></tr><tr><td>date</td><td>str</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td></tr></thead><tbody><tr><td>2025-06-26</td><td>&quot;ICFFEBBB38&quot;</td><td>1.0</td><td>0.416016</td><td>0.282227</td><td>0.165039</td><td>0.775391</td><td>0.6328125</td><td>0.050293</td><td>-0.904297</td></tr><tr><td>2025-06-27</td><td>&quot;ICFFEBBB38&quot;</td><td>1.0</td><td>0.415527</td><td>0.282715</td><td>0.165039</td><td>0.469727</td><td>0.633789</td><td>0.050354</td><td>-0.921875</td></tr><tr><td>2025-06-28</td><td>&quot;ICFFEBBB38&quot;</td><td>1.0</td><td>0.415527</td><td>0.282227</td><td>0.165161</td><td>0.469238</td><td>0.633789</td><td>0.04892</td><td>-0.921387</td></tr><tr><td>2025-06-29</td><td>&quot;ICFFEBBB38&quot;</td><td>1.0</td><td>0.415527</td><td>0.281982</td><td>0.165283</td><td>0.469238</td><td>0.633789</td><td>0.048889</td><td>-0.921387</td></tr><tr><td>2025-06-30</td><td>&quot;ICFFEBBB38&quot;</td><td>1.0</td><td>0.415527</td><td>0.281982</td><td>0.164185</td><td>0.386719</td><td>0.635742</td><td>0.050232</td><td>-0.907227</td></tr></tbody></table></div>"
            ],
            "text/plain": [
              "shape: (5, 10)\n",
              "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n",
              "│ date      ┆ bayesid   ┆ market.Ma ┆ style.Div ┆ … ┆ style.Mom ┆ style.Siz ┆ style.Val ┆ style.Vo │\n",
              "│ ---       ┆ ---       ┆ rket      ┆ idend     ┆   ┆ entum     ┆ e         ┆ ue        ┆ latility │\n",
              "│ date      ┆ str       ┆ ---       ┆ ---       ┆   ┆ ---       ┆ ---       ┆ ---       ┆ ---      │\n",
              "│           ┆           ┆ f32       ┆ f32       ┆   ┆ f32       ┆ f32       ┆ f32       ┆ f32      │\n",
              "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n",
              "│ 2025-06-2 ┆ ICFFEBBB3 ┆ 1.0       ┆ 0.416016  ┆ … ┆ 0.775391  ┆ 0.6328125 ┆ 0.050293  ┆ -0.90429 │\n",
              "│ 6         ┆ 8         ┆           ┆           ┆   ┆           ┆           ┆           ┆ 7        │\n",
              "│ 2025-06-2 ┆ ICFFEBBB3 ┆ 1.0       ┆ 0.415527  ┆ … ┆ 0.469727  ┆ 0.633789  ┆ 0.050354  ┆ -0.92187 │\n",
              "│ 7         ┆ 8         ┆           ┆           ┆   ┆           ┆           ┆           ┆ 5        │\n",
              "│ 2025-06-2 ┆ ICFFEBBB3 ┆ 1.0       ┆ 0.415527  ┆ … ┆ 0.469238  ┆ 0.633789  ┆ 0.04892   ┆ -0.92138 │\n",
              "│ 8         ┆ 8         ┆           ┆           ┆   ┆           ┆           ┆           ┆ 7        │\n",
              "│ 2025-06-2 ┆ ICFFEBBB3 ┆ 1.0       ┆ 0.415527  ┆ … ┆ 0.469238  ┆ 0.633789  ┆ 0.048889  ┆ -0.92138 │\n",
              "│ 9         ┆ 8         ┆           ┆           ┆   ┆           ┆           ┆           ┆ 7        │\n",
              "│ 2025-06-3 ┆ ICFFEBBB3 ┆ 1.0       ┆ 0.415527  ┆ … ┆ 0.386719  ┆ 0.635742  ┆ 0.050232  ┆ -0.90722 │\n",
              "│ 0         ┆ 8         ┆           ┆           ┆   ┆           ┆           ┆           ┆ 7        │\n",
              "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘"
            ]
          },
          "execution_count": 17,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# note that the industry and region hierarchy names tie out with the factor groups we specified above\n",
        "\n",
        "df = exposures_api.get(UniverseSettings(dataset=risk_dataset_name), standardize_universe=None)\n",
        "\n",
        "df.filter(pl.col(\"bayesid\") == \"ICFFEBBB38\").tail()"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": ".venv",
      "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.15"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}