mirror of
https://github.com/norandom/trading_analysis.git
synced 2024-12-22 07:53:43 +00:00
3028 lines
351 KiB
Plaintext
3028 lines
351 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "68e3c2ce-ed33-4c9d-851c-86184d9d3414",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"# Load NASDAQ API key (Data Link API) - Silver\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 22,
|
||
|
"id": "7629bec6-f9e7-4180-aa56-0c2e857d34cb",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"True"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 22,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"from dotenv import load_dotenv\n",
|
||
|
"import os\n",
|
||
|
"\n",
|
||
|
"# Load the environment variables from .env file\n",
|
||
|
"load_dotenv(\"api_keys\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 23,
|
||
|
"id": "aa5b3443-449e-4f02-b231-1ffdef4d11ac",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"loaded key\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"nasdaq_api_key = os.getenv('NASDAQ_API_KEY')\n",
|
||
|
"if len(nasdaq_api_key) > 0:\n",
|
||
|
" print(\"loaded key\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "5fdcd717-d4a3-4e7e-b8b5-a4369bd1bc83",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Retrieve 2 year of COT data (% shifts producers long / short)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 40,
|
||
|
"id": "fc5d6a91-c107-443e-8b6e-84e10d945ca2",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
" Open Interest Producer/Merchant/Processor/User Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 139144.0 3472.0 \n",
|
||
|
"2023-12-05 139753.0 4714.0 \n",
|
||
|
"2023-12-12 134281.0 4311.0 \n",
|
||
|
"2023-12-19 127549.0 3701.0 \n",
|
||
|
"2023-12-26 131408.0 4063.0 \n",
|
||
|
"\n",
|
||
|
" Producer/Merchant/Processor/User Shorts Swap Dealer Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 40323.0 33045.0 \n",
|
||
|
"2023-12-05 41340.0 33328.0 \n",
|
||
|
"2023-12-12 38849.0 30707.0 \n",
|
||
|
"2023-12-19 39714.0 30908.0 \n",
|
||
|
"2023-12-26 41011.0 29911.0 \n",
|
||
|
"\n",
|
||
|
" Swap Dealer Shorts Swap Dealer Spreads Money Manager Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 44049.0 3770.0 45604.0 \n",
|
||
|
"2023-12-05 48716.0 2932.0 43852.0 \n",
|
||
|
"2023-12-12 43665.0 2832.0 33472.0 \n",
|
||
|
"2023-12-19 43686.0 1911.0 34931.0 \n",
|
||
|
"2023-12-26 45585.0 2415.0 36546.0 \n",
|
||
|
"\n",
|
||
|
" Money Manager Shorts Money Manager Spreads \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 21842.0 6885.0 \n",
|
||
|
"2023-12-05 22322.0 7544.0 \n",
|
||
|
"2023-12-12 24805.0 8439.0 \n",
|
||
|
"2023-12-19 20060.0 6662.0 \n",
|
||
|
"2023-12-26 19749.0 6847.0 \n",
|
||
|
"\n",
|
||
|
" Other Reportable Longs Other Reportable Shorts \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 17276.0 6758.0 \n",
|
||
|
"2023-12-05 19389.0 4616.0 \n",
|
||
|
"2023-12-12 22212.0 2421.0 \n",
|
||
|
"2023-12-19 17700.0 2820.0 \n",
|
||
|
"2023-12-26 18013.0 2947.0 \n",
|
||
|
"\n",
|
||
|
" Other Reportable Spreads Total Reportable Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 2445.0 112497.0 \n",
|
||
|
"2023-12-05 1607.0 113366.0 \n",
|
||
|
"2023-12-12 1706.0 103679.0 \n",
|
||
|
"2023-12-19 1577.0 97390.0 \n",
|
||
|
"2023-12-26 2137.0 99932.0 \n",
|
||
|
"\n",
|
||
|
" Total Reportable Shorts Non Reportable Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 126072.0 26647.0 \n",
|
||
|
"2023-12-05 129077.0 26387.0 \n",
|
||
|
"2023-12-12 122717.0 30602.0 \n",
|
||
|
"2023-12-19 116430.0 30159.0 \n",
|
||
|
"2023-12-26 120691.0 31476.0 \n",
|
||
|
"\n",
|
||
|
" Non Reportable Shorts \n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 13072.0 \n",
|
||
|
"2023-12-05 10676.0 \n",
|
||
|
"2023-12-12 11564.0 \n",
|
||
|
"2023-12-19 11119.0 \n",
|
||
|
"2023-12-26 10717.0 \n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import requests\n",
|
||
|
"import pandas as pd\n",
|
||
|
"from datetime import datetime\n",
|
||
|
"import urllib.parse\n",
|
||
|
"\n",
|
||
|
"# API endpoint components\n",
|
||
|
"base_url = \"https://data.nasdaq.com/api/v3/datasets/\"\n",
|
||
|
"dataset = \"CFTC/084691_F_ALL\"\n",
|
||
|
"data_format = \".json\"\n",
|
||
|
"\n",
|
||
|
"# Parameters\n",
|
||
|
"params = {\n",
|
||
|
" \"start_date\": \"2022-01-01\",\n",
|
||
|
" \"end_date\": \"2024-01-01\",\n",
|
||
|
" \"api_key\": nasdaq_api_key # Make sure this variable is defined\n",
|
||
|
"}\n",
|
||
|
"\n",
|
||
|
"# Construct the full URL with parameters\n",
|
||
|
"param_string = urllib.parse.urlencode(params)\n",
|
||
|
"url = f\"{base_url}{dataset}{data_format}?{param_string}\"\n",
|
||
|
"\n",
|
||
|
"# Make the API request\n",
|
||
|
"response = requests.get(url)\n",
|
||
|
"\n",
|
||
|
"# Check if the request was successful\n",
|
||
|
"if response.status_code == 200:\n",
|
||
|
" # Parse the JSON response\n",
|
||
|
" data = response.json()\n",
|
||
|
" \n",
|
||
|
" # Extract the dataset from the response\n",
|
||
|
" dataset = data['dataset']\n",
|
||
|
" \n",
|
||
|
" # Create a pandas DataFrame\n",
|
||
|
" df = pd.DataFrame(dataset['data'], columns=dataset['column_names'])\n",
|
||
|
" \n",
|
||
|
" # Convert the date column to datetime\n",
|
||
|
" df['Date'] = pd.to_datetime(df['Date'])\n",
|
||
|
" \n",
|
||
|
" # Set the date as the index\n",
|
||
|
" df.set_index('Date', inplace=True)\n",
|
||
|
" \n",
|
||
|
" # Sort the DataFrame by date\n",
|
||
|
" df.sort_index(inplace=True)\n",
|
||
|
" \n",
|
||
|
" # Display the first few rows of the DataFrame\n",
|
||
|
" print(df.tail())\n",
|
||
|
" \n",
|
||
|
" # You can now use this DataFrame for further analysis or visualization\n",
|
||
|
" \n",
|
||
|
"else:\n",
|
||
|
" print(f\"Error fetching data: {response.status_code}\")\n",
|
||
|
" print(response.text)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 41,
|
||
|
"id": "a1ab3a82-5682-4701-ab9e-414d6d4ff115",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"Index(['Open Interest', 'Producer/Merchant/Processor/User Longs',\n",
|
||
|
" 'Producer/Merchant/Processor/User Shorts', 'Swap Dealer Longs',\n",
|
||
|
" 'Swap Dealer Shorts', 'Swap Dealer Spreads', 'Money Manager Longs',\n",
|
||
|
" 'Money Manager Shorts', 'Money Manager Spreads',\n",
|
||
|
" 'Other Reportable Longs', 'Other Reportable Shorts',\n",
|
||
|
" 'Other Reportable Spreads', 'Total Reportable Longs',\n",
|
||
|
" 'Total Reportable Shorts', 'Non Reportable Longs',\n",
|
||
|
" 'Non Reportable Shorts'],\n",
|
||
|
" dtype='object')"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 41,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"df.columns"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 44,
|
||
|
"id": "61ac72a5-b8f9-451f-ae0e-2c9b5ed7358a",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/html": [
|
||
|
"<div>\n",
|
||
|
"<style scoped>\n",
|
||
|
" .dataframe tbody tr th:only-of-type {\n",
|
||
|
" vertical-align: middle;\n",
|
||
|
" }\n",
|
||
|
"\n",
|
||
|
" .dataframe tbody tr th {\n",
|
||
|
" vertical-align: top;\n",
|
||
|
" }\n",
|
||
|
"\n",
|
||
|
" .dataframe thead th {\n",
|
||
|
" text-align: right;\n",
|
||
|
" }\n",
|
||
|
"</style>\n",
|
||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||
|
" <thead>\n",
|
||
|
" <tr style=\"text-align: right;\">\n",
|
||
|
" <th></th>\n",
|
||
|
" <th>Open Interest</th>\n",
|
||
|
" <th>Producer/Merchant/Processor/User Longs</th>\n",
|
||
|
" <th>Producer/Merchant/Processor/User Shorts</th>\n",
|
||
|
" <th>Swap Dealer Longs</th>\n",
|
||
|
" <th>Swap Dealer Shorts</th>\n",
|
||
|
" <th>Swap Dealer Spreads</th>\n",
|
||
|
" <th>Money Manager Longs</th>\n",
|
||
|
" <th>Money Manager Shorts</th>\n",
|
||
|
" <th>Money Manager Spreads</th>\n",
|
||
|
" <th>Other Reportable Longs</th>\n",
|
||
|
" <th>Other Reportable Shorts</th>\n",
|
||
|
" <th>Other Reportable Spreads</th>\n",
|
||
|
" <th>Total Reportable Longs</th>\n",
|
||
|
" <th>Total Reportable Shorts</th>\n",
|
||
|
" <th>Non Reportable Longs</th>\n",
|
||
|
" <th>Non Reportable Shorts</th>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>Date</th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" <th></th>\n",
|
||
|
" </tr>\n",
|
||
|
" </thead>\n",
|
||
|
" <tbody>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2023-11-28</th>\n",
|
||
|
" <td>139144.0</td>\n",
|
||
|
" <td>3472.0</td>\n",
|
||
|
" <td>40323.0</td>\n",
|
||
|
" <td>33045.0</td>\n",
|
||
|
" <td>44049.0</td>\n",
|
||
|
" <td>3770.0</td>\n",
|
||
|
" <td>45604.0</td>\n",
|
||
|
" <td>21842.0</td>\n",
|
||
|
" <td>6885.0</td>\n",
|
||
|
" <td>17276.0</td>\n",
|
||
|
" <td>6758.0</td>\n",
|
||
|
" <td>2445.0</td>\n",
|
||
|
" <td>112497.0</td>\n",
|
||
|
" <td>126072.0</td>\n",
|
||
|
" <td>26647.0</td>\n",
|
||
|
" <td>13072.0</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2023-12-05</th>\n",
|
||
|
" <td>139753.0</td>\n",
|
||
|
" <td>4714.0</td>\n",
|
||
|
" <td>41340.0</td>\n",
|
||
|
" <td>33328.0</td>\n",
|
||
|
" <td>48716.0</td>\n",
|
||
|
" <td>2932.0</td>\n",
|
||
|
" <td>43852.0</td>\n",
|
||
|
" <td>22322.0</td>\n",
|
||
|
" <td>7544.0</td>\n",
|
||
|
" <td>19389.0</td>\n",
|
||
|
" <td>4616.0</td>\n",
|
||
|
" <td>1607.0</td>\n",
|
||
|
" <td>113366.0</td>\n",
|
||
|
" <td>129077.0</td>\n",
|
||
|
" <td>26387.0</td>\n",
|
||
|
" <td>10676.0</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2023-12-12</th>\n",
|
||
|
" <td>134281.0</td>\n",
|
||
|
" <td>4311.0</td>\n",
|
||
|
" <td>38849.0</td>\n",
|
||
|
" <td>30707.0</td>\n",
|
||
|
" <td>43665.0</td>\n",
|
||
|
" <td>2832.0</td>\n",
|
||
|
" <td>33472.0</td>\n",
|
||
|
" <td>24805.0</td>\n",
|
||
|
" <td>8439.0</td>\n",
|
||
|
" <td>22212.0</td>\n",
|
||
|
" <td>2421.0</td>\n",
|
||
|
" <td>1706.0</td>\n",
|
||
|
" <td>103679.0</td>\n",
|
||
|
" <td>122717.0</td>\n",
|
||
|
" <td>30602.0</td>\n",
|
||
|
" <td>11564.0</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2023-12-19</th>\n",
|
||
|
" <td>127549.0</td>\n",
|
||
|
" <td>3701.0</td>\n",
|
||
|
" <td>39714.0</td>\n",
|
||
|
" <td>30908.0</td>\n",
|
||
|
" <td>43686.0</td>\n",
|
||
|
" <td>1911.0</td>\n",
|
||
|
" <td>34931.0</td>\n",
|
||
|
" <td>20060.0</td>\n",
|
||
|
" <td>6662.0</td>\n",
|
||
|
" <td>17700.0</td>\n",
|
||
|
" <td>2820.0</td>\n",
|
||
|
" <td>1577.0</td>\n",
|
||
|
" <td>97390.0</td>\n",
|
||
|
" <td>116430.0</td>\n",
|
||
|
" <td>30159.0</td>\n",
|
||
|
" <td>11119.0</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2023-12-26</th>\n",
|
||
|
" <td>131408.0</td>\n",
|
||
|
" <td>4063.0</td>\n",
|
||
|
" <td>41011.0</td>\n",
|
||
|
" <td>29911.0</td>\n",
|
||
|
" <td>45585.0</td>\n",
|
||
|
" <td>2415.0</td>\n",
|
||
|
" <td>36546.0</td>\n",
|
||
|
" <td>19749.0</td>\n",
|
||
|
" <td>6847.0</td>\n",
|
||
|
" <td>18013.0</td>\n",
|
||
|
" <td>2947.0</td>\n",
|
||
|
" <td>2137.0</td>\n",
|
||
|
" <td>99932.0</td>\n",
|
||
|
" <td>120691.0</td>\n",
|
||
|
" <td>31476.0</td>\n",
|
||
|
" <td>10717.0</td>\n",
|
||
|
" </tr>\n",
|
||
|
" </tbody>\n",
|
||
|
"</table>\n",
|
||
|
"</div>"
|
||
|
],
|
||
|
"text/plain": [
|
||
|
" Open Interest Producer/Merchant/Processor/User Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 139144.0 3472.0 \n",
|
||
|
"2023-12-05 139753.0 4714.0 \n",
|
||
|
"2023-12-12 134281.0 4311.0 \n",
|
||
|
"2023-12-19 127549.0 3701.0 \n",
|
||
|
"2023-12-26 131408.0 4063.0 \n",
|
||
|
"\n",
|
||
|
" Producer/Merchant/Processor/User Shorts Swap Dealer Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 40323.0 33045.0 \n",
|
||
|
"2023-12-05 41340.0 33328.0 \n",
|
||
|
"2023-12-12 38849.0 30707.0 \n",
|
||
|
"2023-12-19 39714.0 30908.0 \n",
|
||
|
"2023-12-26 41011.0 29911.0 \n",
|
||
|
"\n",
|
||
|
" Swap Dealer Shorts Swap Dealer Spreads Money Manager Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 44049.0 3770.0 45604.0 \n",
|
||
|
"2023-12-05 48716.0 2932.0 43852.0 \n",
|
||
|
"2023-12-12 43665.0 2832.0 33472.0 \n",
|
||
|
"2023-12-19 43686.0 1911.0 34931.0 \n",
|
||
|
"2023-12-26 45585.0 2415.0 36546.0 \n",
|
||
|
"\n",
|
||
|
" Money Manager Shorts Money Manager Spreads \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 21842.0 6885.0 \n",
|
||
|
"2023-12-05 22322.0 7544.0 \n",
|
||
|
"2023-12-12 24805.0 8439.0 \n",
|
||
|
"2023-12-19 20060.0 6662.0 \n",
|
||
|
"2023-12-26 19749.0 6847.0 \n",
|
||
|
"\n",
|
||
|
" Other Reportable Longs Other Reportable Shorts \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 17276.0 6758.0 \n",
|
||
|
"2023-12-05 19389.0 4616.0 \n",
|
||
|
"2023-12-12 22212.0 2421.0 \n",
|
||
|
"2023-12-19 17700.0 2820.0 \n",
|
||
|
"2023-12-26 18013.0 2947.0 \n",
|
||
|
"\n",
|
||
|
" Other Reportable Spreads Total Reportable Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 2445.0 112497.0 \n",
|
||
|
"2023-12-05 1607.0 113366.0 \n",
|
||
|
"2023-12-12 1706.0 103679.0 \n",
|
||
|
"2023-12-19 1577.0 97390.0 \n",
|
||
|
"2023-12-26 2137.0 99932.0 \n",
|
||
|
"\n",
|
||
|
" Total Reportable Shorts Non Reportable Longs \\\n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 126072.0 26647.0 \n",
|
||
|
"2023-12-05 129077.0 26387.0 \n",
|
||
|
"2023-12-12 122717.0 30602.0 \n",
|
||
|
"2023-12-19 116430.0 30159.0 \n",
|
||
|
"2023-12-26 120691.0 31476.0 \n",
|
||
|
"\n",
|
||
|
" Non Reportable Shorts \n",
|
||
|
"Date \n",
|
||
|
"2023-11-28 13072.0 \n",
|
||
|
"2023-12-05 10676.0 \n",
|
||
|
"2023-12-12 11564.0 \n",
|
||
|
"2023-12-19 11119.0 \n",
|
||
|
"2023-12-26 10717.0 "
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 44,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"df.tail()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "96e0f458-9969-41a5-a153-9229c441eee5",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Plot the data"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 45,
|
||
|
"id": "0babd084-6190-4681-a6a3-23a95b92a68c",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"application/vnd.plotly.v1+json": {
|
||
|
"config": {
|
||
|
"plotlyServerURL": "https://plot.ly"
|
||
|
},
|
||
|
"data": [
|
||
|
{
|
||
|
"line": {
|
||
|
"color": "blue",
|
||
|
"width": 2
|
||
|
},
|
||
|
"mode": "lines",
|
||
|
"name": "Producer/Merchant/Processor/User Longs",
|
||
|
"type": "scatter",
|
||
|
"x": [
|
||
|
"2022-01-04T00:00:00",
|
||
|
"2022-01-11T00:00:00",
|
||
|
"2022-01-18T00:00:00",
|
||
|
"2022-01-25T00:00:00",
|
||
|
"2022-02-01T00:00:00",
|
||
|
"2022-02-08T00:00:00",
|
||
|
"2022-02-15T00:00:00",
|
||
|
"2022-02-22T00:00:00",
|
||
|
"2022-03-01T00:00:00",
|
||
|
"2022-03-08T00:00:00",
|
||
|
"2022-03-15T00:00:00",
|
||
|
"2022-03-22T00:00:00",
|
||
|
"2022-03-29T00:00:00",
|
||
|
"2022-04-05T00:00:00",
|
||
|
"2022-04-12T00:00:00",
|
||
|
"2022-04-19T00:00:00",
|
||
|
"2022-04-26T00:00:00",
|
||
|
"2022-05-03T00:00:00",
|
||
|
"2022-05-10T00:00:00",
|
||
|
"2022-05-17T00:00:00",
|
||
|
"2022-05-24T00:00:00",
|
||
|
"2022-05-31T00:00:00",
|
||
|
"2022-06-07T00:00:00",
|
||
|
"2022-06-14T00:00:00",
|
||
|
"2022-06-21T00:00:00",
|
||
|
"2022-06-28T00:00:00",
|
||
|
"2022-07-05T00:00:00",
|
||
|
"2022-07-12T00:00:00",
|
||
|
"2022-07-19T00:00:00",
|
||
|
"2022-07-26T00:00:00",
|
||
|
"2022-08-02T00:00:00",
|
||
|
"2022-08-09T00:00:00",
|
||
|
"2022-08-16T00:00:00",
|
||
|
"2022-08-23T00:00:00",
|
||
|
"2022-08-30T00:00:00",
|
||
|
"2022-09-06T00:00:00",
|
||
|
"2022-09-13T00:00:00",
|
||
|
"2022-09-20T00:00:00",
|
||
|
"2022-09-27T00:00:00",
|
||
|
"2022-10-04T00:00:00",
|
||
|
"2022-10-11T00:00:00",
|
||
|
"2022-10-18T00:00:00",
|
||
|
"2022-10-25T00:00:00",
|
||
|
"2022-11-01T00:00:00",
|
||
|
"2022-11-08T00:00:00",
|
||
|
"2022-11-15T00:00:00",
|
||
|
"2022-11-22T00:00:00",
|
||
|
"2022-11-29T00:00:00",
|
||
|
"2022-12-06T00:00:00",
|
||
|
"2022-12-13T00:00:00",
|
||
|
"2022-12-20T00:00:00",
|
||
|
"2022-12-27T00:00:00",
|
||
|
"2023-01-03T00:00:00",
|
||
|
"2023-01-10T00:00:00",
|
||
|
"2023-01-17T00:00:00",
|
||
|
"2023-01-24T00:00:00",
|
||
|
"2023-01-31T00:00:00",
|
||
|
"2023-02-07T00:00:00",
|
||
|
"2023-02-14T00:00:00",
|
||
|
"2023-02-21T00:00:00",
|
||
|
"2023-02-28T00:00:00",
|
||
|
"2023-03-07T00:00:00",
|
||
|
"2023-03-14T00:00:00",
|
||
|
"2023-03-21T00:00:00",
|
||
|
"2023-03-28T00:00:00",
|
||
|
"2023-04-04T00:00:00",
|
||
|
"2023-04-11T00:00:00",
|
||
|
"2023-04-18T00:00:00",
|
||
|
"2023-04-25T00:00:00",
|
||
|
"2023-05-02T00:00:00",
|
||
|
"2023-05-09T00:00:00",
|
||
|
"2023-05-16T00:00:00",
|
||
|
"2023-05-23T00:00:00",
|
||
|
"2023-05-30T00:00:00",
|
||
|
"2023-06-06T00:00:00",
|
||
|
"2023-06-13T00:00:00",
|
||
|
"2023-06-20T00:00:00",
|
||
|
"2023-06-27T00:00:00",
|
||
|
"2023-07-03T00:00:00",
|
||
|
"2023-07-11T00:00:00",
|
||
|
"2023-07-18T00:00:00",
|
||
|
"2023-07-25T00:00:00",
|
||
|
"2023-08-01T00:00:00",
|
||
|
"2023-08-08T00:00:00",
|
||
|
"2023-08-15T00:00:00",
|
||
|
"2023-08-22T00:00:00",
|
||
|
"2023-08-29T00:00:00",
|
||
|
"2023-09-05T00:00:00",
|
||
|
"2023-09-12T00:00:00",
|
||
|
"2023-09-19T00:00:00",
|
||
|
"2023-09-26T00:00:00",
|
||
|
"2023-10-03T00:00:00",
|
||
|
"2023-10-10T00:00:00",
|
||
|
"2023-10-17T00:00:00",
|
||
|
"2023-10-24T00:00:00",
|
||
|
"2023-10-31T00:00:00",
|
||
|
"2023-11-07T00:00:00",
|
||
|
"2023-11-14T00:00:00",
|
||
|
"2023-11-21T00:00:00",
|
||
|
"2023-11-28T00:00:00",
|
||
|
"2023-12-05T00:00:00",
|
||
|
"2023-12-12T00:00:00",
|
||
|
"2023-12-19T00:00:00",
|
||
|
"2023-12-26T00:00:00"
|
||
|
],
|
||
|
"y": [
|
||
|
3.9176898101361086,
|
||
|
3.980144279364728,
|
||
|
3.738814148463395,
|
||
|
3.4306458732762763,
|
||
|
4.5180238171869975,
|
||
|
4.403612454963055,
|
||
|
3.79121859232455,
|
||
|
2.99428990198174,
|
||
|
2.3406675095780574,
|
||
|
2.8250031197447156,
|
||
|
2.35757123788157,
|
||
|
2.318984149855908,
|
||
|
2.542579900929633,
|
||
|
2.878283936819143,
|
||
|
2.694363811526764,
|
||
|
2.0260644752809585,
|
||
|
2.9992166994187084,
|
||
|
3.0481073700723353,
|
||
|
3.7806825823806323,
|
||
|
4.5428757247429665,
|
||
|
4.836264816736768,
|
||
|
4.6340486486853445,
|
||
|
4.295521059516905,
|
||
|
5.405387621892642,
|
||
|
3.6524120091361896,
|
||
|
5.263855643527895,
|
||
|
6.423043790891551,
|
||
|
6.67163413211115,
|
||
|
6.5667449241636655,
|
||
|
7.136767173712986,
|
||
|
5.343920391584169,
|
||
|
5.026471901511769,
|
||
|
5.881619246919911,
|
||
|
6.719452468532873,
|
||
|
5.837911097654166,
|
||
|
5.9768618944323935,
|
||
|
4.1857891241791485,
|
||
|
3.479755047045198,
|
||
|
3.272093023255814,
|
||
|
2.2605849109045426,
|
||
|
3.003430900392444,
|
||
|
4.959758921024586,
|
||
|
3.8357838731710823,
|
||
|
3.266966696669667,
|
||
|
2.7450030974743123,
|
||
|
2.3004737930985786,
|
||
|
2.3435500011636297,
|
||
|
2.5870458031635026,
|
||
|
2.8100980760129897,
|
||
|
3.6223169129066943,
|
||
|
3.4862853695137614,
|
||
|
3.6600839126001232,
|
||
|
3.780589438593833,
|
||
|
3.7380444902701577,
|
||
|
3.6682289059774615,
|
||
|
3.3196958242540133,
|
||
|
3.6784967778798374,
|
||
|
3.9610481957470376,
|
||
|
3.534344443435353,
|
||
|
1.7715042048004133,
|
||
|
2.11138014527845,
|
||
|
3.206983365097292,
|
||
|
1.5578293860657624,
|
||
|
2.0884768478863305,
|
||
|
2.5759189062566548,
|
||
|
3.3183446383659785,
|
||
|
3.023146623312006,
|
||
|
2.7296664161999358,
|
||
|
1.7489244582208803,
|
||
|
1.684463090544276,
|
||
|
1.7594279624600366,
|
||
|
1.6904644674216314,
|
||
|
1.865330779431266,
|
||
|
1.4795799998503207,
|
||
|
2.296349486113831,
|
||
|
2.3691445730664986,
|
||
|
2.512562814070352,
|
||
|
2.0090532913329717,
|
||
|
0.796182518943201,
|
||
|
0.7291199015646563,
|
||
|
0.6414141070249144,
|
||
|
0.9816335144113602,
|
||
|
1.136410939516297,
|
||
|
1.1523566638330027,
|
||
|
2.396266685960279,
|
||
|
2.851185250219491,
|
||
|
2.508278207018142,
|
||
|
2.641897738523063,
|
||
|
2.5548319126520447,
|
||
|
3.1944588028533034,
|
||
|
2.8390092388634454,
|
||
|
2.6397133026611677,
|
||
|
3.177891014483622,
|
||
|
2.446619217081851,
|
||
|
2.266494595902565,
|
||
|
2.821831859595888,
|
||
|
3.237127402287275,
|
||
|
2.7605951374363995,
|
||
|
2.6665078573395964,
|
||
|
2.495256712470534,
|
||
|
3.373093958627006,
|
||
|
3.2104318555864193,
|
||
|
2.9016299618185952,
|
||
|
3.0918969925727504
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"line": {
|
||
|
"color": "red",
|
||
|
"width": 2
|
||
|
},
|
||
|
"mode": "lines",
|
||
|
"name": "Producer/Merchant/Processor/User Shorts",
|
||
|
"type": "scatter",
|
||
|
"x": [
|
||
|
"2022-01-04T00:00:00",
|
||
|
"2022-01-11T00:00:00",
|
||
|
"2022-01-18T00:00:00",
|
||
|
"2022-01-25T00:00:00",
|
||
|
"2022-02-01T00:00:00",
|
||
|
"2022-02-08T00:00:00",
|
||
|
"2022-02-15T00:00:00",
|
||
|
"2022-02-22T00:00:00",
|
||
|
"2022-03-01T00:00:00",
|
||
|
"2022-03-08T00:00:00",
|
||
|
"2022-03-15T00:00:00",
|
||
|
"2022-03-22T00:00:00",
|
||
|
"2022-03-29T00:00:00",
|
||
|
"2022-04-05T00:00:00",
|
||
|
"2022-04-12T00:00:00",
|
||
|
"2022-04-19T00:00:00",
|
||
|
"2022-04-26T00:00:00",
|
||
|
"2022-05-03T00:00:00",
|
||
|
"2022-05-10T00:00:00",
|
||
|
"2022-05-17T00:00:00",
|
||
|
"2022-05-24T00:00:00",
|
||
|
"2022-05-31T00:00:00",
|
||
|
"2022-06-07T00:00:00",
|
||
|
"2022-06-14T00:00:00",
|
||
|
"2022-06-21T00:00:00",
|
||
|
"2022-06-28T00:00:00",
|
||
|
"2022-07-05T00:00:00",
|
||
|
"2022-07-12T00:00:00",
|
||
|
"2022-07-19T00:00:00",
|
||
|
"2022-07-26T00:00:00",
|
||
|
"2022-08-02T00:00:00",
|
||
|
"2022-08-09T00:00:00",
|
||
|
"2022-08-16T00:00:00",
|
||
|
"2022-08-23T00:00:00",
|
||
|
"2022-08-30T00:00:00",
|
||
|
"2022-09-06T00:00:00",
|
||
|
"2022-09-13T00:00:00",
|
||
|
"2022-09-20T00:00:00",
|
||
|
"2022-09-27T00:00:00",
|
||
|
"2022-10-04T00:00:00",
|
||
|
"2022-10-11T00:00:00",
|
||
|
"2022-10-18T00:00:00",
|
||
|
"2022-10-25T00:00:00",
|
||
|
"2022-11-01T00:00:00",
|
||
|
"2022-11-08T00:00:00",
|
||
|
"2022-11-15T00:00:00",
|
||
|
"2022-11-22T00:00:00",
|
||
|
"2022-11-29T00:00:00",
|
||
|
"2022-12-06T00:00:00",
|
||
|
"2022-12-13T00:00:00",
|
||
|
"2022-12-20T00:00:00",
|
||
|
"2022-12-27T00:00:00",
|
||
|
"2023-01-03T00:00:00",
|
||
|
"2023-01-10T00:00:00",
|
||
|
"2023-01-17T00:00:00",
|
||
|
"2023-01-24T00:00:00",
|
||
|
"2023-01-31T00:00:00",
|
||
|
"2023-02-07T00:00:00",
|
||
|
"2023-02-14T00:00:00",
|
||
|
"2023-02-21T00:00:00",
|
||
|
"2023-02-28T00:00:00",
|
||
|
"2023-03-07T00:00:00",
|
||
|
"2023-03-14T00:00:00",
|
||
|
"2023-03-21T00:00:00",
|
||
|
"2023-03-28T00:00:00",
|
||
|
"2023-04-04T00:00:00",
|
||
|
"2023-04-11T00:00:00",
|
||
|
"2023-04-18T00:00:00",
|
||
|
"2023-04-25T00:00:00",
|
||
|
"2023-05-02T00:00:00",
|
||
|
"2023-05-09T00:00:00",
|
||
|
"2023-05-16T00:00:00",
|
||
|
"2023-05-23T00:00:00",
|
||
|
"2023-05-30T00:00:00",
|
||
|
"2023-06-06T00:00:00",
|
||
|
"2023-06-13T00:00:00",
|
||
|
"2023-06-20T00:00:00",
|
||
|
"2023-06-27T00:00:00",
|
||
|
"2023-07-03T00:00:00",
|
||
|
"2023-07-11T00:00:00",
|
||
|
"2023-07-18T00:00:00",
|
||
|
"2023-07-25T00:00:00",
|
||
|
"2023-08-01T00:00:00",
|
||
|
"2023-08-08T00:00:00",
|
||
|
"2023-08-15T00:00:00",
|
||
|
"2023-08-22T00:00:00",
|
||
|
"2023-08-29T00:00:00",
|
||
|
"2023-09-05T00:00:00",
|
||
|
"2023-09-12T00:00:00",
|
||
|
"2023-09-19T00:00:00",
|
||
|
"2023-09-26T00:00:00",
|
||
|
"2023-10-03T00:00:00",
|
||
|
"2023-10-10T00:00:00",
|
||
|
"2023-10-17T00:00:00",
|
||
|
"2023-10-24T00:00:00",
|
||
|
"2023-10-31T00:00:00",
|
||
|
"2023-11-07T00:00:00",
|
||
|
"2023-11-14T00:00:00",
|
||
|
"2023-11-21T00:00:00",
|
||
|
"2023-11-28T00:00:00",
|
||
|
"2023-12-05T00:00:00",
|
||
|
"2023-12-12T00:00:00",
|
||
|
"2023-12-19T00:00:00",
|
||
|
"2023-12-26T00:00:00"
|
||
|
],
|
||
|
"y": [
|
||
|
30.997484249682845,
|
||
|
30.000969247171877,
|
||
|
32.266349328008495,
|
||
|
32.465624361736474,
|
||
|
30.115465078854196,
|
||
|
29.418709585490472,
|
||
|
27.899317058253914,
|
||
|
28.5798039634798,
|
||
|
31.69749223271979,
|
||
|
32.77455239091292,
|
||
|
30.94860594970264,
|
||
|
31.228128859613008,
|
||
|
31.708624550451248,
|
||
|
30.30513176144244,
|
||
|
29.910019960582574,
|
||
|
27.617439631368825,
|
||
|
29.991479888414023,
|
||
|
28.256543590041545,
|
||
|
25.294216543375924,
|
||
|
25.15117550195802,
|
||
|
24.967908450319552,
|
||
|
25.594530926470288,
|
||
|
26.587724385342632,
|
||
|
24.560133703562357,
|
||
|
25.308208811469772,
|
||
|
23.29515742957098,
|
||
|
19.99245352868727,
|
||
|
19.86728431944552,
|
||
|
19.31950401729468,
|
||
|
18.784171493531097,
|
||
|
20.246281197942277,
|
||
|
21.301552876471547,
|
||
|
21.663871835026402,
|
||
|
20.409124600816035,
|
||
|
18.723416526089654,
|
||
|
18.07519884309472,
|
||
|
19.243709879731423,
|
||
|
21.008727773698592,
|
||
|
21.51937984496124,
|
||
|
24.500478675766654,
|
||
|
24.52098739880436,
|
||
|
20.679872110543528,
|
||
|
20.59172448502714,
|
||
|
21.912511251125114,
|
||
|
24.833911291183945,
|
||
|
24.304668027085995,
|
||
|
27.468640182457122,
|
||
|
28.93169935179535,
|
||
|
29.01728161360336,
|
||
|
31.53199792919438,
|
||
|
31.61404105880351,
|
||
|
32.21527707504651,
|
||
|
31.43419956057277,
|
||
|
29.698140211294156,
|
||
|
31.164399144560225,
|
||
|
28.692874401506057,
|
||
|
28.803801450858145,
|
||
|
25.468372242722737,
|
||
|
24.845608936518026,
|
||
|
23.13366584346198,
|
||
|
20.488297013720743,
|
||
|
18.606621020681864,
|
||
|
20.854547843510822,
|
||
|
22.57100149476831,
|
||
|
25.34009114527876,
|
||
|
25.85930950384879,
|
||
|
24.188676865289878,
|
||
|
22.092428538053053,
|
||
|
22.321834166154503,
|
||
|
24.099538368715713,
|
||
|
23.118017119873493,
|
||
|
21.733421816910354,
|
||
|
21.255341093266537,
|
||
|
21.200577762144604,
|
||
|
20.6569909553133,
|
||
|
19.890414876537992,
|
||
|
20.346189880301115,
|
||
|
23.877853446809887,
|
||
|
25.615053180797233,
|
||
|
25.42774479972066,
|
||
|
26.60915274779897,
|
||
|
24.220207218614277,
|
||
|
23.112572673410202,
|
||
|
23.56591174953317,
|
||
|
23.553159931990013,
|
||
|
24.551507170032192,
|
||
|
26.557673360840933,
|
||
|
27.213339673680025,
|
||
|
25.948185039747152,
|
||
|
25.303580942989605,
|
||
|
25.177883777316453,
|
||
|
25.33234800988502,
|
||
|
25.649163982326673,
|
||
|
27.558233581365254,
|
||
|
28.23761897080174,
|
||
|
26.63079123501569,
|
||
|
25.823014655955078,
|
||
|
24.92842626793052,
|
||
|
27.52488219573746,
|
||
|
28.97933076525039,
|
||
|
29.580760341459577,
|
||
|
28.93112205002942,
|
||
|
31.136269198504102,
|
||
|
31.208906611469622
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"layout": {
|
||
|
"height": 600,
|
||
|
"hovermode": "x unified",
|
||
|
"legend": {
|
||
|
"title": {
|
||
|
"text": "Producer Categories"
|
||
|
}
|
||
|
},
|
||
|
"template": {
|
||
|
"data": {
|
||
|
"bar": [
|
||
|
{
|
||
|
"error_x": {
|
||
|
"color": "#2a3f5f"
|
||
|
},
|
||
|
"error_y": {
|
||
|
"color": "#2a3f5f"
|
||
|
},
|
||
|
"marker": {
|
||
|
"line": {
|
||
|
"color": "#E5ECF6",
|
||
|
"width": 0.5
|
||
|
},
|
||
|
"pattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
}
|
||
|
},
|
||
|
"type": "bar"
|
||
|
}
|
||
|
],
|
||
|
"barpolar": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"line": {
|
||
|
"color": "#E5ECF6",
|
||
|
"width": 0.5
|
||
|
},
|
||
|
"pattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
}
|
||
|
},
|
||
|
"type": "barpolar"
|
||
|
}
|
||
|
],
|
||
|
"carpet": [
|
||
|
{
|
||
|
"aaxis": {
|
||
|
"endlinecolor": "#2a3f5f",
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"minorgridcolor": "white",
|
||
|
"startlinecolor": "#2a3f5f"
|
||
|
},
|
||
|
"baxis": {
|
||
|
"endlinecolor": "#2a3f5f",
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"minorgridcolor": "white",
|
||
|
"startlinecolor": "#2a3f5f"
|
||
|
},
|
||
|
"type": "carpet"
|
||
|
}
|
||
|
],
|
||
|
"choropleth": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"type": "choropleth"
|
||
|
}
|
||
|
],
|
||
|
"contour": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "contour"
|
||
|
}
|
||
|
],
|
||
|
"contourcarpet": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"type": "contourcarpet"
|
||
|
}
|
||
|
],
|
||
|
"heatmap": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "heatmap"
|
||
|
}
|
||
|
],
|
||
|
"heatmapgl": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "heatmapgl"
|
||
|
}
|
||
|
],
|
||
|
"histogram": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"pattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
}
|
||
|
},
|
||
|
"type": "histogram"
|
||
|
}
|
||
|
],
|
||
|
"histogram2d": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "histogram2d"
|
||
|
}
|
||
|
],
|
||
|
"histogram2dcontour": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "histogram2dcontour"
|
||
|
}
|
||
|
],
|
||
|
"mesh3d": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"type": "mesh3d"
|
||
|
}
|
||
|
],
|
||
|
"parcoords": [
|
||
|
{
|
||
|
"line": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "parcoords"
|
||
|
}
|
||
|
],
|
||
|
"pie": [
|
||
|
{
|
||
|
"automargin": true,
|
||
|
"type": "pie"
|
||
|
}
|
||
|
],
|
||
|
"scatter": [
|
||
|
{
|
||
|
"fillpattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
},
|
||
|
"type": "scatter"
|
||
|
}
|
||
|
],
|
||
|
"scatter3d": [
|
||
|
{
|
||
|
"line": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatter3d"
|
||
|
}
|
||
|
],
|
||
|
"scattercarpet": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattercarpet"
|
||
|
}
|
||
|
],
|
||
|
"scattergeo": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattergeo"
|
||
|
}
|
||
|
],
|
||
|
"scattergl": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattergl"
|
||
|
}
|
||
|
],
|
||
|
"scattermapbox": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattermapbox"
|
||
|
}
|
||
|
],
|
||
|
"scatterpolar": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatterpolar"
|
||
|
}
|
||
|
],
|
||
|
"scatterpolargl": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatterpolargl"
|
||
|
}
|
||
|
],
|
||
|
"scatterternary": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatterternary"
|
||
|
}
|
||
|
],
|
||
|
"surface": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "surface"
|
||
|
}
|
||
|
],
|
||
|
"table": [
|
||
|
{
|
||
|
"cells": {
|
||
|
"fill": {
|
||
|
"color": "#EBF0F8"
|
||
|
},
|
||
|
"line": {
|
||
|
"color": "white"
|
||
|
}
|
||
|
},
|
||
|
"header": {
|
||
|
"fill": {
|
||
|
"color": "#C8D4E3"
|
||
|
},
|
||
|
"line": {
|
||
|
"color": "white"
|
||
|
}
|
||
|
},
|
||
|
"type": "table"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
"layout": {
|
||
|
"annotationdefaults": {
|
||
|
"arrowcolor": "#2a3f5f",
|
||
|
"arrowhead": 0,
|
||
|
"arrowwidth": 1
|
||
|
},
|
||
|
"autotypenumbers": "strict",
|
||
|
"coloraxis": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"colorscale": {
|
||
|
"diverging": [
|
||
|
[
|
||
|
0,
|
||
|
"#8e0152"
|
||
|
],
|
||
|
[
|
||
|
0.1,
|
||
|
"#c51b7d"
|
||
|
],
|
||
|
[
|
||
|
0.2,
|
||
|
"#de77ae"
|
||
|
],
|
||
|
[
|
||
|
0.3,
|
||
|
"#f1b6da"
|
||
|
],
|
||
|
[
|
||
|
0.4,
|
||
|
"#fde0ef"
|
||
|
],
|
||
|
[
|
||
|
0.5,
|
||
|
"#f7f7f7"
|
||
|
],
|
||
|
[
|
||
|
0.6,
|
||
|
"#e6f5d0"
|
||
|
],
|
||
|
[
|
||
|
0.7,
|
||
|
"#b8e186"
|
||
|
],
|
||
|
[
|
||
|
0.8,
|
||
|
"#7fbc41"
|
||
|
],
|
||
|
[
|
||
|
0.9,
|
||
|
"#4d9221"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#276419"
|
||
|
]
|
||
|
],
|
||
|
"sequential": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"sequentialminus": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
]
|
||
|
},
|
||
|
"colorway": [
|
||
|
"#636efa",
|
||
|
"#EF553B",
|
||
|
"#00cc96",
|
||
|
"#ab63fa",
|
||
|
"#FFA15A",
|
||
|
"#19d3f3",
|
||
|
"#FF6692",
|
||
|
"#B6E880",
|
||
|
"#FF97FF",
|
||
|
"#FECB52"
|
||
|
],
|
||
|
"font": {
|
||
|
"color": "#2a3f5f"
|
||
|
},
|
||
|
"geo": {
|
||
|
"bgcolor": "white",
|
||
|
"lakecolor": "white",
|
||
|
"landcolor": "#E5ECF6",
|
||
|
"showlakes": true,
|
||
|
"showland": true,
|
||
|
"subunitcolor": "white"
|
||
|
},
|
||
|
"hoverlabel": {
|
||
|
"align": "left"
|
||
|
},
|
||
|
"hovermode": "closest",
|
||
|
"mapbox": {
|
||
|
"style": "light"
|
||
|
},
|
||
|
"paper_bgcolor": "white",
|
||
|
"plot_bgcolor": "#E5ECF6",
|
||
|
"polar": {
|
||
|
"angularaxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"bgcolor": "#E5ECF6",
|
||
|
"radialaxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"scene": {
|
||
|
"xaxis": {
|
||
|
"backgroundcolor": "#E5ECF6",
|
||
|
"gridcolor": "white",
|
||
|
"gridwidth": 2,
|
||
|
"linecolor": "white",
|
||
|
"showbackground": true,
|
||
|
"ticks": "",
|
||
|
"zerolinecolor": "white"
|
||
|
},
|
||
|
"yaxis": {
|
||
|
"backgroundcolor": "#E5ECF6",
|
||
|
"gridcolor": "white",
|
||
|
"gridwidth": 2,
|
||
|
"linecolor": "white",
|
||
|
"showbackground": true,
|
||
|
"ticks": "",
|
||
|
"zerolinecolor": "white"
|
||
|
},
|
||
|
"zaxis": {
|
||
|
"backgroundcolor": "#E5ECF6",
|
||
|
"gridcolor": "white",
|
||
|
"gridwidth": 2,
|
||
|
"linecolor": "white",
|
||
|
"showbackground": true,
|
||
|
"ticks": "",
|
||
|
"zerolinecolor": "white"
|
||
|
}
|
||
|
},
|
||
|
"shapedefaults": {
|
||
|
"line": {
|
||
|
"color": "#2a3f5f"
|
||
|
}
|
||
|
},
|
||
|
"ternary": {
|
||
|
"aaxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"baxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"bgcolor": "#E5ECF6",
|
||
|
"caxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"title": {
|
||
|
"x": 0.05
|
||
|
},
|
||
|
"xaxis": {
|
||
|
"automargin": true,
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": "",
|
||
|
"title": {
|
||
|
"standoff": 15
|
||
|
},
|
||
|
"zerolinecolor": "white",
|
||
|
"zerolinewidth": 2
|
||
|
},
|
||
|
"yaxis": {
|
||
|
"automargin": true,
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": "",
|
||
|
"title": {
|
||
|
"standoff": 15
|
||
|
},
|
||
|
"zerolinecolor": "white",
|
||
|
"zerolinewidth": 2
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"title": {
|
||
|
"text": "COT Data: Percentage of Open Interest for Producers"
|
||
|
},
|
||
|
"width": 1200,
|
||
|
"xaxis": {
|
||
|
"autorange": true,
|
||
|
"dtick": "M1",
|
||
|
"range": [
|
||
|
"2022-01-04",
|
||
|
"2023-12-26"
|
||
|
],
|
||
|
"tickangle": 45,
|
||
|
"tickformat": "%d %b %Y",
|
||
|
"ticklabelmode": "period",
|
||
|
"title": {
|
||
|
"text": "Date"
|
||
|
},
|
||
|
"type": "date"
|
||
|
},
|
||
|
"yaxis": {
|
||
|
"autorange": true,
|
||
|
"range": [
|
||
|
-1.1437602420799753,
|
||
|
34.559726740017815
|
||
|
],
|
||
|
"ticksuffix": "%",
|
||
|
"title": {
|
||
|
"text": "Percentage of Open Interest"
|
||
|
},
|
||
|
"type": "linear"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJUAAAJYCAYAAADbkteOAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQdYFFfbhh+kK0VAEEssscRorDHW2I3GFnvvNfbeS9TYe6+xG2ONPbbYTdTEHo3G2BKjghQBQREQ+P/3+M264C7sugiKz7mu7/ri7syZM/ecGZib932PVWxsbCzYSIAESIAESIAESIAESIAESIAESIAESIAESMAMAlaUSmbQ4qYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKKAKUSJwIJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIDZBCiVzEbGHUiABEiABEiABEiABEiABEiABEiABEiABCiVOAdIgARIgARIgARIgARIgARIgARIgARIgATMJkCpZDYy7kACJEACJEACJEACJEACJEACJEACJEACJECpxDlAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRgNgFKJbORcQcSIAESIAESIAESIAESIAESIAESIAESIAFKJc4BEiABEiABEiABEiABEiABEiABEiABEiABswlQKpmNjDuQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQKnEOkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJmE2AUslsZNyBBEiABEiABEiABEiABEiABEiABEiABEiAUolzgARIgARIgARIgARIgARIgARIgARIgARIwGwClEpmI+MOJEACJEACJEACJEACJEACJEACJEACJEAClEqcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAmYToFQyGxl3IAESIAESIAESIAESIAESIAESIAESIAESoFTiHCABEiABEiABEiABEiABEiABEiABEiABEjCbAKWS2ci4AwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAKUS5wAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIDZBCiVzEbGHUiABEiABEiABEiABEiABEiABEiABEiABCiVOAdIgARIgARIgARIgARIgARIgARIgARIgATMJkCpZDYy7kACJEACJEACJEACJEACJEACJEACJEACJECpxDlAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRgNgFKJbORcQcSIAESIAESIAESIAESIAESIAESIAESIAFKJc4BEiABEiABEiABEiABEiABEiABEiAB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
|
||
|
"text/html": [
|
||
|
"<div> <div id=\"ed83f0aa-b86f-4112-bc29-1408f880e2df\" class=\"plotly-graph-div\" style=\"height:600px; width:1200px;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"ed83f0aa-b86f-4112-bc29-1408f880e2df\")) { Plotly.newPlot( \"ed83f0aa-b86f-4112-bc29-1408f880e2df\", [{\"line\":{\"color\":\"blue\",\"width\":2},\"mode\":\"lines\",\"name\":\"Producer\\u002fMerchant\\u002fProcessor\\u002fUser Longs\",\"x\":[\"2022-01-04T00:00:00\",\"2022-01-11T00:00:00\",\"2022-01-18T00:00:00\",\"2022-01-25T00:00:00\",\"2022-02-01T00:00:00\",\"2022-02-08T00:00:00\",\"2022-02-15T00:00:00\",\"2022-02-22T00:00:00\",\"2022-03-01T00:00:00\",\"2022-03-08T00:00:00\",\"2022-03-15T00:00:00\",\"2022-03-22T00:00:00\",\"2022-03-29T00:00:00\",\"2022-04-05T00:00:00\",\"2022-04-12T00:00:00\",\"2022-04-19T00:00:00\",\"2022-04-26T00:00:00\",\"2022-05-03T00:00:00\",\"2022-05-10T00:00:00\",\"2022-05-17T00:00:00\",\"2022-05-24T00:00:00\",\"2022-05-31T00:00:00\",\"2022-06-07T00:00:00\",\"2022-06-14T00:00:00\",\"2022-06-21T00:00:00\",\"2022-06-28T00:00:00\",\"2022-07-05T00:00:00\",\"2022-07-12T00:00:00\",\"2022-07-19T00:00:00\",\"2022-07-26T00:00:00\",\"2022-08-02T00:00:00\",\"2022-08-09T00:00:00\",\"2022-08-16T00:00:00\",\"2022-08-23T00:00:00\",\"2022-08-30T00:00:00\",\"2022-09-06T00:00:00\",\"2022-09-13T00:00:00\",\"2022-09-20T00:00:00\",\"2022-09-27T00:00:00\",\"2022-10-04T00:00:00\",\"2022-10-11T00:00:00\",\"2022-10-18T00:00:00\",\"2022-10-25T00:00:00\",\"2022-11-01T00:00:00\",\"2022-11-08T00:00:00\",\"2022-11-15T00:00:00\",\"2022-11-22T00:00:00\",\"2022-11-29T00:00:00\",\"2022-12-06T00:00:00\",\"2022-12-13T00:00:00\",\"2022-12-20T00:00:00\",\"2022-12-27T00:00:00\",\"2023-01-03T00:00:00\",\"2023-01-10T00:00:00\",\"2023-01-17T00:00:00\",\"2023-01-24T00:00:00\",\"2023-01-31T00:00:00\",\"2023-02-07T00:00:00\",\"2023-02-14T00:00:00\",\"2023-02-21T00:00:00\",\"2023-02-28T00:00:00\",\"2023-03-07T00:00:00\",\"2023-03-14T00:00:00\",\"2023-03-21T00:00:00\",\"2023-03-28T00:00:00\",\"2023-04-04T00:00:00\",\"2023-04-11T00:00:00\",\"2023-04-18T00:00:00\",\"2023-04-25T00:00:00\",\"2023-05-02T00:00:00\",\"2023-05-09T00:00:00\",\"2023-05-16T00:00:00\",\"2023-05-23T00:00:00\",\"2023-05-30T00:00:00\",\"2023-06-06T00:00:00\",\"2023-06-13T00:00:00\",\"2023-06-20T00:00:00\",\"2023-06-27T00:00:00\",\"2023-07-03T00:00:00\",\"2023-07-11T00:00:00\",\"2023-07-18T00:00:00\",\"2023-07-25T00:00:00\",\"2023-08-01T00:00:00\",\"2023-08-08T00:00:00\",\"2023-08-15T00:00:00\",\"2023-08-22T00:00:00\",\"2023-08-29T00:00:00\",\"2023-09-05T00:00:00\",\"2023-09-12T00:00:00\",\"2023-09-19T00:00:00\",\"2023-09-26T00:00:00\",\"2023-10-03T00:00:00\",\"2023-10-10T00:00:00\",\"2023-10-17T00:00:00\",\"2023-10-24T00:00:00\",\"2023-10-31T00:00:00\",\"2023-11-07T00:00:00\",\"2023-11-14T00:00:00\",\"2023-11-21T00:00:00\",\"2023-11-28T00:00:00\",\"2023-12-05T00:00:00\",\"2023-12-12T00:00:00\",\"2023-12-19T00:00:00\",\"2023-12-26T00:00:00\"],\"y\":[3.9176898101361086,3.980144279364728,3.738814148463395,3.4306458732762763,4.5180238171869975,4.403612454963055,3.79121859232455,2.99428990198174,2.3406675095780574,2.8250031197447156,2.35757123788157,2.318984149855908,2.542579900929633,2.878283936819143,2.694363811526764,2.0260644752809585,2.9992166994187084,3.0481073700723353,3.7806825823806323,4.5428757247429665,4.836264816736768,4.6340486486853445,4.295521059516905,5.405387621892642,3.6524120091361896,5.263855643527895,6.423043790891551,6.67163413211115,6.5667449241636655,7.136767173712986,5.343920391584169,5.026471901511769,5.881619246919911,6.719452468532873,5.837911097654166,5.9768618944323935,4.1857891241791485,3.479755047045198,3.272093023255814,2.2605849109045426,3.003430900392444,4.959758921024586,3.8357838731710823,3.266966696669667,2.7450030974743123,2.3004737930985786,2.3435500011636297,2.5870458031635026,2.81009807601298
|
||
|
" \n",
|
||
|
"var gd = document.getElementById('ed83f0aa-b86f-4112-bc29-1408f880e2df');\n",
|
||
|
"var x = new MutationObserver(function (mutations, observer) {{\n",
|
||
|
" var display = window.getComputedStyle(gd).display;\n",
|
||
|
" if (!display || display === 'none') {{\n",
|
||
|
" console.log([gd, 'removed!']);\n",
|
||
|
" Plotly.purge(gd);\n",
|
||
|
" observer.disconnect();\n",
|
||
|
" }}\n",
|
||
|
"}});\n",
|
||
|
"\n",
|
||
|
"// Listen for the removal of the full notebook cells\n",
|
||
|
"var notebookContainer = gd.closest('#notebook-container');\n",
|
||
|
"if (notebookContainer) {{\n",
|
||
|
" x.observe(notebookContainer, {childList: true});\n",
|
||
|
"}}\n",
|
||
|
"\n",
|
||
|
"// Listen for the clearing of the current output cell\n",
|
||
|
"var outputEl = gd.closest('.output');\n",
|
||
|
"if (outputEl) {{\n",
|
||
|
" x.observe(outputEl, {childList: true});\n",
|
||
|
"}}\n",
|
||
|
"\n",
|
||
|
" }) }; }); </script> </div>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"\n",
|
||
|
"Metrics for Producer/Merchant/Processor/User Longs:\n",
|
||
|
"Volatility (Standard Deviation): 1.36%\n",
|
||
|
"Average: 3.23%\n",
|
||
|
"Median: 3.00%\n",
|
||
|
"Minimum: 0.64%\n",
|
||
|
"Maximum: 7.14%\n",
|
||
|
"Typical Range: 2.37% to 3.78%\n",
|
||
|
"\n",
|
||
|
"Metrics for Producer/Merchant/Processor/User Shorts:\n",
|
||
|
"Volatility (Standard Deviation): 3.96%\n",
|
||
|
"Average: 25.57%\n",
|
||
|
"Median: 25.32%\n",
|
||
|
"Minimum: 18.08%\n",
|
||
|
"Maximum: 32.77%\n",
|
||
|
"Typical Range: 22.26% to 28.93%\n",
|
||
|
"\n",
|
||
|
"Correlation between Longs and Shorts: -0.22\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import pandas as pd\n",
|
||
|
"import plotly.graph_objects as go\n",
|
||
|
"import numpy as np\n",
|
||
|
"\n",
|
||
|
"# Assuming df is your DataFrame with the COT data\n",
|
||
|
"# If not, you'll need to load your data here\n",
|
||
|
"\n",
|
||
|
"# Calculate percentages for producers\n",
|
||
|
"categories = [\n",
|
||
|
" 'Producer/Merchant/Processor/User Longs',\n",
|
||
|
" 'Producer/Merchant/Processor/User Shorts'\n",
|
||
|
"]\n",
|
||
|
"\n",
|
||
|
"for category in categories:\n",
|
||
|
" df[f'{category} %'] = df[category] / df['Open Interest'] * 100\n",
|
||
|
"\n",
|
||
|
"# Create the main figure\n",
|
||
|
"fig = go.Figure()\n",
|
||
|
"\n",
|
||
|
"# Add traces for each category\n",
|
||
|
"colors = ['blue', 'red']\n",
|
||
|
"for i, category in enumerate(categories):\n",
|
||
|
" fig.add_trace(go.Scatter(\n",
|
||
|
" x=df.index, \n",
|
||
|
" y=df[f'{category} %'], \n",
|
||
|
" mode='lines',\n",
|
||
|
" name=category,\n",
|
||
|
" line=dict(width=2, color=colors[i])\n",
|
||
|
" ))\n",
|
||
|
"\n",
|
||
|
"# Update layout\n",
|
||
|
"fig.update_layout(\n",
|
||
|
" title='COT Data: Percentage of Open Interest for Producers',\n",
|
||
|
" yaxis_title='Percentage of Open Interest',\n",
|
||
|
" xaxis_title='Date',\n",
|
||
|
" legend_title='Producer Categories',\n",
|
||
|
" height=600,\n",
|
||
|
" width=1200,\n",
|
||
|
" hovermode='x unified'\n",
|
||
|
")\n",
|
||
|
"\n",
|
||
|
"# Improve date labeling for better readability\n",
|
||
|
"fig.update_xaxes(\n",
|
||
|
" tickformat=\"%d %b %Y\",\n",
|
||
|
" tickangle=45,\n",
|
||
|
" dtick=\"M1\",\n",
|
||
|
" ticklabelmode=\"period\"\n",
|
||
|
")\n",
|
||
|
"\n",
|
||
|
"# Set y-axis to percentage\n",
|
||
|
"fig.update_yaxes(ticksuffix='%')\n",
|
||
|
"\n",
|
||
|
"# Show the plot\n",
|
||
|
"fig.show()\n",
|
||
|
"\n",
|
||
|
"# Calculate and print metrics\n",
|
||
|
"for category in categories:\n",
|
||
|
" print(f\"\\nMetrics for {category}:\")\n",
|
||
|
" data = df[f'{category} %']\n",
|
||
|
" \n",
|
||
|
" print(f\"Volatility (Standard Deviation): {data.std():.2f}%\")\n",
|
||
|
" print(f\"Average: {data.mean():.2f}%\")\n",
|
||
|
" print(f\"Median: {data.median():.2f}%\")\n",
|
||
|
" print(f\"Minimum: {data.min():.2f}%\")\n",
|
||
|
" print(f\"Maximum: {data.max():.2f}%\")\n",
|
||
|
" \n",
|
||
|
" # Calculate typical range\n",
|
||
|
" typical_low = np.percentile(data, 25)\n",
|
||
|
" typical_high = np.percentile(data, 75)\n",
|
||
|
" print(f\"Typical Range: {typical_low:.2f}% to {typical_high:.2f}%\")\n",
|
||
|
"\n",
|
||
|
"# Calculate and print the correlation between longs and shorts\n",
|
||
|
"correlation = df[f'{categories[0]} %'].corr(df[f'{categories[1]} %'])\n",
|
||
|
"print(f\"\\nCorrelation between Longs and Shorts: {correlation:.2f}\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 26,
|
||
|
"id": "a7f6c187-39dc-4950-9e3f-0a328825c443",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"application/vnd.plotly.v1+json": {
|
||
|
"config": {
|
||
|
"plotlyServerURL": "https://plot.ly"
|
||
|
},
|
||
|
"data": [
|
||
|
{
|
||
|
"line": {
|
||
|
"color": "blue",
|
||
|
"width": 2
|
||
|
},
|
||
|
"mode": "lines",
|
||
|
"name": "Open Interest",
|
||
|
"type": "scatter",
|
||
|
"x": [
|
||
|
"2023-08-01T00:00:00",
|
||
|
"2023-08-08T00:00:00",
|
||
|
"2023-08-15T00:00:00",
|
||
|
"2023-08-22T00:00:00",
|
||
|
"2023-08-29T00:00:00",
|
||
|
"2023-09-05T00:00:00",
|
||
|
"2023-09-12T00:00:00",
|
||
|
"2023-09-19T00:00:00",
|
||
|
"2023-09-26T00:00:00",
|
||
|
"2023-10-03T00:00:00",
|
||
|
"2023-10-10T00:00:00",
|
||
|
"2023-10-17T00:00:00",
|
||
|
"2023-10-24T00:00:00",
|
||
|
"2023-10-31T00:00:00",
|
||
|
"2023-11-07T00:00:00",
|
||
|
"2023-11-14T00:00:00",
|
||
|
"2023-11-21T00:00:00",
|
||
|
"2023-11-28T00:00:00",
|
||
|
"2023-12-05T00:00:00",
|
||
|
"2023-12-12T00:00:00",
|
||
|
"2023-12-19T00:00:00",
|
||
|
"2023-12-26T00:00:00",
|
||
|
"2024-01-02T00:00:00"
|
||
|
],
|
||
|
"y": [
|
||
|
144138,
|
||
|
137631,
|
||
|
138215,
|
||
|
136680,
|
||
|
134993,
|
||
|
128279,
|
||
|
125292,
|
||
|
125749,
|
||
|
126206,
|
||
|
125847,
|
||
|
126971,
|
||
|
123640,
|
||
|
123980,
|
||
|
126549,
|
||
|
131073,
|
||
|
134826,
|
||
|
134333,
|
||
|
139144,
|
||
|
139753,
|
||
|
134281,
|
||
|
127549,
|
||
|
131408,
|
||
|
134725
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"layout": {
|
||
|
"height": 600,
|
||
|
"hovermode": "x unified",
|
||
|
"template": {
|
||
|
"data": {
|
||
|
"bar": [
|
||
|
{
|
||
|
"error_x": {
|
||
|
"color": "#2a3f5f"
|
||
|
},
|
||
|
"error_y": {
|
||
|
"color": "#2a3f5f"
|
||
|
},
|
||
|
"marker": {
|
||
|
"line": {
|
||
|
"color": "#E5ECF6",
|
||
|
"width": 0.5
|
||
|
},
|
||
|
"pattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
}
|
||
|
},
|
||
|
"type": "bar"
|
||
|
}
|
||
|
],
|
||
|
"barpolar": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"line": {
|
||
|
"color": "#E5ECF6",
|
||
|
"width": 0.5
|
||
|
},
|
||
|
"pattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
}
|
||
|
},
|
||
|
"type": "barpolar"
|
||
|
}
|
||
|
],
|
||
|
"carpet": [
|
||
|
{
|
||
|
"aaxis": {
|
||
|
"endlinecolor": "#2a3f5f",
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"minorgridcolor": "white",
|
||
|
"startlinecolor": "#2a3f5f"
|
||
|
},
|
||
|
"baxis": {
|
||
|
"endlinecolor": "#2a3f5f",
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"minorgridcolor": "white",
|
||
|
"startlinecolor": "#2a3f5f"
|
||
|
},
|
||
|
"type": "carpet"
|
||
|
}
|
||
|
],
|
||
|
"choropleth": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"type": "choropleth"
|
||
|
}
|
||
|
],
|
||
|
"contour": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "contour"
|
||
|
}
|
||
|
],
|
||
|
"contourcarpet": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"type": "contourcarpet"
|
||
|
}
|
||
|
],
|
||
|
"heatmap": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "heatmap"
|
||
|
}
|
||
|
],
|
||
|
"heatmapgl": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "heatmapgl"
|
||
|
}
|
||
|
],
|
||
|
"histogram": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"pattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
}
|
||
|
},
|
||
|
"type": "histogram"
|
||
|
}
|
||
|
],
|
||
|
"histogram2d": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "histogram2d"
|
||
|
}
|
||
|
],
|
||
|
"histogram2dcontour": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "histogram2dcontour"
|
||
|
}
|
||
|
],
|
||
|
"mesh3d": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"type": "mesh3d"
|
||
|
}
|
||
|
],
|
||
|
"parcoords": [
|
||
|
{
|
||
|
"line": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "parcoords"
|
||
|
}
|
||
|
],
|
||
|
"pie": [
|
||
|
{
|
||
|
"automargin": true,
|
||
|
"type": "pie"
|
||
|
}
|
||
|
],
|
||
|
"scatter": [
|
||
|
{
|
||
|
"fillpattern": {
|
||
|
"fillmode": "overlay",
|
||
|
"size": 10,
|
||
|
"solidity": 0.2
|
||
|
},
|
||
|
"type": "scatter"
|
||
|
}
|
||
|
],
|
||
|
"scatter3d": [
|
||
|
{
|
||
|
"line": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatter3d"
|
||
|
}
|
||
|
],
|
||
|
"scattercarpet": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattercarpet"
|
||
|
}
|
||
|
],
|
||
|
"scattergeo": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattergeo"
|
||
|
}
|
||
|
],
|
||
|
"scattergl": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattergl"
|
||
|
}
|
||
|
],
|
||
|
"scattermapbox": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scattermapbox"
|
||
|
}
|
||
|
],
|
||
|
"scatterpolar": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatterpolar"
|
||
|
}
|
||
|
],
|
||
|
"scatterpolargl": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatterpolargl"
|
||
|
}
|
||
|
],
|
||
|
"scatterternary": [
|
||
|
{
|
||
|
"marker": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"type": "scatterternary"
|
||
|
}
|
||
|
],
|
||
|
"surface": [
|
||
|
{
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"colorscale": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"type": "surface"
|
||
|
}
|
||
|
],
|
||
|
"table": [
|
||
|
{
|
||
|
"cells": {
|
||
|
"fill": {
|
||
|
"color": "#EBF0F8"
|
||
|
},
|
||
|
"line": {
|
||
|
"color": "white"
|
||
|
}
|
||
|
},
|
||
|
"header": {
|
||
|
"fill": {
|
||
|
"color": "#C8D4E3"
|
||
|
},
|
||
|
"line": {
|
||
|
"color": "white"
|
||
|
}
|
||
|
},
|
||
|
"type": "table"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
"layout": {
|
||
|
"annotationdefaults": {
|
||
|
"arrowcolor": "#2a3f5f",
|
||
|
"arrowhead": 0,
|
||
|
"arrowwidth": 1
|
||
|
},
|
||
|
"autotypenumbers": "strict",
|
||
|
"coloraxis": {
|
||
|
"colorbar": {
|
||
|
"outlinewidth": 0,
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"colorscale": {
|
||
|
"diverging": [
|
||
|
[
|
||
|
0,
|
||
|
"#8e0152"
|
||
|
],
|
||
|
[
|
||
|
0.1,
|
||
|
"#c51b7d"
|
||
|
],
|
||
|
[
|
||
|
0.2,
|
||
|
"#de77ae"
|
||
|
],
|
||
|
[
|
||
|
0.3,
|
||
|
"#f1b6da"
|
||
|
],
|
||
|
[
|
||
|
0.4,
|
||
|
"#fde0ef"
|
||
|
],
|
||
|
[
|
||
|
0.5,
|
||
|
"#f7f7f7"
|
||
|
],
|
||
|
[
|
||
|
0.6,
|
||
|
"#e6f5d0"
|
||
|
],
|
||
|
[
|
||
|
0.7,
|
||
|
"#b8e186"
|
||
|
],
|
||
|
[
|
||
|
0.8,
|
||
|
"#7fbc41"
|
||
|
],
|
||
|
[
|
||
|
0.9,
|
||
|
"#4d9221"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#276419"
|
||
|
]
|
||
|
],
|
||
|
"sequential": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
],
|
||
|
"sequentialminus": [
|
||
|
[
|
||
|
0,
|
||
|
"#0d0887"
|
||
|
],
|
||
|
[
|
||
|
0.1111111111111111,
|
||
|
"#46039f"
|
||
|
],
|
||
|
[
|
||
|
0.2222222222222222,
|
||
|
"#7201a8"
|
||
|
],
|
||
|
[
|
||
|
0.3333333333333333,
|
||
|
"#9c179e"
|
||
|
],
|
||
|
[
|
||
|
0.4444444444444444,
|
||
|
"#bd3786"
|
||
|
],
|
||
|
[
|
||
|
0.5555555555555556,
|
||
|
"#d8576b"
|
||
|
],
|
||
|
[
|
||
|
0.6666666666666666,
|
||
|
"#ed7953"
|
||
|
],
|
||
|
[
|
||
|
0.7777777777777778,
|
||
|
"#fb9f3a"
|
||
|
],
|
||
|
[
|
||
|
0.8888888888888888,
|
||
|
"#fdca26"
|
||
|
],
|
||
|
[
|
||
|
1,
|
||
|
"#f0f921"
|
||
|
]
|
||
|
]
|
||
|
},
|
||
|
"colorway": [
|
||
|
"#636efa",
|
||
|
"#EF553B",
|
||
|
"#00cc96",
|
||
|
"#ab63fa",
|
||
|
"#FFA15A",
|
||
|
"#19d3f3",
|
||
|
"#FF6692",
|
||
|
"#B6E880",
|
||
|
"#FF97FF",
|
||
|
"#FECB52"
|
||
|
],
|
||
|
"font": {
|
||
|
"color": "#2a3f5f"
|
||
|
},
|
||
|
"geo": {
|
||
|
"bgcolor": "white",
|
||
|
"lakecolor": "white",
|
||
|
"landcolor": "#E5ECF6",
|
||
|
"showlakes": true,
|
||
|
"showland": true,
|
||
|
"subunitcolor": "white"
|
||
|
},
|
||
|
"hoverlabel": {
|
||
|
"align": "left"
|
||
|
},
|
||
|
"hovermode": "closest",
|
||
|
"mapbox": {
|
||
|
"style": "light"
|
||
|
},
|
||
|
"paper_bgcolor": "white",
|
||
|
"plot_bgcolor": "#E5ECF6",
|
||
|
"polar": {
|
||
|
"angularaxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"bgcolor": "#E5ECF6",
|
||
|
"radialaxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"scene": {
|
||
|
"xaxis": {
|
||
|
"backgroundcolor": "#E5ECF6",
|
||
|
"gridcolor": "white",
|
||
|
"gridwidth": 2,
|
||
|
"linecolor": "white",
|
||
|
"showbackground": true,
|
||
|
"ticks": "",
|
||
|
"zerolinecolor": "white"
|
||
|
},
|
||
|
"yaxis": {
|
||
|
"backgroundcolor": "#E5ECF6",
|
||
|
"gridcolor": "white",
|
||
|
"gridwidth": 2,
|
||
|
"linecolor": "white",
|
||
|
"showbackground": true,
|
||
|
"ticks": "",
|
||
|
"zerolinecolor": "white"
|
||
|
},
|
||
|
"zaxis": {
|
||
|
"backgroundcolor": "#E5ECF6",
|
||
|
"gridcolor": "white",
|
||
|
"gridwidth": 2,
|
||
|
"linecolor": "white",
|
||
|
"showbackground": true,
|
||
|
"ticks": "",
|
||
|
"zerolinecolor": "white"
|
||
|
}
|
||
|
},
|
||
|
"shapedefaults": {
|
||
|
"line": {
|
||
|
"color": "#2a3f5f"
|
||
|
}
|
||
|
},
|
||
|
"ternary": {
|
||
|
"aaxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"baxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
},
|
||
|
"bgcolor": "#E5ECF6",
|
||
|
"caxis": {
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": ""
|
||
|
}
|
||
|
},
|
||
|
"title": {
|
||
|
"x": 0.05
|
||
|
},
|
||
|
"xaxis": {
|
||
|
"automargin": true,
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": "",
|
||
|
"title": {
|
||
|
"standoff": 15
|
||
|
},
|
||
|
"zerolinecolor": "white",
|
||
|
"zerolinewidth": 2
|
||
|
},
|
||
|
"yaxis": {
|
||
|
"automargin": true,
|
||
|
"gridcolor": "white",
|
||
|
"linecolor": "white",
|
||
|
"ticks": "",
|
||
|
"title": {
|
||
|
"standoff": 15
|
||
|
},
|
||
|
"zerolinecolor": "white",
|
||
|
"zerolinewidth": 2
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"title": {
|
||
|
"text": "COT Data: Open Interest Over Time (Silver)"
|
||
|
},
|
||
|
"width": 800,
|
||
|
"xaxis": {
|
||
|
"autorange": true,
|
||
|
"dtick": "M1",
|
||
|
"range": [
|
||
|
"2023-08-01",
|
||
|
"2024-01-02"
|
||
|
],
|
||
|
"tickangle": 45,
|
||
|
"tickformat": "%d %b %Y",
|
||
|
"ticklabelmode": "period",
|
||
|
"title": {
|
||
|
"text": "Date"
|
||
|
},
|
||
|
"type": "date"
|
||
|
},
|
||
|
"yaxis": {
|
||
|
"autorange": true,
|
||
|
"range": [
|
||
|
122501.22222222222,
|
||
|
145276.77777777778
|
||
|
],
|
||
|
"title": {
|
||
|
"text": "Open Interest"
|
||
|
},
|
||
|
"type": "linear"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"image/png": "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
|
||
|
"text/html": [
|
||
|
"<div> <div id=\"027bacce-a366-44ec-9a84-88a9bb2851f9\" class=\"plotly-graph-div\" style=\"height:600px; width:800px;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"027bacce-a366-44ec-9a84-88a9bb2851f9\")) { Plotly.newPlot( \"027bacce-a366-44ec-9a84-88a9bb2851f9\", [{\"line\":{\"color\":\"blue\",\"width\":2},\"mode\":\"lines\",\"name\":\"Open Interest\",\"x\":[\"2023-08-01T00:00:00\",\"2023-08-08T00:00:00\",\"2023-08-15T00:00:00\",\"2023-08-22T00:00:00\",\"2023-08-29T00:00:00\",\"2023-09-05T00:00:00\",\"2023-09-12T00:00:00\",\"2023-09-19T00:00:00\",\"2023-09-26T00:00:00\",\"2023-10-03T00:00:00\",\"2023-10-10T00:00:00\",\"2023-10-17T00:00:00\",\"2023-10-24T00:00:00\",\"2023-10-31T00:00:00\",\"2023-11-07T00:00:00\",\"2023-11-14T00:00:00\",\"2023-11-21T00:00:00\",\"2023-11-28T00:00:00\",\"2023-12-05T00:00:00\",\"2023-12-12T00:00:00\",\"2023-12-19T00:00:00\",\"2023-12-26T00:00:00\",\"2024-01-02T00:00:00\"],\"y\":[144138.0,137631.0,138215.0,136680.0,134993.0,128279.0,125292.0,125749.0,126206.0,125847.0,126971.0,123640.0,123980.0,126549.0,131073.0,134826.0,134333.0,139144.0,139753.0,134281.0,127549.0,131408.0,134725.0],\"type\":\"scatter\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.88888888888888
|
||
|
" \n",
|
||
|
"var gd = document.getElementById('027bacce-a366-44ec-9a84-88a9bb2851f9');\n",
|
||
|
"var x = new MutationObserver(function (mutations, observer) {{\n",
|
||
|
" var display = window.getComputedStyle(gd).display;\n",
|
||
|
" if (!display || display === 'none') {{\n",
|
||
|
" console.log([gd, 'removed!']);\n",
|
||
|
" Plotly.purge(gd);\n",
|
||
|
" observer.disconnect();\n",
|
||
|
" }}\n",
|
||
|
"}});\n",
|
||
|
"\n",
|
||
|
"// Listen for the removal of the full notebook cells\n",
|
||
|
"var notebookContainer = gd.closest('#notebook-container');\n",
|
||
|
"if (notebookContainer) {{\n",
|
||
|
" x.observe(notebookContainer, {childList: true});\n",
|
||
|
"}}\n",
|
||
|
"\n",
|
||
|
"// Listen for the clearing of the current output cell\n",
|
||
|
"var outputEl = gd.closest('.output');\n",
|
||
|
"if (outputEl) {{\n",
|
||
|
" x.observe(outputEl, {childList: true});\n",
|
||
|
"}}\n",
|
||
|
"\n",
|
||
|
" }) }; }); </script> </div>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"\n",
|
||
|
"Metrics for Open Interest:\n",
|
||
|
"Volatility (Standard Deviation): 5894.28\n",
|
||
|
"Average: 131794.00\n",
|
||
|
"Median: 131408.00\n",
|
||
|
"Minimum: 123640.00\n",
|
||
|
"Maximum: 144138.00\n",
|
||
|
"Typical Range: 126377.50 to 135836.50\n",
|
||
|
"\n",
|
||
|
"Overall trend: Downward\n",
|
||
|
"\n",
|
||
|
"Significant points:\n",
|
||
|
"Peak on 2023-10-10 00:00:00: 126971.00\n",
|
||
|
"Peak on 2023-12-05 00:00:00: 139753.00\n",
|
||
|
"Trough on 2023-09-12 00:00:00: 125292.00\n",
|
||
|
"Trough on 2023-10-17 00:00:00: 123640.00\n",
|
||
|
"Trough on 2023-12-19 00:00:00: 127549.00\n",
|
||
|
"\n",
|
||
|
"Sudden changes (>5% day-to-day):\n",
|
||
|
"2023-12-19 00:00:00: -5.01% change\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import pandas as pd\n",
|
||
|
"import plotly.graph_objects as go\n",
|
||
|
"import numpy as np\n",
|
||
|
"from scipy import signal\n",
|
||
|
"\n",
|
||
|
"# Assuming df is your DataFrame with the COT data\n",
|
||
|
"# If not, you'll need to load your data here\n",
|
||
|
"\n",
|
||
|
"# Create the main figure\n",
|
||
|
"fig = go.Figure()\n",
|
||
|
"\n",
|
||
|
"# Add trace for Open Interest\n",
|
||
|
"fig.add_trace(go.Scatter(\n",
|
||
|
" x=df.index, \n",
|
||
|
" y=df['Open Interest'], \n",
|
||
|
" mode='lines',\n",
|
||
|
" name='Open Interest',\n",
|
||
|
" line=dict(width=2, color='blue')\n",
|
||
|
"))\n",
|
||
|
"\n",
|
||
|
"# Update layout\n",
|
||
|
"fig.update_layout(\n",
|
||
|
" title='COT Data: Open Interest Over Time (Silver)',\n",
|
||
|
" yaxis_title='Open Interest',\n",
|
||
|
" xaxis_title='Date',\n",
|
||
|
" height=600,\n",
|
||
|
" width=800,\n",
|
||
|
" hovermode='x unified'\n",
|
||
|
")\n",
|
||
|
"\n",
|
||
|
"# Improve date labeling for better readability\n",
|
||
|
"fig.update_xaxes(\n",
|
||
|
" tickformat=\"%d %b %Y\",\n",
|
||
|
" tickangle=45,\n",
|
||
|
" dtick=\"M1\",\n",
|
||
|
" ticklabelmode=\"period\"\n",
|
||
|
")\n",
|
||
|
"\n",
|
||
|
"# Show the plot\n",
|
||
|
"fig.show()\n",
|
||
|
"\n",
|
||
|
"# Calculate and print metrics\n",
|
||
|
"print(\"\\nMetrics for Open Interest:\")\n",
|
||
|
"data = df['Open Interest']\n",
|
||
|
"\n",
|
||
|
"print(f\"Volatility (Standard Deviation): {data.std():.2f}\")\n",
|
||
|
"print(f\"Average: {data.mean():.2f}\")\n",
|
||
|
"print(f\"Median: {data.median():.2f}\")\n",
|
||
|
"print(f\"Minimum: {data.min():.2f}\")\n",
|
||
|
"print(f\"Maximum: {data.max():.2f}\")\n",
|
||
|
"\n",
|
||
|
"# Calculate typical range\n",
|
||
|
"typical_low = np.percentile(data, 25)\n",
|
||
|
"typical_high = np.percentile(data, 75)\n",
|
||
|
"print(f\"Typical Range: {typical_low:.2f} to {typical_high:.2f}\")\n",
|
||
|
"\n",
|
||
|
"# Identify trends\n",
|
||
|
"def identify_trend(series):\n",
|
||
|
" # Calculate the overall trend\n",
|
||
|
" trend = np.polyfit(range(len(series)), series, 1)[0]\n",
|
||
|
" if trend > 0:\n",
|
||
|
" return \"Upward\"\n",
|
||
|
" elif trend < 0:\n",
|
||
|
" return \"Downward\"\n",
|
||
|
" else:\n",
|
||
|
" return \"Stable\"\n",
|
||
|
"\n",
|
||
|
"trend = identify_trend(data)\n",
|
||
|
"print(f\"\\nOverall trend: {trend}\")\n",
|
||
|
"\n",
|
||
|
"# Identify significant points\n",
|
||
|
"def find_peaks(series, prominence=1000):\n",
|
||
|
" peaks, _ = signal.find_peaks(series, prominence=prominence)\n",
|
||
|
" troughs, _ = signal.find_peaks(-series, prominence=prominence)\n",
|
||
|
" return peaks, troughs\n",
|
||
|
"\n",
|
||
|
"peaks, troughs = find_peaks(data)\n",
|
||
|
"\n",
|
||
|
"print(\"\\nSignificant points:\")\n",
|
||
|
"for peak in peaks:\n",
|
||
|
" print(f\"Peak on {df.index[peak]}: {data.iloc[peak]:.2f}\")\n",
|
||
|
"for trough in troughs:\n",
|
||
|
" print(f\"Trough on {df.index[trough]}: {data.iloc[trough]:.2f}\")\n",
|
||
|
"\n",
|
||
|
"# Identify sudden changes\n",
|
||
|
"pct_change = data.pct_change()\n",
|
||
|
"sudden_changes = pct_change[abs(pct_change) > 0.05] # 5% threshold\n",
|
||
|
"if not sudden_changes.empty:\n",
|
||
|
" print(\"\\nSudden changes (>5% day-to-day):\")\n",
|
||
|
" for date, change in sudden_changes.items():\n",
|
||
|
" print(f\"{date}: {change*100:.2f}% change\")\n",
|
||
|
"else:\n",
|
||
|
" print(\"\\nNo sudden changes above 5% threshold detected.\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"id": "10913a96-3d9a-4224-8984-6fb9abf31e72",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "Python 3 (ipykernel)",
|
||
|
"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.9"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 5
|
||
|
}
|