diff --git a/Finacial Domain/Graph Neural Networks for Network-Based Hedging/Graph_Neural_Networks_for_Network_Based_Hedging.ipynb b/Finacial Domain/Graph Neural Networks for Network-Based Hedging/Graph_Neural_Networks_for_Network_Based_Hedging.ipynb new file mode 100644 index 00000000..b0bbe19e --- /dev/null +++ b/Finacial Domain/Graph Neural Networks for Network-Based Hedging/Graph_Neural_Networks_for_Network_Based_Hedging.ipynb @@ -0,0 +1,387 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "RPX9t2t2ICPH" + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "e4somouYIajN" + }, + "execution_count": 14, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "QGpWvPjRIc4i", + "outputId": "133d28c4-e96b-42ab-9025-78de24b7b121" + }, + "execution_count": 15, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Data Preparation\n" + ], + "metadata": { + "id": "ToziI1fJIZZ5" + } + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import networkx as nx\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Load historical market data and set the date column as the index\n", + "data = pd.read_csv('/content/drive/MyDrive/GirlsScriptOpenSource/Hedging-of-Financial-Derivatives/Graph Neural Networks for Network-Based Hedging/synthetic_market_data (1).csv', index_col=0, parse_dates=True)\n", + "\n", + "# Calculate correlation matrix\n", + "correlation_matrix = data.corr()\n", + "\n", + "# Create a graph\n", + "G = nx.Graph()\n", + "\n", + "# Add nodes (financial instruments)\n", + "for column in data.columns:\n", + " G.add_node(column)\n", + "\n", + "# Add edges (relationships based on correlation)\n", + "threshold = 0.5 # Define a correlation threshold to create edges\n", + "for i in range(len(correlation_matrix.columns)):\n", + " for j in range(i+1, len(correlation_matrix.columns)):\n", + " if abs(correlation_matrix.iloc[i, j]) > threshold:\n", + " G.add_edge(correlation_matrix.columns[i], correlation_matrix.columns[j], weight=correlation_matrix.iloc[i, j])\n", + "\n", + "# Visualize the graph\n", + "pos = nx.spring_layout(G)\n", + "nx.draw(G, pos, with_labels=True, node_size=500, node_color='skyblue', edge_color='gray', font_size=10)\n", + "plt.show()\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 516 + }, + "id": "K1FUlcjfIfTk", + "outputId": "944fad58-c4d6-43c1-dab3-433260d96f99" + }, + "execution_count": 16, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "2. Graph Neural Network Model Development" + ], + "metadata": { + "id": "kUjAHrjOIgft" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install torch-geometric" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uUoRitB9JgTn", + "outputId": "ea94d7b5-b8e1-4b08-8260-083a281dfcc0" + }, + "execution_count": 17, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: torch-geometric in /usr/local/lib/python3.10/dist-packages (2.5.3)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (4.66.4)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (1.25.2)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (1.11.4)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (2023.6.0)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (3.1.4)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (3.9.5)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (2.31.0)\n", + "Requirement already satisfied: pyparsing in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (3.1.2)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (1.2.2)\n", + "Requirement already satisfied: psutil>=5.8.0 in /usr/local/lib/python3.10/dist-packages (from torch-geometric) (5.9.5)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch-geometric) (1.3.1)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch-geometric) (23.2.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch-geometric) (1.4.1)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch-geometric) (6.0.5)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch-geometric) (1.9.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch-geometric) (4.0.3)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch-geometric) (2.1.5)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->torch-geometric) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->torch-geometric) (3.7)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->torch-geometric) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->torch-geometric) (2024.7.4)\n", + "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->torch-geometric) (1.4.2)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->torch-geometric) (3.5.0)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "import torch.nn.functional as F\n", + "from torch_geometric.nn import GCNConv\n", + "from torch_geometric.data import Data\n", + "from torch_geometric.utils import from_networkx\n", + "\n", + "# Convert NetworkX graph to PyTorch Geometric data format\n", + "data_pg = from_networkx(G)\n", + "\n", + "# Assume the features are the log returns of the prices\n", + "log_returns = np.log(data / data.shift(1)).dropna()\n", + "data_pg.x = torch.tensor(log_returns.values, dtype=torch.float)\n", + "\n", + "# Generate synthetic target labels (e.g., next day's returns)\n", + "data_pg.y = torch.tensor(log_returns.shift(-1).dropna().values.mean(axis=1), dtype=torch.float)\n", + "\n", + "# Define a GNN model\n", + "class GCN(torch.nn.Module):\n", + " def __init__(self):\n", + " super(GCN, self).__init__()\n", + " self.conv1 = GCNConv(data_pg.num_node_features, 16)\n", + " self.conv2 = GCNConv(16, 16)\n", + " self.fc = torch.nn.Linear(16, 1) # Output layer (e.g., predict risk metric)\n", + "\n", + " def forward(self, data):\n", + " x, edge_index = data.x, data.edge_index\n", + " x = self.conv1(x, edge_index)\n", + " x = F.relu(x)\n", + " x = self.conv2(x, edge_index)\n", + " x = F.relu(x)\n", + " x = torch.mean(x, dim=0) # Aggregate node features\n", + " x = self.fc(x)\n", + " return x\n", + "\n", + "# Initialize the model, optimizer, and loss function\n", + "model = GCN()\n", + "optimizer = torch.optim.Adam(model.parameters(), lr=0.01)\n", + "criterion = torch.nn.MSELoss() # Assume we're predicting a continuous variable\n", + "\n", + "# Training loop\n", + "def train():\n", + " model.train()\n", + " optimizer.zero_grad()\n", + " out = model(data_pg)\n", + " loss = criterion(out, data_pg.y)\n", + " loss.backward()\n", + " optimizer.step()\n", + " return loss.item()\n", + "\n", + "# Train the model\n", + "for epoch in range(200):\n", + " loss = train()\n", + " if epoch % 10 == 0:\n", + " print(f'Epoch {epoch}, Loss: {loss}')\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2akLWuZHInjV", + "outputId": "c865f8c5-a7b8-41e5-a024-74547da45a7c" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/loss.py:535: UserWarning: Using a target size (torch.Size([250])) that is different to the input size (torch.Size([1])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n", + " return F.mse_loss(input, target, reduction=self.reduction)\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 0, Loss: 0.03008471243083477\n", + "Epoch 10, Loss: 0.003490667324513197\n", + "Epoch 20, Loss: 0.00020153068180661649\n", + "Epoch 30, Loss: 0.00016223936108872294\n", + "Epoch 40, Loss: 0.0001478358608437702\n", + "Epoch 50, Loss: 3.3796044590417296e-05\n", + "Epoch 60, Loss: 1.892329783004243e-05\n", + "Epoch 70, Loss: 2.2029700630810112e-05\n", + "Epoch 80, Loss: 2.0268300431780517e-05\n", + "Epoch 90, Loss: 1.862957469711546e-05\n", + "Epoch 100, Loss: 1.812954906199593e-05\n", + "Epoch 110, Loss: 1.8053289750241674e-05\n", + "Epoch 120, Loss: 1.805208194127772e-05\n", + "Epoch 130, Loss: 1.805333340598736e-05\n", + "Epoch 140, Loss: 1.8052629457088187e-05\n", + "Epoch 150, Loss: 1.805178908398375e-05\n", + "Epoch 160, Loss: 1.805130705179181e-05\n", + "Epoch 170, Loss: 1.805109241104219e-05\n", + "Epoch 180, Loss: 1.805100509955082e-05\n", + "Epoch 190, Loss: 1.8050975995720364e-05\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "3. Evaluation and Hedging Strategy Implementation" + ], + "metadata": { + "id": "izp8Gy6cIo0P" + } + }, + { + "cell_type": "code", + "source": [ + "# Extract features using the trained GNN model\n", + "model.eval()\n", + "with torch.no_grad():\n", + " features = model(data_pg).view(-1, 1) # Ensure features have the correct shape\n", + "\n", + "# Implement a simple hedging strategy based on extracted features\n", + "# Here, we'll assume a simple threshold-based strategy for illustration\n", + "hedge_threshold = 0.1\n", + "\n", + "# Simulated backtesting\n", + "def backtest(features, market_data):\n", + " portfolio_value = 100000 # Initial portfolio value\n", + " hedge_positions = []\n", + "\n", + " for i in range(len(features)):\n", + " signal = features[i].item() # Example feature signal\n", + " if signal > hedge_threshold:\n", + " hedge_positions.append('Hedge') # Take a hedge position\n", + " else:\n", + " hedge_positions.append('No Hedge') # No hedge\n", + "\n", + " return hedge_positions\n", + "\n", + "# Backtest the strategy\n", + "market_data = data_pg.x.numpy() # Use the log returns as market data\n", + "hedge_positions = backtest(features.numpy(), market_data)\n", + "\n", + "# Evaluate the performance\n", + "print(\"Hedge Positions:\", hedge_positions)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tx1LTajwIsF3", + "outputId": "ce174a1e-ecdc-4f10-a6bc-59bc68d77fe1" + }, + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Hedge Positions: ['No Hedge']\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + " Plot Hedging Positions Over Time" + ], + "metadata": { + "id": "g9J2-bPExdrD" + } + }, + { + "cell_type": "code", + "source": [ + "def plot_hedging_positions(hedge_positions):\n", + " hedge_indicator = [1 if pos == 'Hedge' else 0 for pos in hedge_positions]\n", + " plt.figure(figsize=(12, 6))\n", + " plt.plot(hedge_indicator, marker='o', linestyle='-', color='b')\n", + " plt.xlabel('Time (Days)')\n", + " plt.ylabel('Hedging Position')\n", + " plt.title('Hedging Positions Over Time')\n", + " plt.show()\n", + "\n", + "plot_hedging_positions(hedge_positions)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 564 + }, + "id": "gmiSZsqZxe_L", + "outputId": "e77a85f1-8506-4aa7-fa62-7cbde06bbcd9" + }, + "execution_count": 20, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/0AAAIjCAYAAABRfHuLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABK8klEQVR4nO3deVwW9f7//+cFCKgIiGyiKG4FKYbhhmWacKTyq5J2NHLPjlm55JZ6cqlTHfO0uGRm2SnzpIWWWlnpMbWyJE3M3NA8ibvgCrgCwvz+8Of16Yql68ILkPFxv93mJtd73jPzel9O5POa98xlMQzDEAAAAAAAMB2Xii4AAAAAAACUDUI/AAAAAAAmRegHAAAAAMCkCP0AAAAAAJgUoR8AAAAAAJMi9AMAAAAAYFKEfgAAAAAATIrQDwAAAACASRH6AQAAAAAwKUI/AADF6Nixozp27FiqbQcOHKiwsDCn1nOjWrBggSwWiw4cOPCnfb/55htZLBZ98803ZV4XbFksFj377LMVXQYAoJwR+gEAlcK1YLlly5Yi13fs2FHNmjUr56puTB07dpTFYrEufn5+atWqld59910VFBSUSw1z587VggULyuVYznbhwgU9//zzat68uapVqyYfHx+1b99eCxculGEYFV2e1bX/Jv5suVk+fAIAFM2togsAAMCM5s+fX24Buyh169bVtGnTJEknT57UwoULNXjwYP3666966aWXnHqsfv366aGHHpKHh4e1be7cufL399fAgQNt+t599926dOmS3N3dnVqDs2RkZCg2Nlapqal66KGHNGzYMF2+fFmffPKJBgwYoC+//FKLFi2Sq6trRZequ+++W//5z39s2h599FG1bt1aQ4YMsbZ5eXlJki5duiQ3N/7pBwA3G37zAwBQBqpUqVKhx/fx8VHfvn2trx977DHdeuutmjNnjp5//nmn1ufq6mp3CHZxcZGnp6fTju1sAwYMUGpqqpYvX65u3bpZ20eMGKFx48bplVdeUYsWLTR+/Phyq6mgoEC5ubmF3reGDRuqYcOGNm1Dhw5Vw4YNbf7ur7mR33cAQNlhej8AwNQ++OADRUdHq2rVqvLz89NDDz2kw4cPF+r39ttvq1GjRqpatapat26tDRs2FLm/gwcPqlu3bqpevboCAwM1atQorV69utB96n+8p//AgQOyWCx65ZVXrMfy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hWn+/PmyWCzy9PRUkyZNFBgYaDOWNm3aFNouIiLCur5Zs2YaP368vv76a7Vu3VqNGzdW586d9fDDD+vOO++0q44/c228t956a6F14eHh+v77723aPD09FRAQYNNWs2ZN6/snSU888YSWLFmi++67T3Xq1FHnzp3Vq1cv3XvvvSXWci3Qnzt3zuaWgt/74wcDbm5u6tmzpxYvXqycnBx5eHho2bJlysvLswn9+/btU2pqaqHarzlx4oTN6wYNGpRYqzP98Zz08fGRp6en/P39C7WfPn3a+trRMQEAKgahHwBgSgUFBbJYLPrqq6+KfLL876+il6finnJvOPn736tXr664uLjr3k9ERIT27t2rlStXatWqVfrkk080d+5cTZkyRc8995wTKnWMPd8SEBgYqG3btmn16tX66quv9NVXX+m9995T//799f777xe7XUREhFasWKHt27db71v/o+3bt0uSzVX4hx56SG+99Za++uorJSQkaMmSJQoPD9ftt99u7VNQUKDIyEi99tprRe7398+OkKSqVav+6Tidpaj31J7z1NExAQAqBqEfAGBKjRo1kmEYatCggW655ZZi+9WvX1/S1auW16YlS1cfDJiWlmYT3OrXr6/du3fLMAybq/3/+9//nFb3tXqK2qezj7N3795C7Xv27LGpQ7r6AULv3r3Vu3dv5ebmqkePHnrxxRc1ceLEYr8G7o+zIUqqQ5L27t1r8/5fa/t9HY5wd3dX165d1bVrVxUUFOiJJ57QW2+9pcmTJxc7M+P//b//p2nTpmnhwoVFhv78/HwtXrxYNWvWtJnpcPfdd6t27dpKSkrSXXfdpXXr1lkfYHhNo0aN9Msvvyg2Ntbu9+ZGZ8YxAYAZcU8/AMCUevToIVdXVz333HOFrqIbhmGdptyyZUsFBARo3rx5ys3NtfZZsGCBMjMzbbaLj4/X0aNH9dlnn1nbLl++rPnz5zut7pCQEDVr1kwLFy7U+fPnre3ffvutduzY4bTj3H///dq8ebOSk5OtbRcuXNDbb7+tsLAw65Xs30/nlq6G6dtuu02GYRT5jQnXVK9evdD7V5SWLVsqMDBQ8+bNs/mat6+++kqpqanq0qWLgyMrXLOLi4v1mQ8lfZVcu3btFBcXp/fee08rV64stP6ZZ57Rr7/+qqefftrmSryLi4sefPBBff755/rPf/6jK1eu2Eztl6RevXrp6NGjRZ4rly5d0oULFxwa443AjGMCADPiSj8AwJQaNWqkF154QRMnTtSBAweUkJCgGjVqKC0tTcuXL9eQIUM0duxYValSRS+88IIee+wxderUSb1791ZaWpree++9Qvf0P/bYY5ozZ44SExM1cuRI1a5dW4sWLbJe7XbW1c5//vOf6t69u+68804NGjRIZ8+e1Zw5c9SsWTObDwKux4QJE/Thhx/qvvvu04gRI+Tn56f3339faWlp+uSTT+TicvW6QOfOnRUcHKw777xTQUFBSk1N1Zw5c9SlS5cSH3gXHR2tN998Uy+88IIaN26swMDAQlfypavPTpg+fboGDRqkDh06KDEx0fqVfWFhYRo1apTDY3v00Ud15swZderUSXXr1tXBgwf1+uuvKyoqyvrMguIsXLhQsbGx6t69ux5++GG1b99eOTk5WrZsmb755hv17t1b48aNK7Rd79699frrr2vq1KmKjIwsdJx+/fppyZIlGjp0qNavX68777xT+fn52rNnj5YsWaLVq1cX+ayKG5kZxwQAZkToBwCY1oQJE3TLLbdoxowZ1vvPQ0ND1blzZ5sn8A8ZMkT5+fl6+eWXNW7cOEVGRuqzzz7T5MmTbfbn5eWldevWafjw4Zo1a5a8vLzUv39/tWvXTj179ix2qrujunbtqg8//FDPPvusJkyYoCZNmmjBggV6//33tWvXLqccIygoSBs3btT48eP1+uuv6/Lly2revLk+//xzm6vrjz32mBYtWqTXXntN58+fV926dTVixAhNmjSpxP1PmTJFBw8e1L/+9S+dO3dOHTp0KDL0S1e/KaFatWp66aWXNH78eFWvXl0PPPCApk+fXuwD9UrSt29fvf3225o7d64yMzMVHBys3r1769lnn7V+mFGc2rVra/PmzXr11Ve1dOlSffLJJ3Jzc1Pz5s21YMEC9e/fv8gPd9q1a6fQ0FAdPny40FV+6epsgBUrVmjGjBlauHChli9frmrVqqlhw4YaOXJkibeg3KjMOCYAMCOL4ewnBwEAcJOZOXOmRo0apSNHjqhOnTpldpyoqCgFBAQ4/FV0AADg5sU9/QAAOODSpUs2ry9fvqy33npLTZo0cVrgz8vL05UrV2zavvnmG/3yyy/q2LGjU44BAABuDkzvBwDAAT169FC9evUUFRWlrKwsffDBB9qzZ48W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\n" + }, + "metadata": {} + } + ] + } + ] +} \ No newline at end of file diff --git a/Finacial Domain/Graph Neural Networks for Network-Based Hedging/requirement.txt b/Finacial Domain/Graph Neural Networks for Network-Based Hedging/requirement.txt new file mode 100644 index 00000000..ea0737ba --- /dev/null +++ b/Finacial Domain/Graph Neural Networks for Network-Based Hedging/requirement.txt @@ -0,0 +1,9 @@ +import pandas as pd +import numpy as np +import networkx as nx +import matplotlib.pyplot as plt +import torch +import torch.nn.functional as F +from torch_geometric.nn import GCNConv +from torch_geometric.data import Data +from torch_geometric.utils import from_networkx diff --git a/Finacial Domain/Graph Neural Networks for Network-Based Hedging/synthetic_market_data (1).csv b/Finacial Domain/Graph Neural Networks for Network-Based Hedging/synthetic_market_data (1).csv new file mode 100644 index 00000000..374167dd --- /dev/null +++ b/Finacial Domain/Graph Neural Networks for Network-Based Hedging/synthetic_market_data (1).csv @@ -0,0 +1,253 @@ +,Instrument_1,Instrument_2,Instrument_3,Instrument_4,Instrument_5,Instrument_6,Instrument_7,Instrument_8,Instrument_9,Instrument_10 +2023-01-02,1.0051805142288628,0.9988180560349333,1.0066992254732703,1.015549960300854,0.9978607577001327,0.9978609215266718,1.0161206866301409,1.0079054314998803,0.9955153423844784,1.0056414538403562 +2023-01-03,0.9955756395197416,0.9955526214721628,1.0026230569253698,0.9812452973107297,0.9830953364639876,0.9945918019528667,0.9901208117745129,1.003348065618881,0.9911590721273712,0.9861734401955451 +2023-01-04,1.0149673938471329,0.9979443527379455,1.0008756652179962,0.9860507236267883,0.9947698976160901,1.001310083307464,0.9887537811118621,1.0039648193659623,0.994210437586316,0.997286750036395 +2023-01-05,0.9941998202479313,1.0188991521196475,1.0000650298669709,0.9896765471490809,1.0084610431123715,0.988063377030374,1.0022912568763709,0.9807902043691303,0.9870033351375302,1.0021709654991815 +2023-01-06,1.0076135022364106,1.0019155150714534,0.9990439744600075,0.9971929103089887,0.9855206291805547,0.9930259899831607,0.9956033061731637,1.0108294407169132,1.003642801828829,0.9827206291140114 +2023-01-09,1.003446766178259,0.9963558333468042,0.9934523101514264,1.0063367557095708,1.010565419223248,1.0095581917005398,0.9918412891908014,0.9971120544025149,1.0035188108437938,1.0100051716354765 +2023-01-10,0.9954187835536299,0.9983447816208093,0.9891954433544865,0.9883068364497346,1.0083600095571876,1.0138575380568846,0.9994800340133887,1.0102878891289921,1.0038236518260661,0.9937683005393779 +2023-01-11,1.003821238440769,1.015702372374623,0.9998417521314156,1.0159726571682144,0.9743375731522101,1.008454564701506,1.0010710438406207,0.997213815133053,1.0011182325216361,0.9805166139285869 +2023-01-12,0.9980052732386447,1.0037782453565716,1.0150916870138573,0.9950296908855842,0.9921460685359711,0.995194015443876,1.0093979067619443,1.003493599539201,0.9949153686863744,1.005346918347205 +2023-01-13,1.0011714611186535,1.00993548230343,0.9932026760909737,0.9969281064838978,0.9962858331132488,0.9856685377756885,1.003166204641378,1.0028145060278908,1.0002511661033497,0.9978564294021504 +2023-01-16,0.9861431943184417,0.9960015618984304,0.9967780564707086,0.9922077455631056,0.9985881404960726,1.0042495122468307,1.0192446961373558,1.0019476723829812,1.0027793591841507,0.9994556890333296 +2023-01-17,0.9811914188987733,0.9999348633669904,1.0008026240298291,1.0251433137658537,0.9982778749142401,1.0032206486034023,0.9998528931242253,0.9885789408032308,1.011696098806775,1.0077492011687121 +2023-01-18,1.0081432972044184,0.9911455589621322,1.0143296420417176,0.9862765267281933,1.0060870220196338,1.0223506720431932,0.9903415817909648,0.9945519176285523,1.0011972297589173,0.9951769120816866 +2023-01-19,0.9848099167901833,1.0008860220338838,0.9896310944791289,1.004948126048095,0.9910460848605407,1.015823226192406,0.9923965208909946,0.9969839423059813,1.0083700064372112,0.9879643714555114 +2023-01-20,1.0024776636941597,1.0133598838178615,0.9842505086730097,1.0020484337650313,1.0028027483180424,1.008050460804145,0.9879042418767774,0.9870796278752644,1.005434127253276,1.0031748760090933 +2023-01-23,1.0027085901232922,1.0036712045183738,0.9934214865734543,1.0025257212449161,1.0031356305699362,0.9930805363171379,1.0190366753573912,1.0049505428535292,0.9883552955758664,1.0067884740255801 +2023-01-24,0.9904986094788923,1.0081035031129255,1.0118556838349728,0.9920251460443432,1.0098822716055749,1.0043371877604603,1.0084561545880482,1.0193528139863557,0.9977486569229091,0.992689491078188 +2023-01-25,0.991342549141834,0.9920734790180485,0.9994291459050932,1.0036180491435926,1.0029713136207736,1.0085078200182143,1.0003300733810134,1.0148444411236828,0.9975564220766792,1.0277805707448484 +2023-01-26,1.0064775627280043,0.9916633684942855,0.989546100848724,1.005037369249339,0.9979674405989108,1.0073670088062567,1.004944560437553,0.9994718503935618,0.9917661482086211,0.9851627015157155 +2023-01-27,0.9957439333117454,1.008802504121787,1.0023436795746574,0.9878174279965545,1.0019336764041469,1.0040613990151952,0.9913986309109081,1.001738760954306,1.0007823930943862,0.9888331147747322 +2023-01-30,1.0037850187629678,1.0058247434952512,1.011091572836669,1.0107958799759187,0.9865150539469176,0.9908637411731215,1.005364691369902,1.005352131263432,1.0053648162271298,1.0394869923923309 +2023-01-31,1.0059263971226284,1.011622680921214,1.0097876059849988,1.0067365013485328,0.997051662462648,1.0078201107897626,0.9925000141683503,0.9978341627501468,0.9953571759060424,1.001019260487136 +2023-02-01,1.0236212505283944,0.9816969217448233,1.0070876008945566,0.9841990077678168,0.9954908780960947,1.0111512224651666,1.0008431554468318,0.9894782967035604,0.993071079343277,1.007020506507986 +2023-02-02,0.9929215050820612,1.0023673837338574,1.0006559334293448,0.9937039005472234,1.0218752716039594,1.0065606174075834,0.9801482670366679,1.0020666757842862,0.9936026858586755,1.00876250125993 +2023-02-03,0.9923045553398526,0.9990530841933218,1.0052636775190775,1.0088968961335139,0.9882664176715216,0.996859928012425,0.9954608799742956,0.9936867206983717,1.0180148876202806,1.0042588603885645 +2023-02-06,0.9876678326407748,1.0094227365333241,1.0216526507732864,1.0105802315737251,0.9851181461632249,0.995368418279625,1.0129522748705133,0.9931468957029702,1.0046489673539867,1.0079779964923568 +2023-02-07,0.9909716973811051,0.9996048245417801,0.9683006283920073,0.9900063948664105,0.9976770207880167,0.9877972332313562,1.0166613912865943,0.985997545454552,0.9958083646626062,1.0015085424800307 +2023-02-08,1.0147200208249119,0.9859411403844519,1.0119019082104106,1.000302376316701,0.9904309906369836,1.0048326746285416,1.0021929980662143,0.9942146313016479,1.000898424191351,0.9963535286145722 +2023-02-09,1.0013360651934187,1.006844624847891,1.016189825840231,0.9878956986368889,1.0217637837909703,0.9808645738831232,0.9986830170338747,1.0061017121311033,1.003014453030776,0.9939911307041628 +2023-02-10,0.9981205458863958,0.9952811595310502,0.9943225305231984,1.0087339411992358,1.0037772708334474,0.9932934937158139,1.0092384118614786,1.003278357306028,1.0083634006417521,1.0065174350676245 +2023-02-13,0.9919426854711264,0.9946127531408738,1.0077024484590396,1.006323612801809,0.999990984101002,1.0013742172053848,1.0130612110486055,0.9943005897272116,1.0056870842231966,0.9981797321762946 +2023-02-14,0.9980251405737763,1.0112505856446818,1.0084900008504822,1.0083699299889628,1.013343022185462,1.0004101224935702,1.0070442243594309,0.99710154110046,1.0034475928490887,0.9988991758083058 +2023-02-15,1.0011706443197044,1.0061705300201722,0.9920495663842887,1.0213485610637996,0.9901882783192465,0.988129135203601,1.0118507793266331,1.0081496560572676,1.0064619872991207,1.0065045181835417 +2023-02-16,1.000077535277235,0.9912658227742203,1.0009585046541982,0.9934499287377655,1.0100008751461986,0.9987302330221367,0.9919773823893492,0.9969906786955318,1.0043386995636427,0.9945775095370099 +2023-02-17,0.9920098880489479,1.0026403517199467,1.0026531791777629,0.9951424047090147,0.995499773445831,1.0025236785025589,0.9858206441456416,0.986221171424806,0.9930398923166551,0.9980673983669666 +2023-02-20,1.0033145566908808,1.015065926061796,1.008815223475271,0.9986015933834027,1.0000098379693656,0.9902228168557102,1.000014868750615,0.9973170192543316,1.0034330651187724,0.9919601841627113 +2023-02-21,1.0054080360596662,1.015648565407981,0.9991127923171075,1.0042260217725965,1.0071267149358116,0.9961950525086096,1.0024439063004524,1.0003259771268183,1.0011774536403666,0.9924981823195346 +2023-02-22,1.0004452008150686,1.005193422219047,1.0148201818681992,1.0098408137277668,1.0219696805648109,0.9925543813507568,1.008963136854098,1.0020354888579577,1.0223439992578658,0.9921480063731384 +2023-02-23,0.9918362871597585,0.9942228259677235,0.979180817641265,0.9949552176565012,0.9926359220630732,1.0017053903917736,1.0036241110245563,1.019142623260577,1.0097514771850304,0.9944464417809881 +2023-02-24,0.9912543211849679,1.0051323171646458,0.9870818330734692,1.0186870453199672,1.0120666224989092,0.9955183163300334,0.9832111843956348,1.0138335336983915,0.9990550482957947,1.012657600924624 +2023-02-27,0.9843790166324496,0.9942230011745594,1.0002524688620817,1.0006700303077365,0.9957085798577165,1.006449206473437,0.9895784800064805,0.9987769536813239,1.001403940920731,1.0053586950594873 +2023-02-28,1.0073429771843359,0.9890143667545434,0.9849729090337068,1.013061331867408,1.0035293536728775,0.9927416049495689,1.015835594631688,1.0013576671396303,1.0120651758857415,1.0008755679000794 +2023-03-01,1.0210254641252205,1.0179119369306409,0.99771297774486,1.0099650330482441,1.0066759449317886,1.0139831782915538,0.9905952691258069,1.0070854987990137,1.0108426044364758,0.9827628935836918 +2023-03-02,0.9884348118050562,0.9800101778819714,0.997509039259945,1.007402687977024,1.0153400393438925,1.0009413906344653,1.0166228020092207,0.9864910613021615,0.9833070727081099,0.9996445861854928 +2023-03-03,1.0040488289400797,0.9998730605765496,0.9797337567633815,0.999309038428837,0.9872374460215676,1.0069205626675155,1.0038734650105239,0.9908433816451186,0.9950735060019346,0.9896616764509467 +2023-03-06,0.9995733000895801,1.0097991232539856,0.9903892211278564,1.005254220410181,0.9949104198443273,0.9923010615028928,0.9991300750047906,0.9898989386616456,0.9946777207304234,0.988290319326836 +2023-03-07,1.0200455175292242,1.0005527882508598,0.9932257940053131,1.002342538573457,0.9990771455953854,0.9979923220915246,1.0063618179449456,1.0078053815012022,0.9949079969495124,0.9944572357105897 +2023-03-08,0.9974527328334132,0.9774391774194148,0.9851593141626103,1.013965359822231,1.016789055469672,0.9977122604785098,1.0059833990777032,1.0033179939415287,1.031473959652579,1.0114609280154536 +2023-03-09,0.9989214061861046,0.9906882212386161,0.9842607145602309,1.0022371350193526,0.9926635367473918,0.9860753207382922,0.9937538599025966,0.9894406653264395,1.0172179657262512,1.0090571677232425 +2023-03-10,1.0001202808199916,1.015112497562452,1.0009741572597317,0.9916224469126955,1.0155509171612278,1.0056047485981583,0.9898791029496026,0.9982980631590401,0.9914803174216522,0.9864644434417914 +2023-03-13,1.0095066795853531,1.0194815017199117,0.9863089115408661,1.0058467180922868,0.9937134180749557,0.9953396395001116,0.9942924112864837,0.9915956083365843,1.0006854510937528,0.991923292134816 +2023-03-14,1.002908790603221,0.9996976646180641,0.9978129146953234,0.991163635567849,0.9944477576840483,1.0077840516850407,1.0052227632016637,0.9904701471716667,1.001194035347552,1.0077436997869675 +2023-03-15,0.9836412292733656,1.0056495005005133,0.9935943665160685,1.0059234614101904,0.9925949618366087,0.982309525698739,0.9840530956626783,1.0006810812972229,1.0028011409014652,0.9911958195397138 +2023-03-16,1.006607659477695,0.9837187945950739,0.9995393081646137,0.9881604832382347,0.993701557791718,1.0006742138932447,0.991631082355987,0.9963610815273467,1.0103157725636105,0.9944465589878374 +2023-03-17,1.0085936362181973,0.9889642767910937,1.0055131837485298,1.0147230176181266,0.9757816420561167,0.9922611477574557,1.0059885815566256,0.9981712203985306,1.0039191184720866,0.9941771669225705 +2023-03-20,1.0010664661457571,0.9986441476455657,1.0119486420515655,1.0027479772196308,1.0035824282324517,0.9960888986964914,0.9953348535174319,0.9958829166435879,1.0041531218301172,0.9959981838846346 +2023-03-21,1.003102551550258,1.0211750846591579,1.0089510704002245,0.9969444424255479,1.0122870118684606,0.9961267666631317,0.9800210329521295,0.9901677922345877,0.9816623005708484,0.9966903541518335 +2023-03-22,1.0003842575999402,1.0171090852592104,1.0034752986330975,0.9980109754481697,1.008530232660749,0.9783269568689617,1.0025594153065727,1.0079400079333232,0.9855199959304134,1.0117055200549885 +2023-03-23,1.0035913977445141,0.9960549232037775,1.006549171306078,1.0231713071071198,1.0020207014215314,1.0026858061953736,0.9956160287845545,0.9917358933422595,1.0085396144092331,0.9916740163435684 +2023-03-24,1.0009160817189675,0.9954338820914554,1.0050022680327162,1.0035428822761208,1.0106315166253463,0.9951118222288742,0.9975043699225938,0.9904581776996593,0.995766055920709,1.0039809077770874 +2023-03-27,1.0078001500635403,0.9910189197682814,1.0089357467359663,1.013851432931703,1.004343755908989,1.0191489926501944,0.9924904466675109,0.9878281367403393,0.9825665496803295,1.0152759455839888 +2023-03-28,1.0067664462151902,0.9996442165968263,1.003004189824001,0.9890059902788315,1.0249640305170802,1.0014933257218002,1.0012947854578857,1.0074855438895007,1.0050226638159023,1.002441816632811 +2023-03-29,0.9923248609069056,1.004926780437968,1.0192022821228202,1.0137478447840484,1.0162626873369882,0.9950998881474912,0.9903508069140158,0.998942690145371,1.000757535908389,1.0112042174957203 +2023-03-30,0.9834144341631411,1.0156161810197213,0.9986208728852775,0.995939455695514,0.9901280074548888,0.9837843458027695,1.0084673527890633,1.000933615219505,0.9873806907523534,0.9873301591623451 +2023-03-31,0.9968471337617143,1.0170336614127038,0.9976069543962678,0.9852780143818191,0.9977451154394628,0.9974759550741487,0.9735862439853681,0.9996571101349934,0.9978928778033412,1.0071877725656362 +2023-04-03,1.0188653039394882,1.0115316328001358,0.9975142078054716,0.9891935546385848,1.0262727996777683,1.0007924982010323,1.0003393504854823,0.9999587499797055,1.0021832273854856,0.9987571688359134 +2023-04-04,0.9944786787644595,0.994745265262584,0.9998724754297894,0.9947794270937051,0.9930954886013019,1.001265101843972,0.9976529863793463,1.0153566497979276,0.9740333866192219,1.0111770703987624 +2023-04-05,1.0127413398338507,0.9796754826358008,0.9967783248277828,0.9964917596460582,0.9862206988243682,0.9924504750339657,0.9891534937367686,1.0178806834523149,1.009602595812816,1.0129993169175098 +2023-04-06,1.0074442926354055,0.9889707553535223,0.9949675029956354,1.005106740789801,0.9880506888078421,1.0073569143954988,0.9977991714009008,0.9964580793761836,1.0073363800172013,1.0046534268332736 +2023-04-07,0.9965961446370788,1.0118631131531335,0.9894454609196435,1.0063796197060384,1.0061498457063496,0.9971087234210221,1.0034673275434487,0.9877643362352181,1.0094849700917037,0.9983523375242521 +2023-04-10,0.9949853851675965,1.010747435447115,0.9931799260841508,0.9862113337008473,0.9847511673192874,1.0062797348881651,0.9874748078947169,1.0179063724237853,0.9795918299989209,1.0173127212790438 +2023-04-11,1.0023128451815857,0.9992331630511456,0.9947645620598581,1.0042001571824701,0.999823668523974,1.0112963460726827,1.0013431777429036,1.0017044685726688,0.9965697745896065,0.9996306120033407 +2023-04-12,1.003283396264321,0.983240348213318,0.9868059603944814,1.0076618437951086,1.0019104770214653,0.9983615104285712,1.0003844131984776,1.003682581154449,0.9948158873313568,0.9924456315122068 +2023-04-13,1.0021607836865978,0.9904620497862756,1.0042917106826,0.983314927741692,1.0105467857291373,1.0049381273843223,1.0027641104714988,1.0100773477377178,1.016997587046495,1.0103973816488283 +2023-04-14,0.9819560351888931,0.9874832250252418,0.9939700676799996,1.0004610167376748,1.005391070004825,0.9929674071026963,1.0020698067435765,0.9926731439199513,0.9941022821919064,0.9862290876322994 +2023-04-17,0.9910083365163848,0.9867714308471631,0.9904868069386413,1.0107942601219626,0.9907490667369975,1.0268787078869703,1.005146376343942,1.0020504605619744,0.9916514663862949,1.0072291035108931 +2023-04-18,0.9944590298563319,1.0014211069633094,1.0261365682869217,0.9992396901848489,1.0117613604875453,0.9931915191976164,0.9998501263272116,1.0180693161759096,0.9939487126603792,1.0184934092011328 +2023-04-19,1.0073040648545908,0.9945900191819456,1.0065454055403933,1.0099749660897812,1.0064387397567383,0.9846172941183421,0.9929535715618963,0.9977273999191704,0.9994558138320323,1.0064272879110818 +2023-04-20,1.0019789655821376,0.9869326849096608,1.004009997119256,1.0063257812287603,1.0058147448580574,1.0110686160849662,1.0085757846973074,1.0048032998293959,0.9994984686943054,0.9837242948650796 +2023-04-21,1.0045063051843954,1.0022794709241811,1.0029200434174677,0.9875111553060564,0.9894455280752054,1.0107893179234866,0.9998044675803893,1.0070396697713173,1.0004833005133817,1.000497685199161 +2023-04-24,1.0096289004710355,0.9950518354188231,1.0011618822321902,0.9955870130817058,0.9958636162251928,0.9971124557639546,1.002424271521939,0.9954230202260654,1.012839286107141,0.9912920626144545 +2023-04-25,0.9983326750915353,0.9958114858139491,1.0147779081465054,1.002167894257185,1.0105739587086404,0.9854512669084053,1.0028746264963342,1.0091378050935966,1.0010233631718723,1.0109139308770094 +2023-04-26,0.9950394598183581,1.0143961145521674,1.02345993599639,0.996577484599173,0.9957540145797165,1.0148429229171325,1.0161243378654334,0.9949840219725431,0.9960061286325294,0.9973855774823546 +2023-04-27,0.9868428174078338,0.9910537386176015,0.9902068605128643,0.9925499148440946,0.9998531619079003,1.0025453813217282,1.0158289766600002,0.990264162728792,1.0100938264207613,0.9980619919252315 +2023-04-28,0.9997054063047224,1.006972389632061,0.9890333567077302,1.0040322050135766,1.001866261384249,1.0051376654125659,1.0030964706307333,1.0250619003979826,0.9938416410639546,0.9949030641343557 +2023-05-01,0.9939867471472974,0.9946595400398035,0.9938451479093925,1.0121635467929222,1.0145092950905923,0.9945076753326051,0.9919093511804826,1.0049262498292353,0.9946919075326587,1.006550680644292 +2023-05-02,1.0022317167895516,0.9851538657265182,1.015798550076855,1.0183246498134138,0.9940896483506212,0.9963297363442966,1.0030633363618968,1.003550857309553,1.006808516001165,1.0205095336778913 +2023-05-03,0.9984317587025912,0.992247236462156,0.9864987779633478,0.992915910896395,0.9998687388867559,1.0183112099558436,0.995036247349237,1.0024408535609535,1.0000357716790638,1.0121572384257491 +2023-05-04,1.0257964387216583,0.9949043394226295,0.99531660702255,1.0106984320742198,1.007043605212028,1.0188423922678649,1.006057555083119,0.9966128285439564,1.006125231283174,1.011350974728335 +2023-05-05,1.0084402414893034,1.0052866656704436,1.010926004441007,1.0119639583014688,1.014120353469682,1.0067095074431722,0.998529900852807,1.0016685273095756,1.0123406143337565,0.9920623144246121 +2023-05-08,1.0038942962312447,0.9962735723054776,1.000487567051542,1.0130691835355616,1.0021132203897143,1.0006645862211894,0.9866907997651772,1.007691968014104,1.0066770344734166,1.0220726212515132 +2023-05-09,0.9971263544968296,1.00239436520158,1.0026974684758418,1.0161028077807512,0.9992473280758568,1.0029946904107925,1.0062987191218122,1.0020682270687438,0.9957447432254608,1.0021431932915639 +2023-05-10,1.01099633761896,0.9899853311394725,1.001530867324332,0.9932218677225145,1.0122245830851202,0.9850805455237863,0.9946252773131479,1.0039800180698781,1.015981601560818,0.9995426020276315 +2023-05-11,0.9946623011435918,1.019193441325033,0.9858213385686054,0.9784475856832019,1.0046107414081173,0.9951910579230516,0.9900376283204505,1.007310154145372,1.0026414897402447,0.9945739879637591 +2023-05-12,0.9874760417830349,1.008964516022487,1.0067245205170448,0.9992085547203696,1.0188416757194376,0.9895540937588931,0.9850575119882228,0.993303441852062,0.9997441725658652,1.0026368649221729 +2023-05-15,0.9977900848873515,1.0037274838176782,0.9877601298714286,1.0147453010119742,0.9993786813145167,1.0114378762759733,1.003633839908783,1.0047789149551782,1.005915098314377,1.0046880402369616 +2023-05-16,1.0066492362634454,1.0135829466037527,1.0021675574605806,1.0073166745887472,0.9993028861539689,1.014708289982277,0.9934575724648322,1.018376206449657,0.9997984408093402,0.985991296969714 +2023-05-17,1.0014821414366373,0.993411284823989,1.008643577332301,0.9936937287311883,0.9957472343960763,0.9814782678245751,0.9956862677942013,0.9762478371810012,0.9844826263550437,1.0078346782862238 +2023-05-18,1.0080905546601195,1.0044645119884434,0.9905749355582777,0.9997229248309967,1.0001639880536655,0.9886809016515701,1.0153506116237547,1.0090140065653095,0.9979923762396309,1.0004689683212202 +2023-05-19,1.0022864380013166,0.9799856515656516,0.9977308046999722,0.9934020204076928,0.9902318215348027,0.9973924027745423,1.0183430699836662,1.0066303124564153,0.9945033721466527,1.0059434202639765 +2023-05-22,1.0142947611195912,1.00949109428921,1.0007966208331651,0.9937502437038411,1.0072080872321978,1.0041434141568824,1.0091939391823337,1.006573227470272,1.0107529287680488,0.9948608984835373 +2023-05-23,1.013463771819517,1.0021783652444654,1.0211736557705027,0.9933304625742498,1.0177147148433245,1.0021814838156302,0.99370571250823,0.9953718845448146,0.9970010328310754,1.0044515382540748 +2023-05-24,1.005443115094516,0.9944783008918875,0.9999564550255001,1.0218581683068173,1.0176290204296004,1.00457366411621,1.000580203034385,1.0014012941636063,1.006355289422141,0.9900221863481016 +2023-05-25,0.9976290497788476,0.9836493070395609,1.0042010309198657,1.0066942665012273,0.9953788459189746,1.0160675850200374,0.9880147456190309,0.9856600617321966,1.0024475084562734,1.0107281210241703 +2023-05-26,1.0171852734397528,0.9956207742669624,1.0110473849576518,0.9998149324321084,0.9984748911628744,1.0090775527056604,1.0067458804223706,0.9845565703386825,1.015077945861293,1.014099385359917 +2023-05-29,0.9939626713395424,1.0041666919573178,1.0051535358803463,1.0028106802341092,0.9947109848165565,0.9935049509317002,0.9999444608324423,1.0119987039600775,1.0056519136822202,0.9964999960223971 +2023-05-30,1.0079484093172475,0.9721108612842173,1.0117562245377316,0.9829498889667021,0.9965814471888436,0.9890635437218885,0.9873340817967502,1.0118782606955616,0.9955329948659548,1.0036717632847083 +2023-05-31,0.9997308304438352,1.0049827812425052,1.0009686877858444,0.9874495005066962,1.010214483485337,0.9952736387322882,0.984751632859174,0.9959271649719812,1.015323821838257,1.0087401917889642 +2023-06-01,0.9967188733556438,0.9967128375443293,0.9969881941025004,1.0211888418685255,1.0040274429608402,1.0045105585549459,1.01055818290888,1.0025912430721737,0.997612433324003,0.9982380555589581 +2023-06-02,0.9994841205174613,0.9998277924643217,1.0075043127113819,1.0007197177306761,1.0075547953179895,0.9993930184867695,1.0009868385081742,0.9804123731994722,1.0094072493581678,1.0036716086607274 +2023-06-05,1.0102320946110794,0.9716471510189975,1.0213075795508142,0.9988048185174362,1.011345707991822,0.9898527747646151,1.0063478014856666,0.9897190582898401,0.9939805006135565,1.019528548954887 +2023-06-06,0.9982946317880829,1.00237714968244,1.00894040611878,1.0051701381553937,1.0017056420068502,1.0038570292907052,1.0245301895456744,0.9996238827794867,1.0022134365089654,1.0107640640992088 +2023-06-07,1.0113188380687044,1.0121434431416292,1.0066090462140949,0.9888327724911989,1.01667176360744,0.9887997412790542,1.0032315649364631,0.9926841336897944,0.999558713929422,1.0034937129404444 +2023-06-08,1.0034194050270184,1.004428986639985,1.016471293026658,1.0047465724699853,0.9977609440808325,1.0098894522883535,1.0121681415988937,0.9879965450519453,1.006193099125147,1.0072377945546602 +2023-06-09,0.997228213479807,1.014054922732998,0.9987002894859432,1.0014568246742812,0.9984704527087889,1.0003558537767532,0.9892949603049559,0.9858998428231007,1.0162760862043911,0.9917644857099417 +2023-06-12,0.9903331042624028,0.9788920568252315,0.9938294987443259,0.9870536366309283,1.0167590346733928,1.0103513795490562,0.993340768162183,1.0229845232359582,1.010067999545891,0.9969563275561955 +2023-06-13,0.9755107908165473,1.023378517357619,0.9863976350736862,0.9838773957876903,1.010480241339549,1.0249025388936368,1.0141417904508927,1.0058561719226626,1.0061664783428905,1.0087724096158208 +2023-06-14,1.0078197013054144,1.0030164546106457,1.0012427826546484,0.9995741594168548,0.9926872235346802,0.9973966438558299,0.9834095939618279,0.9992169105067948,0.9903608462808424,0.9892226036392083 +2023-06-15,1.002000940727001,1.014220181243934,1.0094273259745474,0.9846145777231451,0.990350576000761,1.0096540141110308,0.9904212969154789,0.9979557608089045,1.0057167998780396,0.9905613814979273 +2023-06-16,1.0012545413409029,0.9869457012933265,0.9942031902756554,1.003403598473192,0.9843931319930515,1.0046153655205152,1.0000036220172928,1.0057413180981378,1.0024421184659376,1.013937640036193 +2023-06-19,1.0014533000449408,0.9959143138083575,1.0014239879396825,1.0056488753553539,1.0006888378431498,1.0006061005167721,0.9932032859778973,0.9935916126875981,0.9862690881698419,1.0178532651672203 +2023-06-20,0.9878359551140875,0.993293537395546,0.9930402593014,1.0091912260378784,0.9972542796214959,1.012758119883358,0.9934863998210544,1.002994415955911,0.9918796788529044,1.021887585668068 +2023-06-21,0.9883919155905918,1.0033036521719918,1.0065591866693886,1.0043474136776358,0.9983484886594326,0.9989023958112805,1.0006383183583014,0.9987307861178311,1.0098873512004514,1.0225558515807414 +2023-06-22,0.9946395011756094,0.9865926601048295,0.9993174125853427,1.026337965291102,0.9921938815535594,1.01672956581726,1.01712193653201,0.9946783281170234,1.005907209948575,1.016620576396185 +2023-06-23,0.9964151635141538,0.9981658804557171,0.9943989356407005,0.9901017460891663,0.9937269825947376,0.9880327809676567,1.0005409809600387,0.992528320508427,1.0025410822083651,0.9847583907646293 +2023-06-26,1.003514965375216,1.008571819056324,0.9804561500006419,1.0039483399357645,1.01255484853581,0.9881740723275908,1.0170697755110973,1.0043998410962665,0.9931732900235258,0.9996423731871421 +2023-06-27,1.0058000245108332,1.0009605149133993,1.0056031994527839,0.9910337032159616,1.001895402248649,0.9861595274024821,0.9990881553697218,0.9911998733767421,0.9928702387815632,1.0126401515995571 +2023-06-28,1.0111750810986382,1.006311213516886,0.989334160135622,0.9970403040644115,1.0124073169560568,1.0016184774595718,1.023669064720469,1.004141731755892,1.0021227409962588,0.9971130107495845 +2023-06-29,1.0015365883918095,0.9986761786617646,1.0073076583299427,1.009814876205751,0.992369367624734,0.986973262545068,0.9820018823943029,1.005293876575389,0.9892248067496288,0.9788969466054214 +2023-06-30,1.0040941442485134,1.0254484152059073,1.0001393005860268,1.0086218637439215,1.0010188122224153,0.9992114145651444,1.0094349964096254,0.9973009036862801,1.0028780568168356,1.0034228225864728 +2023-07-03,0.9935400512301613,1.0101718081798585,0.9984516024394333,0.9926695481949296,1.0055806123614937,0.9912537927430422,1.0004819276635313,1.0001088159535845,1.01112033195235,1.0049592388484743 +2023-07-04,0.9999497316760431,1.0084128538142438,1.0142019788191037,1.0057948284992717,1.0003035722671714,0.9871647215649835,0.989603286737323,0.9971518167484876,0.9941222201154926,0.9983316801654266 +2023-07-05,1.0007667930845905,1.005512063370583,0.9994951397042781,1.005077865318125,1.0008451010449275,0.9806352866447723,0.9908487757369427,0.9987598940105126,0.9881735414396136,1.0062185426507286 +2023-07-06,1.0156283736960043,1.012464662866559,0.9980674410920535,1.0152219528718587,1.001688097807643,0.9968341621551934,0.994083544926759,0.9971792888376243,0.99632500121274,1.001905976291886 +2023-07-07,1.0018073711404016,1.0002304867595266,1.0045798372410695,1.0121800425987644,1.0097426953869062,0.9854577946044205,0.9749791319427127,1.0095888806373665,0.9866215112699935,0.9979544409943657 +2023-07-10,0.9885647549114949,0.9823380294251608,1.0056304188425482,1.0078219847302976,0.9944503524983926,0.9746172755728495,0.9947513779212676,1.0041265308320892,0.9855167898124685,1.00203566836302 +2023-07-11,1.0000469026081629,1.006010908437516,1.0013967782714954,0.9905145836694467,1.0122400183395355,0.9986156633489399,0.9999269572726506,0.9909088966637183,0.995776123254895,0.9913892594837782 +2023-07-12,0.9984717084295577,1.0174678947864988,0.9865719599963607,0.9841906861377329,1.0150234374134963,0.9981085542707505,0.9935302918830339,1.0106554157473633,0.9941609584572231,1.018631538042343 +2023-07-13,1.0070036704984957,0.995331815918619,1.0220118454075136,0.9941599704280795,1.0076500670981379,1.0031980286211868,1.013305149017846,1.0159408327388382,1.000520176735677,0.9926926507544176 +2023-07-14,1.0048112585432165,0.9934444284356012,1.0205420140410941,1.0015665791158437,0.9965527399783981,1.0020488991899081,0.9868164120332182,0.9905289947944422,1.0122789134608177,0.9936512959371896 +2023-07-17,0.9897834374564031,1.0055820494272842,1.0121300206812764,1.0074169030819953,1.0102122697679796,0.9926591259234218,0.9860796894842315,1.0153296484056733,0.9969777777476426,0.9976943319807597 +2023-07-18,1.0135732325900992,1.0057789340798513,1.0047702191631056,1.0220904833694457,0.9937842161068968,1.009523463586578,1.0007704278761835,1.002890091072621,1.0156051931983021,1.0052923126346593 +2023-07-19,1.005598574559587,1.0109849699131699,0.996556415488623,0.991841367108702,0.9898042408310798,0.9807246263629746,1.0209791025051935,0.9892263721046747,0.9979894875573125,0.9974351618335346 +2023-07-20,1.003279432589572,1.0083923924511293,1.0088436105747356,0.9943850487117077,0.9985298645715278,1.0030303818567987,0.9977157017274532,1.016406589643749,1.005122826550411,1.0075773417129146 +2023-07-21,1.0068521821930707,1.012006241741343,1.00201223742494,0.9873128496797513,1.0042056987498043,0.9937063197602138,0.9949267458277186,1.0060820612678256,1.0126623276108064,1.0004128009462308 +2023-07-24,1.0032937426145554,1.0173713056955662,1.002610934362708,1.0265635152820154,1.0058722710368189,0.982743009811191,1.0077633963072152,1.0040196410217215,1.0131836758537687,1.0069558941406385 +2023-07-25,0.9988161414742258,0.9880292441177134,0.9981115527916343,0.9917291883898444,0.9944104455184393,1.006104340051442,1.0170426416466345,1.0041553248184083,0.9883100342407237,1.004656836198117 +2023-07-26,1.0122406255317018,0.9941195290088112,0.9988604780820205,1.0003469421177917,0.9923801958966185,1.0067051841007668,0.9989910278689483,1.004404998045219,0.9913625967873166,0.9958341184558591 +2023-07-27,1.007451438400498,0.9964778857264237,1.0176231251297623,0.9962108352150826,1.0024498432313347,1.0095714241952665,0.9861136598619615,0.9827425572303771,0.9850562201487398,1.0129084449103365 +2023-07-28,0.9946955371540223,1.0261172232029354,0.9945723074541919,1.0020476065209287,1.0157437466965582,1.0204675747540612,1.0210331795512042,1.012359416347003,1.0104953187650831,1.0061440673161675 +2023-07-31,1.0080155647615576,0.9947022258033732,0.9920497826492444,1.0001662692470898,0.9984992809814253,0.9956770902966825,1.007189596409529,1.0098007680976206,1.0010846566779597,1.0150879924554579 +2023-08-01,0.9888457836245458,0.9982649124151125,0.9930559985677331,0.9817040741743183,0.9993733895439543,0.9989830423684272,1.0154526741255383,1.0065293406553486,0.9900083829695991,1.0189176390083923 +2023-08-02,1.0124876647437957,1.0060391395506456,0.9979372893291476,0.9906495970775985,0.9964841274444999,1.0111491801716632,1.019228392477743,1.0157552609861502,0.9953224796142047,0.9890640625979847 +2023-08-03,1.0016101573826872,0.9826675713939274,1.003437572087105,0.9987247879118455,0.9955495676361247,0.9843763055729703,1.0053502628751099,0.9948861122780835,0.9885666943820408,0.9718803078920426 +2023-08-04,0.9999248537731128,1.0180840880721558,1.01695471916347,0.9956385761881071,0.9941947950962075,1.004899707059608,0.9902638518012478,1.0032231020575981,1.007891780009472,1.0125473985026958 +2023-08-07,0.9991987803831892,0.9981649482682919,0.9914568757987526,0.991963661877181,0.9979373412912277,1.0038811673668413,1.0093795612078174,0.9921987990501665,1.0152418761089346,0.9974919145049433 +2023-08-08,0.9999863271499899,0.9927542610701426,0.976244313580467,1.0090814422921328,1.0075971519970381,0.9973901360609313,1.0008702856512321,1.0053737794100863,0.9846929044344395,0.9949224080003743 +2023-08-09,1.0081758883080165,0.9877329668514372,1.0031405003926328,0.9867231078696954,1.004876149736777,0.9998435974091858,0.9841752303511209,1.0119178518857765,0.9928795555799529,0.9921286184858448 +2023-08-10,1.0022081263003113,1.0117549259399061,0.9900912006876129,1.0008171321692143,1.0044982519007617,1.0071565425989182,1.0019663462810482,0.9965357360659304,0.9919566202833663,1.0010620023560242 +2023-08-11,0.9895337660956649,0.9714033457361716,1.0045760362638452,1.0092821629482795,0.9768430112386873,0.9901515101107481,1.0064120121058333,1.020992256269761,1.0004080202943988,0.9929449749506066 +2023-08-14,0.9983723616313548,1.014046502115068,0.9937599089516125,0.9922383582495482,0.9953832548609672,0.9907101338434332,1.0014277213850786,1.0165827774719152,1.0034366846365843,0.9976791622967259 +2023-08-15,0.9972855780344485,0.984686553660208,1.0090720011764416,0.999421795254699,0.9983964878656754,1.0326528521077796,1.0031926146565213,0.9927088002108512,0.9959446691906952,1.011752987012277 +2023-08-16,1.001333592550128,0.9859173220385248,1.0094365353104746,0.9935395183759378,1.0191133430715889,1.011061208418398,0.9957358982523048,1.0130951640190708,1.0008789411478556,1.0087659344913578 +2023-08-17,1.0050600873914095,0.991770482861743,0.9937839020518814,1.0105549224850865,0.9968571956603337,0.9961708652724774,0.9906923609494608,1.0044458442272135,1.02104360785135,0.9895793460377361 +2023-08-18,1.0004422923491574,1.014425259740111,0.9994037639069673,1.0047348923060795,0.9896302056480927,1.00449313496833,0.9983299534322885,1.0101080445732795,1.0121470438078912,1.026439108741418 +2023-08-21,1.0060143457172008,1.0034639488178492,1.0021461426902982,0.9966738809023925,1.0035912716529705,0.9972497747164943,1.0018863867558125,1.0134658339160842,0.9901830780246734,1.0116663123486265 +2023-08-22,1.0134609442768232,0.9990197954447324,0.9792008012150503,0.9941390230610225,1.0132570511698107,0.9999713197882963,0.9902547731721333,0.9951639821593589,1.0086433400743031,1.005683425409816 +2023-08-23,0.9978130738235135,0.9965377632934213,0.9962893201604986,0.9910164931591454,1.016488211523126,0.9969813605894394,1.012448429838188,1.01553255590922,1.0102351332754749,0.9958922568253035 +2023-08-24,1.0042462909562069,0.9999580448162342,0.9912019130772222,1.003449528794702,0.9884765119966357,1.0121500128129752,0.995563696621343,1.0022140439422735,1.003037482545222,0.997613801771032 +2023-08-25,1.0060853791580855,0.9954612946290167,1.0089528117909954,0.9868277270266735,1.0014648676674662,1.0197824191581717,0.990244582588842,0.9934441343684172,1.0053533567758268,1.0019978107894278 +2023-08-28,1.0037131778194985,1.0051048569091443,1.0065686945478562,1.0113610504776351,1.004307437021819,0.9977898693970229,1.0069497753910612,1.019384301794269,0.9988742966161305,0.9905001186587623 +2023-08-29,1.0113345615323106,0.9989966920108304,0.9787033501841351,1.0087119468037264,0.9948599735180822,0.9992949158656812,1.0035260050875616,1.0021072138589127,1.007321187977423,0.9958537557987538 +2023-08-30,1.0053452933566576,0.9976074000651003,1.007616967434192,1.0063739022488851,0.9908873868119537,1.0111212070808488,0.994853653599044,1.0083149567953058,1.0038803823981826,1.0187555534200587 +2023-08-31,0.9979674086934331,0.9967122485689491,1.0000058039579656,0.9971722079290704,1.008233126319324,0.9841636290353906,0.9897164171689441,0.9895766741046231,1.009750303387865,1.0174567524796683 +2023-09-01,0.9991558642977947,0.9985128896142207,1.0009009272224747,1.0118889008055196,0.9909675089230915,1.0025870304303175,1.0100016619004701,1.0052245422697599,1.0020980139237854,1.0102627655483571 +2023-09-04,0.9735244655694569,1.0070031614400585,0.9936793033460264,0.9820566057406515,1.0053261598206706,1.014034152381723,0.9988262042914646,1.0097762235587595,1.016456726984872,1.0134386421612662 +2023-09-05,1.0167381849135986,1.0076503907459455,1.0009547919128838,0.9843048154317993,0.9977419284067562,0.9918013279952443,1.0221512011558471,0.9984423562639009,1.0014330739383193,1.0057312146890791 +2023-09-06,1.000636226770172,1.0172984248004122,0.9939916292712154,1.0021483790185886,0.9928013295931591,0.9870839128156244,0.9940997841361637,0.9998296465413145,0.9959153427537766,0.9932983471125174 +2023-09-07,0.9862324766484627,0.9993691433475002,0.9852624725229506,1.0078310632657606,1.0010249224037056,0.9857273193656549,0.9971120872952615,0.9927051733013219,1.0033975035802047,1.0136974668216197 +2023-09-08,0.981619299318341,1.0013511728040154,0.998599653445878,1.006937353486009,1.0023346874305454,0.9927070303948633,0.9970139278519251,0.9922697745001476,1.0110203529973418,1.0004132018310872 +2023-09-11,1.0193976430823648,0.9995934745157399,0.9931395732450742,0.9851738618179835,0.9823266418488001,0.9844803313365481,1.0028753925438367,1.0053012524065983,0.9845093270816364,1.0091923758820696 +2023-09-12,0.995380094230499,1.0016693218889816,1.016456141203741,1.00921055161849,0.9975177793381592,0.9913259165778129,0.978907471679973,0.993032850715705,0.9980905229869995,0.9903748261151417 +2023-09-13,0.9988880490052519,1.0009689879954025,0.9979535370484868,0.9937197777449013,1.001888327368513,1.0046300924017255,0.989353093078262,1.0144121922448996,0.9992144274010054,1.000388571703882 +2023-09-14,1.0073087235237834,1.0025353699407746,1.0097788700515133,1.003075962746631,0.9940931407511936,1.0038223217621993,0.9888256401196278,1.001286423791907,0.999867708844802,0.998120599715884 +2023-09-15,0.9989152136921355,0.9815537629490622,0.9947267038223438,1.0011290859495583,1.0018001823061726,0.9899738489451982,1.0129400860048277,0.9915739513462555,1.009943685133661,1.0044819576804567 +2023-09-18,0.9937572940674565,1.0181152347537576,0.9883322342092906,1.0094357806462597,1.0102580802178882,0.9935149174146438,1.014224877233393,0.997702178896057,1.003091705787082,1.0028071510782484 +2023-09-19,0.9988575656608488,1.0083426906262942,1.0081680653061253,0.9828632143556719,1.0133314846894972,0.9837092336251001,1.0105810495760017,1.011533050030584,0.9893474799719831,0.9960994839719941 +2023-09-20,0.9892016783276202,0.9980526881738047,0.9971238013657182,1.0080286635664366,1.0133919672169405,1.0142575206951625,0.9945929905172629,0.9981095703797849,0.983503205458729,0.9921720981906378 +2023-09-21,1.0098971725673362,1.0164903170187995,0.9879299458889941,0.994291711952017,0.999935944482053,1.0030061209348995,0.992135056598921,1.0044504845654993,0.9954718894750388,1.0000554788301106 +2023-09-22,1.0056789066812126,1.000264257608001,0.9958447979357695,0.99910430333669,0.9993166040294164,0.9965060079469708,0.9976148882831603,1.0163181823219671,1.0058261005707323,0.9972489878080483 +2023-09-25,1.0071953067581807,0.9968667240891225,1.012002707620342,1.0039040228428031,0.9991273595323014,1.0046881242870864,0.9846108800253494,0.9889933466933328,0.988329386090511,1.001630759191573 +2023-09-26,1.017679616466026,1.0227683315615252,1.0066022101480296,1.0052220322775192,0.9823470935336431,0.9947868976307439,0.9923515617862564,0.9940095388107624,0.9985196586020266,0.9954892981347849 +2023-09-27,0.980597697221722,1.0077086624853666,0.9895277891936659,1.0025958319937731,1.021161624344006,0.9910464777375233,0.9752095819601133,0.9973434925585881,1.0112726592915768,1.019980464378028 +2023-09-28,0.9879773605256577,1.005180364157688,0.9955567958011008,0.9991408857071433,1.0270015430930497,0.9852797152167297,1.0027411467061078,1.0048888433052712,1.0111192273960814,1.0011805278097363 +2023-09-29,1.003285892141671,0.996290411911094,1.0028954531630037,0.9967732942855023,1.0064363437071193,0.9965100008931446,1.0039788988219083,0.9999073761530036,1.0115264256633845,0.9996861120372528 +2023-10-02,0.9826224375002546,1.0129017333737338,0.9911817875201043,0.9936823772428408,0.9942599246072006,1.014042057295568,0.9790654917217785,1.032081343667742,1.0108186712240357,1.0024353497997633 +2023-10-03,0.9996511208663206,1.0030602136714328,1.0054258914016723,1.006674330590944,1.0057726425158169,1.0010964074282038,0.9982281873135878,0.998688128420307,0.9982524459503643,1.01160451696088 +2023-10-04,1.006154428370263,0.9712184261019414,1.0067819014086559,1.0021496691800462,1.0000129125189068,0.9963215974281432,1.0115068272173406,1.009722221311261,0.9924994935696155,1.004279654548427 +2023-10-05,0.9905285718779695,0.9864958289601292,0.9939511958773345,1.0088629803968239,1.0097787530329205,1.0053450884866224,1.0074787853258615,1.0053761829541308,0.9938044560717351,1.0045294525464445 +2023-10-06,1.0082378410632198,1.007772967169404,1.0121625026492613,1.0073096242993802,1.003721389313583,1.010961140277466,0.9999347895338043,0.9914182884088708,0.9985703532804926,0.9927771843716087 +2023-10-09,0.9934696333820501,0.9987555882161379,0.9923055557563346,0.9971245268188837,0.9814382838424756,1.0023356604888647,1.0002120772388208,0.9920607969664534,1.0068155777381687,1.0096216950948373 +2023-10-10,0.9842497544440261,0.9926002660596509,0.9925365672746153,0.990843150632176,1.0085309311765764,0.9982632485136036,0.9975578385272748,0.9803568669607577,1.006575705943757,0.9878814444319429 +2023-10-11,1.0007996458490673,1.002978195417995,1.0139023370239324,0.9871944932556316,0.9704502678221035,1.0020405745919172,1.018371835064916,1.0126690444350175,1.0022992333450953,0.9952947427136767 +2023-10-12,1.0083055270613484,0.9905098563624846,1.0049759166520014,1.005268531749915,1.0108606523901826,1.028186530411017,1.004132675721445,0.9951222985540695,0.999944258431699,0.9826613163482969 +2023-10-13,0.9932755794733189,0.9961147428372316,0.9949717999546043,1.0017250348841356,0.99200790862598,1.0114756525246635,1.0002020910668308,1.0001070025129744,0.9969257879317427,1.0017534423239203 +2023-10-16,1.0084867930070187,0.9915644782162732,0.9936391515048688,0.9971667609312229,0.9868288002692533,0.9920392771327955,0.9954481823307495,1.0089840079163104,1.0028296090979012,1.0021381817710733 +2023-10-17,1.0087470131155023,0.9988269706534324,1.0041130841067258,0.9991681286676394,1.0028576989532056,0.9943882186269383,0.976102017814018,0.9988578611158111,1.0145320597994467,1.009507061731251 +2023-10-18,1.009902685121183,1.012640531811533,1.0010871664470866,1.002175520091316,0.9940413049091653,0.9970436500741513,1.006377964643926,1.012314045505972,0.9988062503298819,0.9957073472372515 +2023-10-19,1.0002053006598626,1.006231402396385,0.9858623405616013,0.977495286106807,0.9947086801171827,0.9880646736080724,0.9951304927040454,0.9987230128547014,0.995676887579877,1.0148336174322357 +2023-10-20,1.0034734661969384,1.003209884276921,1.006442737156443,0.9888740254273508,1.0106474022925858,0.9994425125885308,1.0069286993073827,0.9895365543974044,0.9847794340964116,1.0084140977812561 +2023-10-23,1.0039719626788906,0.9912182710805374,0.9915393635391235,1.0115202000776964,0.988373991524312,1.016765722866363,0.9912324537283893,1.0066056408974802,0.9969185726153865,1.0062513328395712 +2023-10-24,0.9947725707893346,0.998573089944898,1.0006093773489395,0.9902262025210065,1.0076372596792522,0.9950800073445328,0.9979161750307889,0.9903038202963884,0.974897115040177,0.9982911840653592 +2023-10-25,1.024624448982512,1.0080784992720981,1.000007396230008,0.9975740391188498,1.0004247491084879,1.0056873027993034,0.9884589862247388,1.0114077951760085,1.0073809188410148,1.0074091703310692 +2023-10-26,1.0045952834686116,1.0003962450612822,1.006952670725885,1.006136895391269,0.9966651658433807,0.9944792777787616,1.0012193057021197,1.0158139390352339,0.9878829392873684,0.9856290101292375 +2023-10-27,1.001849316292457,1.0007091283312537,1.0019352868987963,1.0026430186106363,0.9979700406137672,1.015213194607638,0.9843152671647805,0.9919476252205345,0.9991677988701059,0.9838991390867703 +2023-10-30,0.9984426698547281,1.0169568644437144,1.0004089484795988,1.0025101542321715,0.9876749358663311,0.9940541329696772,0.9964543369579575,0.9970272763516904,1.0131015205351144,1.0057936291336398 +2023-10-31,0.9891447683388165,1.0026686021810107,1.0051956683991485,1.0116690486809867,1.0161341794922671,0.9900984048862139,0.9921226153897452,0.9877004864215384,0.9978620900009632,1.0048754301654501 +2023-11-01,1.0101242520980867,0.9994406462602385,0.9970060157045357,1.0017190558077451,0.9918817037935007,1.0213194678129751,0.9842487587504203,1.002049503155332,1.0206463082695345,1.0002680343603918 +2023-11-02,0.9983010544946069,0.9966312328438447,0.998397368769538,1.0140259380236032,0.9783198483484054,1.0156556220398334,0.9860585236517859,0.9975365160768265,0.9959159184350247,1.0061040871706703 +2023-11-03,0.9843426278339638,1.0048333698907843,1.0206534875623263,0.9866580632532395,1.0020992620477769,0.9936007412506734,1.0044688276233211,1.0003915544115816,0.993804403262743,1.0050916414222903 +2023-11-06,1.0184109100114436,0.9982924216564211,1.0074250091081756,0.9873479886714691,0.9906793453438,1.0049362058989093,1.0151548478190293,1.003763196597805,0.9970737096535184,1.0001929326633463 +2023-11-07,0.9877713083194752,1.0062646948921716,1.009064163595064,0.9956884183436082,0.9955096902444521,1.002862872511379,0.9958414733581344,0.9995387802482869,1.0214234747589435,0.9977323180769103 +2023-11-08,0.9966223157329727,0.9937442312555049,1.0076711937057814,0.9983890572313456,0.9937260336529451,1.013503398689584,1.0145001519329557,0.9942125763756688,0.981704041441482,1.0103281073884003 +2023-11-09,0.9933757395323936,1.008139200643823,0.9806878770604235,1.009167742041287,0.988158944381872,1.0075358941889896,1.0003427894172336,0.9907040824940722,0.9961371170726308,1.0070881876902522 +2023-11-10,1.0012597373344823,1.0060624324131398,1.020165027468547,0.9846762065985835,1.0165068834191746,1.0012443329158067,0.9912506597265064,0.9869823361065424,0.9983102253717107,1.0094609758550959 +2023-11-13,0.9989250869296117,1.0154293716529916,0.9857901694644532,1.0000791136508593,0.987751694236189,1.0038436869164193,1.0091101207310342,0.9960004018469665,0.9744889116838943,1.0021918801328056 +2023-11-14,1.0045778319207623,1.0042519615957708,1.0126370024617992,0.9895445058838906,1.0070267335041556,1.0121988818505454,0.9825678532021028,1.003402292963444,0.9951699043005161,0.9993849624821438 +2023-11-15,1.0036835324269497,0.9953386125057291,0.9934643699522765,1.0005416708255668,0.9893842892441593,0.9893983466147219,1.0070182460920927,0.9887755294083416,1.0068867302224815,1.0048375764010895 +2023-11-16,0.9830865978049758,0.993445925730506,1.0122150962988459,0.9904343890087203,0.9955658175226139,1.0048322467607171,1.008066263505105,0.9976872895847297,0.9942415418989498,1.0145282220916287 +2023-11-17,1.0177445939675895,1.010038632890039,1.0010537362159557,0.9921483294534325,0.991928308401337,1.005439883778777,1.00439360591714,1.0143175135922244,1.0067270264042503,0.9852786316720714 +2023-11-20,1.010777135604098,0.9902670683010449,0.9963669030059362,1.0027056557601148,1.0203611924895875,1.0317941556244594,1.0062869107729353,0.9983693647455034,1.0055604587661955,1.0091178710875488 +2023-11-21,0.996997839268774,1.018317864563897,1.002503836969153,1.0051908569470545,1.0068828210038716,1.0044256304102075,1.0086263997890654,0.9940452682480938,0.9946314449372293,0.989256584852643 +2023-11-22,1.0046055855637959,1.0080213651754526,1.0047891602054546,1.0170893039113011,1.0001440501859413,1.006911189355718,0.9893402137764243,0.9963357328472019,1.0071810384577038,1.008728897680558 +2023-11-23,0.9972640799928948,0.9994841405826649,0.9851328858010601,0.9966353810509656,1.0091453975510336,1.0059697988077643,1.005220235408924,1.0006979803468046,1.0002706682103133,0.9936172454768352 +2023-11-24,1.0072141819331377,1.0044194666082704,1.0051333190457215,0.994952433566888,0.978892518801039,1.0112341616504337,0.9954221359489389,0.9916076563523107,1.0071603023681506,0.9962867846983134 +2023-11-27,1.01085788745301,1.0063903914737997,1.0070605018694914,0.9866306177024274,1.012395636732481,1.0028164641159198,0.9965133212380852,1.0016352201902465,0.9825909669197432,1.0042957284175345 +2023-11-28,0.9899570554954203,0.9867617044842171,0.9850886992520954,1.011391275788363,0.9939258885212733,1.015658608159303,0.9948552650848086,0.9832679819331365,0.989094654756677,1.0126373004625313 +2023-11-29,0.998641941218212,0.9947310568678348,1.0018018035593428,1.0052314639303006,1.0114389178988714,1.0147933465423788,0.9966080791469879,0.9870244410755054,0.9960730789880229,1.0028067365961937 +2023-11-30,0.9906068050153479,0.9906722665879464,1.0036445039279864,0.9997135175282379,1.0005281093547842,0.992642248418523,0.9978982047294328,0.9909984274918284,1.009143533132465,1.0106083672686033 +2023-12-01,0.9819038590557553,0.9909461267901665,0.9853431798493267,0.993719565550142,0.999365821478354,0.9858052568061934,0.9910219474452368,0.9902086765011393,1.0022752577734617,1.0008938426097809 +2023-12-04,0.9930071887537879,1.001970146915561,0.9947470444322637,0.9974866127569054,1.0170787227484661,1.013697574332019,0.9872857059695896,1.008533528913023,1.008348622535552,0.9887807773128543 +2023-12-05,1.0084230523942996,1.0157013094624179,0.9890351094278903,0.9910651271339667,1.0104306384339956,1.0029192057151142,1.0057311231594874,1.0036124012144474,1.0041154043235434,0.9870202517358571 +2023-12-06,1.0107303386046236,1.0119669375478055,0.9979082832542006,0.9997652580580635,0.9850025243459583,1.0053568444166006,1.0059381356582948,0.9995781788215867,1.0115092613091299,0.9968641547559379 +2023-12-07,1.005863180811642,0.9900531569689661,0.9999644791221389,0.9984576480701336,1.0024560904810238,0.996510832054683,0.9988858951194646,1.0084963626519146,0.995841030196851,0.9842594273401748 +2023-12-08,1.0178533380558834,1.0141132048352925,0.9873579635309511,1.0071223219949672,0.9951818967717642,1.002838894203141,1.0031471833052765,0.9978582188902125,0.9923914361297126,0.9933170205773972 +2023-12-11,0.9910781191467104,0.9919146416906505,0.9995283283715596,0.9930665481703754,1.007045222284535,1.015186623950296,0.9944151213312225,1.0025974124512378,1.0052103781562651,1.004932145894884 +2023-12-12,1.0009600131971181,1.0076559824884448,1.005035123369589,0.987897210874201,1.008931207991044,1.0091141919654656,0.9925946943557669,1.0005795462265337,1.007058081599974,0.9981086526600298 +2023-12-13,1.010989728736334,1.024125138734487,0.9923694016418959,0.9864817573055193,1.0032434345439638,1.007443188890953,0.9978935579310743,1.0148416664023572,0.9869004972071974,1.0071546593767573 +2023-12-14,0.9941585199720541,1.0175459317268785,1.0203290298177334,0.9925612396781271,0.9947184254609713,1.00883467628136,0.9963354245080908,0.9997459201044429,1.000453987226446,0.9811825691719822 +2023-12-15,1.0000616244377654,0.99332509904155,0.9952799464060682,1.0147439554544637,0.9877110644010945,1.0083668600189202,0.9974137208940991,0.9974057691629601,1.0081366429665517,1.0036070025787567 +2023-12-18,1.005923605545215,1.0099308332781247,0.9968917567892496,0.9940951353029911,0.9894050211415085,0.9919782421049103,1.0301361152649635,1.0127271047225166,0.9867774525336774,0.9870598732173996 +2023-12-19,1.005031275188302,1.0056887679077862,1.0057050505223013,0.9976532001152197,0.9989460132346177,1.0034848532726062,1.001059490927327,0.9782470791104305,0.9979042029502184,0.9917204019059985