From 75605275426edc609abafccd51b1b7c029bc9d2a Mon Sep 17 00:00:00 2001 From: "ap550083@gmail.com" Date: Tue, 23 Jul 2024 23:39:05 +0530 Subject: [PATCH] PortFolio Optimaization Using Genetic ALgorithm added --- ...Optimization_Using_Genetic_Algorithm.ipynb | 1090 +++++++++++++++++ .../portfolio_data.csv | 1044 ++++++++++++++++ .../readme.md | 36 + 3 files changed, 2170 insertions(+) create mode 100644 PortFolio Optimaization Using Genetic ALgorithm/Portfolio_Optimization_Using_Genetic_Algorithm.ipynb create mode 100644 PortFolio Optimaization Using Genetic ALgorithm/portfolio_data.csv create mode 100644 PortFolio Optimaization Using Genetic ALgorithm/readme.md diff --git a/PortFolio Optimaization Using Genetic ALgorithm/Portfolio_Optimization_Using_Genetic_Algorithm.ipynb b/PortFolio Optimaization Using Genetic ALgorithm/Portfolio_Optimization_Using_Genetic_Algorithm.ipynb new file mode 100644 index 0000000000..292f4a3ac6 --- /dev/null +++ b/PortFolio Optimaization Using Genetic ALgorithm/Portfolio_Optimization_Using_Genetic_Algorithm.ipynb @@ -0,0 +1,1090 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# **Portfolio Optimization Using Genetic Algorithm**" + ], + "metadata": { + "id": "FgneRLb5xWON" + } + }, + { + "cell_type": "code", + "source": [ + "Load the data" + ], + "metadata": { + "id": "HTGK4uLYMf5A" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 324 + }, + "id": "CCgHhKp6FHbT", + "outputId": "f358ffad-1db0-4203-ee75-37ce1f5c1234" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Asset_1 Asset_2 Asset_3 Portfolio_Value Market_Index\n", + "timestamp \n", + "01-01-2020 544.883183 423.654799 645.894113 525.051834 1034.932512\n", + "02-01-2020 437.587211 891.773001 963.662760 792.579124 1026.081261\n", + "03-01-2020 383.441519 791.725038 528.894920 600.939199 1024.844657\n", + "06-01-2020 568.044561 925.596638 71.036058 564.754139 966.747919\n", + "07-01-2020 87.129300 20.218397 832.619845 290.226071 1036.577579" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Asset_1Asset_2Asset_3Portfolio_ValueMarket_Index
timestamp
01-01-2020544.883183423.654799645.894113525.0518341034.932512
02-01-2020437.587211891.773001963.662760792.5791241026.081261
03-01-2020383.441519791.725038528.894920600.9391991024.844657
06-01-2020568.044561925.59663871.036058564.754139966.747919
07-01-202087.12930020.218397832.619845290.2260711036.577579
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df", + "summary": "{\n \"name\": \"df\",\n \"rows\": 1043,\n \"fields\": [\n {\n \"column\": \"timestamp\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 1043,\n \"samples\": [\n \"20-12-2023\",\n \"27-01-2021\",\n \"19-01-2022\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Asset_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 297.35676415681485,\n \"min\": 0.073699433,\n \"max\": 998.3548771,\n \"num_unique_values\": 1043,\n \"samples\": [\n 968.94482,\n 817.3391115,\n 650.9140039\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Asset_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 291.42740758056345,\n \"min\": 0.367343751,\n \"max\": 999.9640185,\n \"num_unique_values\": 1043,\n \"samples\": [\n 161.7411946,\n 473.1429785,\n 827.3132278\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Asset_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 286.894731308728,\n \"min\": 0.545964897,\n \"max\": 999.8085781,\n \"num_unique_values\": 1043,\n \"samples\": [\n 272.3958027,\n 882.2836719,\n 684.4985465\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Portfolio_Value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 176.64503631072182,\n \"min\": 70.49999954,\n \"max\": 953.5230386,\n \"num_unique_values\": 1043,\n \"samples\": [\n 412.0217229,\n 692.1879739,\n 735.8043658\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Market_Index\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 49.23344411753262,\n \"min\": 849.6750642,\n \"max\": 1190.083011,\n \"num_unique_values\": 1043,\n \"samples\": [\n 988.9304751,\n 1040.616679,\n 981.022294\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Load data\n", + "df = pd.read_csv('/content/portfolio_data.csv', index_col=0, parse_dates=True)\n", + "df.head()\n" + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "SzuX4BaAMi1X" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# **Calculate Return**" + ], + "metadata": { + "id": "otw_6mVnwCrn" + } + }, + { + "cell_type": "code", + "source": [ + "returns = df.pct_change().dropna()\n", + "returns.head()\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 237 + }, + "id": "Pm3NBpSVFbEj", + "outputId": "73fa7e6b-70d1-4b18-bbe0-393da1eaedff" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Asset_1 Asset_2 Asset_3 Portfolio_Value Market_Index\n", + "timestamp \n", + "02-01-2020 -0.196916 1.104952 0.491983 0.509525 -0.008552\n", + "03-01-2020 -0.123737 -0.112190 -0.451162 -0.241793 -0.001205\n", + "06-01-2020 0.481437 0.169089 -0.865690 -0.060214 -0.056688\n", + "07-01-2020 -0.846615 -0.978156 10.721087 -0.486102 0.072232\n", + "08-01-2020 7.931057 42.030717 0.175348 2.029164 -0.019868" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Asset_1Asset_2Asset_3Portfolio_ValueMarket_Index
timestamp
02-01-2020-0.1969161.1049520.4919830.509525-0.008552
03-01-2020-0.123737-0.112190-0.451162-0.241793-0.001205
06-01-20200.4814370.169089-0.865690-0.060214-0.056688
07-01-2020-0.846615-0.97815610.721087-0.4861020.072232
08-01-20207.93105742.0307170.1753482.029164-0.019868
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "returns", + "summary": "{\n \"name\": \"returns\",\n \"rows\": 1042,\n \"fields\": [\n {\n \"column\": \"timestamp\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 1042,\n \"samples\": [\n \"14-01-2022\",\n \"03-04-2023\",\n \"02-11-2021\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Asset_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 224.6327785434078,\n \"min\": -0.9999210466892944,\n \"max\": 7222.0687432832765,\n \"num_unique_values\": 1042,\n \"samples\": [\n -0.6761679148750576,\n 0.49714190646952816,\n -0.4763627141394565\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Asset_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 59.53731595106503,\n \"min\": -0.9988055106324675,\n \"max\": 1736.7807387827322,\n \"num_unique_values\": 1042,\n \"samples\": [\n 0.2878634293587754,\n -0.8129127864207362,\n -0.8511612594885148\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Asset_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 17.748320739953726,\n \"min\": -0.9993120588883697,\n \"max\": 380.4407359233574,\n \"num_unique_values\": 1042,\n \"samples\": [\n -0.5503353506007611,\n -0.06812604800404243,\n -0.4344354157245046\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Portfolio_Value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.78378699798799,\n \"min\": -0.8891291434918596,\n \"max\": 6.697990119731567,\n \"num_unique_values\": 1042,\n \"samples\": [\n -0.21442045447586378,\n -0.2965740287022468,\n -0.6318635767325322\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Market_Index\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.06793369258923397,\n \"min\": -0.2066701830021066,\n \"max\": 0.20590153875399797,\n \"num_unique_values\": 1042,\n \"samples\": [\n -0.0447209020183893,\n -0.12488407279002756,\n -0.045631757458398425\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 2 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Define Fitness Function" + ], + "metadata": { + "id": "7MLPZBswwuTL" + } + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "def fitness_function(weights, returns):\n", + " portfolio_return = np.sum(returns.mean() * weights) * 252\n", + " portfolio_stddev = np.sqrt(np.dot(weights.T, np.dot(returns.cov() * 252, weights)))\n", + " sharpe_ratio = portfolio_return / portfolio_stddev\n", + " return sharpe_ratio\n" + ], + "metadata": { + "id": "ADnAYwDKFdu7" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Initial Population" + ], + "metadata": { + "id": "tN7T8oixw0ZL" + } + }, + { + "cell_type": "code", + "source": [ + "def initialize_population(pop_size, num_assets):\n", + " population = []\n", + " for _ in range(pop_size):\n", + " weights = np.random.random(num_assets)\n", + " weights /= np.sum(weights)\n", + " population.append(weights)\n", + " return np.array(population)\n", + "\n", + "pop_size = 100\n", + "num_assets = len(df.columns)\n", + "population = initialize_population(pop_size, num_assets)\n" + ], + "metadata": { + "id": "newRizz2FhTL" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Selection" + ], + "metadata": { + "id": "xfwajDq9w4AH" + } + }, + { + "cell_type": "code", + "source": [ + "def selection(population, fitness_scores, num_parents):\n", + " parents = np.empty((num_parents, population.shape[1]))\n", + " for i in range(num_parents):\n", + " max_fitness_idx = np.where(fitness_scores == np.max(fitness_scores))\n", + " max_fitness_idx = max_fitness_idx[0][0]\n", + " parents[i, :] = population[max_fitness_idx, :]\n", + " fitness_scores[max_fitness_idx] = -999999\n", + " return parents\n", + "\n", + "num_parents = 20\n", + "fitness_scores = np.array([fitness_function(weights, returns) for weights in population])\n", + "parents = selection(population, fitness_scores, num_parents)\n" + ], + "metadata": { + "id": "JVhMT8DbFjMo" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Crossover" + ], + "metadata": { + "id": "jqEhbITsw9t1" + } + }, + { + "cell_type": "code", + "source": [ + "def crossover(parents, offspring_size):\n", + " offspring = np.empty(offspring_size)\n", + " crossover_point = np.uint8(offspring_size[1]/2)\n", + "\n", + " for k in range(offspring_size[0]):\n", + " parent1_idx = k % parents.shape[0]\n", + " parent2_idx = (k + 1) % parents.shape[0]\n", + " offspring[k, 0:crossover_point] = parents[parent1_idx, 0:crossover_point]\n", + " offspring[k, crossover_point:] = parents[parent2_idx, crossover_point:]\n", + " return offspring\n", + "\n", + "offspring_size = (pop_size - parents.shape[0], num_assets)\n", + "offspring = crossover(parents, offspring_size)\n" + ], + "metadata": { + "id": "1kGod21wFldT" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Mutation" + ], + "metadata": { + "id": "AjnCQOIrxBbe" + } + }, + { + "cell_type": "code", + "source": [ + "def mutation(offspring, mutation_rate=0.01):\n", + " for idx in range(offspring.shape[0]):\n", + " for gene_idx in range(offspring.shape[1]):\n", + " if np.random.rand() < mutation_rate:\n", + " random_value = np.random.random()\n", + " offspring[idx, gene_idx] = offspring[idx, gene_idx] + random_value\n", + " offspring[idx, gene_idx] /= np.sum(offspring[idx, :])\n", + " return offspring\n", + "\n", + "mutated_offspring = mutation(offspring)\n" + ], + "metadata": { + "id": "fCZuohWDFnyT" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Termination" + ], + "metadata": { + "id": "xEDvzIMbxGTc" + } + }, + { + "cell_type": "code", + "source": [ + "def mutation(offspring, mutation_rate=0.01):\n", + " for idx in range(offspring.shape[0]):\n", + " for gene_idx in range(offspring.shape[1]):\n", + " if np.random.rand() < mutation_rate:\n", + " random_value = np.random.random()\n", + " offspring[idx, gene_idx] = offspring[idx, gene_idx] + random_value\n", + " offspring[idx, gene_idx] /= np.sum(offspring[idx, :])\n", + " return offspring\n", + "\n", + "mutated_offspring = mutation(offspring)\n" + ], + "metadata": { + "id": "WzsJq1NSFpf3" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "s-2eE9IWxIxw" + } + }, + { + "cell_type": "code", + "source": [ + "def genetic_algorithm(returns, num_generations, pop_size, num_parents, mutation_rate):\n", + " num_assets = returns.shape[1]\n", + " population = initialize_population(pop_size, num_assets)\n", + " for generation in range(num_generations):\n", + " fitness_scores = np.array([fitness_function(weights, returns) for weights in population])\n", + " parents = selection(population, fitness_scores, num_parents)\n", + " offspring_size = (pop_size - parents.shape[0], num_assets)\n", + " offspring = crossover(parents, offspring_size)\n", + " offspring = mutation(offspring, mutation_rate)\n", + " population[0:parents.shape[0], :] = parents\n", + " population[parents.shape[0]:, :] = offspring\n", + " best_fitness = np.max(fitness_scores)\n", + " print(f\"Generation {generation}: Best Fitness = {best_fitness}\")\n", + " return population, fitness_scores\n", + "\n", + "num_generations = 100\n", + "population, fitness_scores = genetic_algorithm(returns, num_generations, pop_size, num_parents, mutation_rate=0.01)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rkW-7vLYFrRq", + "outputId": "45fbe294-405e-491d-9b41-312512d0b006" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Generation 0: Best Fitness = 1.417253614680323\n", + "Generation 1: Best Fitness = 1.8779466185434148\n", + "Generation 2: Best Fitness = 2.0430037580572336\n", + "Generation 3: Best Fitness = 2.0920158355234864\n", + "Generation 4: Best Fitness = 2.4902477236462275\n", + "Generation 5: Best Fitness = 2.4902477236462275\n", + "Generation 6: Best Fitness = 2.4902477236462275\n", + "Generation 7: Best Fitness = 2.521225040481554\n", + "Generation 8: Best Fitness = 2.521225040481554\n", + "Generation 9: Best Fitness = 2.5409096684344568\n", + "Generation 10: Best Fitness = 2.5409096684344568\n", + "Generation 11: Best Fitness = 2.5414701981903742\n", + "Generation 12: Best Fitness = 2.5414701981903742\n", + "Generation 13: Best Fitness = 2.575155889229864\n", + "Generation 14: Best Fitness = 2.575155889229864\n", + "Generation 15: Best Fitness = 2.575155889229864\n", + "Generation 16: Best Fitness = 2.5758970013396527\n", + "Generation 17: Best Fitness = 2.5758970013396527\n", + "Generation 18: Best Fitness = 2.5759063088633067\n", + "Generation 19: Best Fitness = 2.5760569272179454\n", + "Generation 20: Best Fitness = 2.5760569272179454\n", + "Generation 21: Best Fitness = 2.580023239229417\n", + "Generation 22: Best Fitness = 2.580023239229417\n", + "Generation 23: Best Fitness = 2.5861124541129388\n", + "Generation 24: Best Fitness = 2.5861124541129388\n", + "Generation 25: Best Fitness = 2.586185095785435\n", + "Generation 26: Best Fitness = 2.586185095785435\n", + "Generation 27: Best Fitness = 2.586185095785435\n", + "Generation 28: Best Fitness = 2.586185095785435\n", + "Generation 29: Best Fitness = 2.586185095785435\n", + "Generation 30: Best Fitness = 2.586185095785435\n", + "Generation 31: Best Fitness = 2.586185095785435\n", + "Generation 32: Best Fitness = 2.586185095785435\n", + "Generation 33: Best Fitness = 2.586185095785435\n", + "Generation 34: Best Fitness = 2.586185095785435\n", + "Generation 35: Best Fitness = 2.586185095785435\n", + "Generation 36: Best Fitness = 2.586185095785435\n", + "Generation 37: Best Fitness = 2.586185095785435\n", + "Generation 38: Best Fitness = 2.588992264842197\n", + "Generation 39: Best Fitness = 2.596323300370395\n", + "Generation 40: Best Fitness = 2.596323300370395\n", + "Generation 41: Best Fitness = 2.596323300370395\n", + "Generation 42: Best Fitness = 2.596323300370395\n", + "Generation 43: Best Fitness = 2.596323300370395\n", + "Generation 44: Best Fitness = 2.596323300370395\n", + "Generation 45: Best Fitness = 2.596323300370395\n", + "Generation 46: Best Fitness = 2.596323300370395\n", + "Generation 47: Best Fitness = 2.596331571848502\n", + "Generation 48: Best Fitness = 2.596331571848502\n", + "Generation 49: Best Fitness = 2.596331571848502\n", + "Generation 50: Best Fitness = 2.596331571848502\n", + "Generation 51: Best Fitness = 2.596331571848502\n", + "Generation 52: Best Fitness = 2.596331571848502\n", + "Generation 53: Best Fitness = 2.596331571848502\n", + "Generation 54: Best Fitness = 2.596331571848502\n", + "Generation 55: Best Fitness = 2.596331571848502\n", + "Generation 56: Best Fitness = 2.596331571848502\n", + "Generation 57: Best Fitness = 2.596331571848502\n", + "Generation 58: Best Fitness = 2.596331571848502\n", + "Generation 59: Best Fitness = 2.596331571848502\n", + "Generation 60: Best Fitness = 2.596331571848502\n", + "Generation 61: Best Fitness = 2.596331571848502\n", + "Generation 62: Best Fitness = 2.596331571848502\n", + "Generation 63: Best Fitness = 2.596331571848502\n", + "Generation 64: Best Fitness = 2.596331571848502\n", + "Generation 65: Best Fitness = 2.596331571848502\n", + "Generation 66: Best Fitness = 2.596331571848502\n", + "Generation 67: Best Fitness = 2.5963368694291065\n", + "Generation 68: Best Fitness = 2.5963368694291065\n", + "Generation 69: Best Fitness = 2.5963368694291065\n", + "Generation 70: Best Fitness = 2.5963368694291065\n", + "Generation 71: Best Fitness = 2.5963368694291065\n", + "Generation 72: Best Fitness = 2.5963368694291065\n", + "Generation 73: Best Fitness = 2.5963368694291065\n", + "Generation 74: Best Fitness = 2.5963368694291065\n", + "Generation 75: Best Fitness = 2.5963368694291065\n", + "Generation 76: Best Fitness = 2.5963368694291065\n", + "Generation 77: Best Fitness = 2.5963368694291065\n", + "Generation 78: Best Fitness = 2.5963368694291065\n", + "Generation 79: Best Fitness = 2.5963498076018925\n", + "Generation 80: Best Fitness = 2.5963498076018925\n", + "Generation 81: Best Fitness = 2.5963498076018925\n", + "Generation 82: Best Fitness = 2.5963498076018925\n", + "Generation 83: Best Fitness = 2.5963498076018925\n", + "Generation 84: Best Fitness = 2.5963498076018925\n", + "Generation 85: Best Fitness = 2.5963498076018925\n", + "Generation 86: Best Fitness = 2.5963498076018925\n", + "Generation 87: Best Fitness = 2.5963498076018925\n", + "Generation 88: Best Fitness = 2.5963498076018925\n", + "Generation 89: Best Fitness = 2.5963498076018925\n", + "Generation 90: Best Fitness = 2.5963498076018925\n", + "Generation 91: Best Fitness = 2.5963498076018925\n", + "Generation 92: Best Fitness = 2.5963498076018925\n", + "Generation 93: Best Fitness = 2.5963498076018925\n", + "Generation 94: Best Fitness = 2.5963498076018925\n", + "Generation 95: Best Fitness = 2.5963498076018925\n", + "Generation 96: Best Fitness = 2.5963498076018925\n", + "Generation 97: Best Fitness = 2.5963498076018925\n", + "Generation 98: Best Fitness = 2.5963498076018925\n", + "Generation 99: Best Fitness = 2.5963502910456278\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Evaluate Best portfolio" + ], + "metadata": { + "id": "YFQ1uXj5xNuu" + } + }, + { + "cell_type": "code", + "source": [ + "best_idx = np.argmax(fitness_scores)\n", + "best_portfolio = population[best_idx, :]\n", + "best_portfolio_return = np.sum(returns.mean() * best_portfolio) * 252\n", + "best_portfolio_stddev = np.sqrt(np.dot(best_portfolio.T, np.dot(returns.cov() * 252, best_portfolio)))\n", + "best_portfolio_sharpe = best_portfolio_return / best_portfolio_stddev\n", + "\n", + "print(f\"Best Portfolio Weights: {best_portfolio}\")\n", + "print(f\"Expected Annual Return: {best_portfolio_return}\")\n", + "print(f\"Annual Volatility: {best_portfolio_stddev}\")\n", + "print(f\"Sharpe Ratio: {best_portfolio_sharpe}\")\n" + ], + "metadata": { + "id": "6vLI0G12Fxfc", + "outputId": "061304f9-ef21-447f-87c7-f1782a0e732f", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Best Portfolio Weights: [0.04189262 0.13620183 0.72651027 0.56140873 0.49904594]\n", + "Expected Annual Return: 737.635018426684\n", + "Annual Volatility: 284.1045836421465\n", + "Sharpe Ratio: 2.5963502910456278\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "tybZDt2YxUIU" + } + } + ] +} \ No newline at end of file diff --git a/PortFolio Optimaization Using Genetic ALgorithm/portfolio_data.csv b/PortFolio Optimaization Using Genetic ALgorithm/portfolio_data.csv new file mode 100644 index 0000000000..95769f08db --- /dev/null +++ b/PortFolio Optimaization Using Genetic ALgorithm/portfolio_data.csv @@ -0,0 +1,1044 @@ +timestamp,Asset_1,Asset_2,Asset_3,Portfolio_Value,Market_Index +01-01-2020,544.883183,423.6547993,645.8941131,525.0518337,1034.932512 +02-01-2020,437.5872113,891.7730008,963.6627605,792.5791242,1026.081261 +03-01-2020,383.4415188,791.7250381,528.8949198,600.9391987,1024.844657 +06-01-2020,568.0445611,925.5966383,71.0360582,564.7541386,966.7479191 +07-01-2020,87.1292997,20.21839744,832.6198455,290.2260711,1036.577579 +08-01-2020,778.1567509,870.0121482,978.6183422,879.1422738,1015.982489 +09-01-2020,799.1585642,461.4793623,780.5291763,650.8235845,979.5072731 +10-01-2020,118.2744259,639.9210213,143.3532874,346.2740605,977.3331284 +13-01-2020,944.668917,521.8483218,414.66194,601.6980413,1044.635408 +14-01-2020,264.5556121,774.2336894,456.1503322,539.1765374,976.3197972 +15-01-2020,568.4339489,18.78980044,617.6354971,351.6659399,1015.182824 +16-01-2020,612.0957227,616.9339969,943.7480785,717.0579701,1051.697849 +17-01-2020,681.8202991,359.5079006,437.0319538,469.789947,1095.467131 +20-01-2020,697.6311959,60.22547163,666.7667154,418.9675517,1083.193656 +21-01-2020,670.6378696,210.3825611,128.9262977,308.231428,1045.041138 +22-01-2020,315.4283509,363.7107709,570.1967704,414.8719316,924.7044324 +23-01-2020,438.6015135,988.3738381,102.0448107,566.2503907,965.5475785 +24-01-2020,208.8767561,161.3095179,653.1083255,326.6516678,972.5956406 +27-01-2020,253.2916025,466.3107729,244.425592,340.4679204,1082.657492 +28-01-2020,158.9695836,110.3751412,656.3295895,292.7978899,965.034103 +29-01-2020,138.1829513,196.5823617,368.7251707,234.3795212,1019.308319 +30-01-2020,820.9932298,97.10127579,837.9449075,520.6572775,1005.043353 +31-01-2020,96.09840789,976.459465,468.6512016,583.3616179,953.2436395 +03-02-2020,976.7610882,604.8455197,739.2635794,746.0529051,1019.0912 +04-02-2020,39.18779225,282.8069626,120.1965612,167.1724457,1019.914804 +05-02-2020,296.1401975,118.727719,317.9831794,228.0225816,937.2112559 +06-02-2020,414.2629945,64.14749635,692.4721194,352.7940955,1061.143872 +07-02-2020,566.6014542,265.3894909,523.2480535,425.9889372,895.6744986 +10-02-2020,93.94051076,575.9464956,929.2961976,556.6540235,970.4621424 +11-02-2020,318.5689525,667.41038,131.7978624,407.8754227,1048.598515 +12-02-2020,716.3272041,289.4060929,183.191362,370.6543022,940.3371083 +13-02-2020,586.5129348,20.10754619,828.9400292,422.6315936,1017.513296 +14-02-2020,4.695476193,677.8165368,270.0079732,371.1914999,935.1819806 +17-02-2020,735.1940221,962.1885451,248.7531435,680.0671289,995.3487928 +18-02-2020,576.1573344,592.0419313,572.2519058,581.6511884,884.3113443 +19-02-2020,223.0816326,952.7490115,447.1253786,600.6424228,957.8714149 +20-02-2020,846.4086725,699.4792753,297.4369509,614.022136,922.8539276 +21-02-2020,813.7978197,396.5057408,881.1031971,658.5212939,979.9118129 +24-02-2020,581.2728726,881.7353619,692.5315901,742.6416527,979.2384302 +25-02-2020,725.2542798,501.3243819,956.0836347,702.3525005,966.3167914 +26-02-2020,643.9901992,423.8550486,606.3932141,539.3912271,1039.89566 +27-02-2020,19.19319831,301.5748167,660.1735375,337.3144106,955.6560198 +28-02-2020,290.0776072,618.015429,428.7687009,471.5582356,1031.719334 +02-03-2020,135.4740642,298.282326,569.9649107,339.037804,1081.463788 +03-03-2020,590.8727612,574.3252488,653.2008199,603.2290051,1006.953208 +04-03-2020,652.10327,431.4184354,896.5465959,634.7961626,957.1164898 +05-03-2020,367.56187,435.8649253,891.923355,559.1185505,937.5330743 +06-03-2020,806.193989,703.8885835,100.2268873,543.9263515,964.510745 +09-03-2020,919.4826137,714.2412995,998.8470066,857.4671268,1035.232136 +10-03-2020,149.4483047,868.1260574,162.4929347,456.891621,1007.779537 +11-03-2020,615.5595643,123.8199828,848.0082293,480.1024111,1046.839761 +12-03-2020,807.3189587,569.1007386,407.1832972,582.5815776,1038.516544 +13-03-2020,69.16699546,697.4287731,453.5426827,453.6735159,1007.040533 +16-03-2020,722.0555995,866.3823259,975.521505,861.6408095,1023.674413 +17-03-2020,855.8033424,11.71408419,359.9780645,345.5981187,1092.76231 +18-03-2020,729.9905624,171.6296773,521.0366062,429.4308312,1070.782811 +19-03-2020,54.33798834,199.9965249,18.52179446,104.7142123,984.8626992 +20-03-2020,793.6977034,223.9246881,345.3516807,414.031117,1049.483972 +23-03-2020,928.0812935,704.4144019,31.83892953,555.5329783,1029.29254 +24-03-2020,164.6941565,621.4784015,577.2285886,485.5484771,1056.819404 +25-03-2020,237.8928214,934.2139979,613.965956,648.5546497,1033.580829 +26-03-2020,535.632803,589.9099764,730.1220295,618.9010252,951.2916282 +27-03-2020,311.9449955,398.2210622,209.843749,316.6826082,919.0157717 +30-03-2020,186.1930059,944.37239,739.550795,677.9844533,1028.631351 +31-03-2020,490.4588086,227.414628,254.3564818,306.1444645,1095.13091 +01-04-2020,58.02916032,434.4166256,311.795882,295.6739181,961.2167946 +02-04-2020,696.3434888,377.7518393,179.6036776,401.4907733,990.5955131 +03-04-2020,24.67872839,67.24963146,679.3927735,245.8239327,948.2126137 +06-04-2020,453.6968446,536.5792111,896.671293,626.1519293,1058.891475 +07-04-2020,990.3389474,216.8969844,663.0782031,562.2676586,884.7416572 +08-04-2020,263.3223767,20.65099947,758.3786538,314.5047334,886.8169849 +09-04-2020,320.0171508,383.4638942,588.3171136,430.0616299,1018.750996 +10-04-2020,831.0484552,628.9818436,872.6506554,758.6546729,995.8828177 +13-04-2020,273.5420348,798.0468339,185.6359443,467.6863233,976.0188492 +14-04-2020,952.791657,687.4882764,215.5076771,611.9948072,984.9452607 +15-04-2020,947.3705905,730.8558068,253.9416426,640.7794914,1026.849396 +16-04-2020,213.3119774,518.2007139,25.66271805,283.7909694,979.3098005 +17-04-2020,207.4700754,424.6854688,374.1699803,350.900203,945.1537514 +20-04-2020,463.5754244,277.6287063,586.7843465,423.3113132,953.6318536 +21-04-2020,863.8556059,117.531856,517.3791072,441.2693635,1044.416943 +22-04-2020,132.0681063,716.8596812,396.0597028,460.8652618,973.7629023 +23-04-2020,565.4213119,183.2798362,144.8477593,273.5832681,930.7361208 +24-04-2020,488.0562806,355.6127378,940.4319453,572.5273274,1005.108916 +27-04-2020,765.3252538,748.6636199,903.7197397,801.2385693,1025.249736 +28-04-2020,83.42243544,552.1924699,584.476069,436.8062932,1066.448037 +29-04-2020,961.9363785,292.1475268,240.8287799,455.4028474,1010.895169 +30-04-2020,100.2939423,16.42962959,929.5293168,322.2217454,967.0144376 +01-05-2020,669.9165466,785.152912,281.7301058,598.1008256,1023.700393 +04-05-2020,586.4101662,63.95526612,485.6275959,334.5766111,1036.358744 +05-05-2020,977.4951397,876.5052453,338.1589518,736.4600364,998.0547347 +06-05-2020,961.5701545,231.7016265,949.3188224,649.6487472,997.7700304 +07-05-2020,941.3777047,799.2025874,630.4479369,784.8683889,1013.006645 +08-05-2020,874.2879666,293.0202845,848.9435553,621.0364325,996.5071751 +11-05-2020,617.8766919,13.23685776,347.2335179,278.6362985,1012.505695 +12-05-2020,148.1408609,981.8293898,478.370307,602.5669533,948.9043338 +13-05-2020,497.3913655,639.4725164,368.5846061,517.4001514,942.4781115 +14-05-2020,136.9002717,822.1177332,189.8479119,442.6009403,958.194431 +15-05-2020,511.3189825,224.317029,97.84448449,261.8478161,1032.110547 +18-05-2020,862.1915174,972.919489,960.8346581,939.5475168,1012.939878 +19-05-2020,906.5554992,774.0473327,333.145152,672.6730989,1052.011948 +20-05-2020,81.10138999,407.2411714,232.2341422,265.683909,990.6654539 +21-05-2020,132.4876348,53.42718179,725.5943642,283.1670041,942.8179302 +22-05-2020,11.42745863,770.5807485,146.9466454,373.9646412,1057.227677 +25-05-2020,79.52208259,89.60303424,672.0478074,267.6528708,999.0616472 +26-05-2020,245.3672099,420.5394667,557.3687913,416.1391275,1064.172752 +27-05-2020,860.5511738,727.0442627,270.3279052,621.0296905,1029.897325 +28-05-2020,131.4827993,55.37432042,301.5986345,152.1440798,1109.430934 +29-05-2020,262.1181492,456.1405668,683.2813355,474.7232864,989.0113507 +01-06-2020,695.6254456,283.5188466,379.9269559,423.6826623,1045.036195 +02-06-2020,181.1509617,788.5455123,56.84807643,398.9929819,1044.568205 +03-06-2020,696.9972417,778.6953959,777.4075618,756.4399996,972.2436827 +04-06-2020,259.4225643,373.8131379,587.5996352,409.5546792,991.3758841 +05-06-2020,272.8219024,370.8527992,197.0542802,290.693865,926.9130829 +08-06-2020,459.8558838,44.61230125,799.7958846,390.0492522,922.5601931 +09-06-2020,76.95644699,518.8351488,306.8100995,334.8280233,1006.32844 +10-06-2020,577.5429488,959.4333408,645.5702445,759.8713804,1039.650354 +11-06-2020,35.36243576,430.4024395,510.0168523,349.4282886,1031.901202 +12-06-2020,536.1774947,681.3925106,277.5960977,517.2370622,1017.00123 +15-06-2020,128.8605655,392.6756765,956.4057228,497.0393536,1043.150858 +16-06-2020,187.1308918,903.9839549,543.8059501,600.44072,970.5151102 +17-06-2020,456.9114216,882.0414102,458.6039618,636.9085,986.3733626 +18-06-2020,724.1676366,399.0253217,904.0443929,642.7264479,1036.876076 +19-06-2020,690.0250202,699.6220543,327.7204016,581.6446102,1021.655936 +22-06-2020,756.7786427,636.0610554,240.0202734,545.4542012,989.4905593 +23-06-2020,160.5388225,796.3914745,959.166603,676.8023141,1066.039719 +24-06-2020,458.1388273,590.9841653,857.7226442,638.220998,935.3999374 +25-06-2020,457.2234534,951.8744768,575.751162,702.8261364,974.0660656 +26-06-2020,820.7671207,908.8437184,815.5238188,856.3221999,985.8301113 +29-06-2020,159.4144634,628.8984391,398.4342586,431.7842903,1040.826744 +30-06-2020,62.71295202,424.0322519,258.6840669,276.0611975,1000.11926 +01-07-2020,849.0383084,33.30462655,958.9827219,538.7885666,936.9254127 +02-07-2020,355.3688485,356.7068904,16.32850268,250.721308,1025.700209 +03-07-2020,185.2323252,401.2595008,929.2914173,507.329333,1054.377316 +06-07-2020,99.61493022,945.3015335,869.4885305,695.5382962,1036.965227 +07-07-2020,454.1623969,326.7008818,232.7441293,331.6421193,1030.957746 +08-07-2020,614.4647065,33.07459148,15.60606445,183.1861739,906.2843252 +09-07-2020,428.7957225,68.07407397,251.9409882,221.6320545,955.0056762 +10-07-2020,221.1609153,253.1911937,131.0552312,206.7207705,1024.10403 +13-07-2020,12.0362229,115.4842971,618.4802595,243.9018367,997.2555908 +14-07-2020,974.2562128,990.3450016,409.0540954,805.6523537,1026.12788 +15-07-2020,162.954426,638.7617574,490.3053465,465.4049862,936.6828662 +16-07-2020,989.4097773,65.30420715,783.2344383,535.3104312,996.9252618 +17-07-2020,288.3984973,241.4186201,662.5045715,384.6597337,930.5109491 +20-07-2020,246.063185,665.8591176,517.3085172,507.4571906,902.3160719 +21-07-2020,424.0889884,554.6878087,287.0515199,436.6962338,1014.788954 +22-07-2020,706.5747063,414.8568693,360.5455605,476.0426152,1042.12944 +23-07-2020,828.6569146,924.966912,46.00731089,626.4398409,1012.280821 +24-07-2020,232.6269928,348.5193695,814.9664794,462.2658393,998.350176 +27-07-2020,985.4914276,968.9717047,904.9483455,953.5230386,921.8992829 +28-07-2020,296.5562651,992.0112434,249.4200411,575.5203394,1050.305353 +29-07-2020,105.9061549,950.9526111,233.4202555,502.2196162,997.7977551 +30-07-2020,689.7682651,58.35635898,730.7090991,435.9178793,1097.9781 +31-07-2020,881.7202123,272.4368955,379.0568961,468.5180855,1047.115715 +03-08-2020,374.2961833,748.7882575,237.8072425,490.0350332,899.7437287 +04-08-2020,171.853099,449.2916487,304.4684074,330.1296146,1037.752484 +05-08-2020,839.1891223,237.741826,502.3894575,480.7665265,930.1732381 +06-08-2020,942.5835997,633.9976977,867.2894055,788.9461193,962.0252255 +07-08-2020,940.2096894,750.7648619,699.5750602,785.5593864,987.4621662 +10-08-2020,967.9655666,994.4007896,451.8216827,818.9534873,995.2968775 +11-08-2020,70.86977818,292.7940314,152.3547057,189.8435217,1019.878261 +12-08-2020,417.4863748,131.2893285,604.117804,354.582364,948.857248 +13-08-2020,382.8080592,895.3858843,967.7946718,780.7321371,942.4653998 +14-08-2020,546.8849017,274.8235699,592.2304188,446.1039601,1030.03026 +17-08-2020,896.7611582,406.7333458,552.0782767,582.9287884,999.3374866 +18-08-2020,271.6527676,455.4441495,401.7135354,389.6026869,1008.718652 +19-08-2020,248.4134651,505.8663838,310.380826,376.3291315,890.3158324 +20-08-2020,373.0348639,524.9704423,750.5950229,554.3416513,991.1431308 +21-08-2020,333.5074658,924.1587666,862.3185468,746.9582287,955.4635408 +24-08-2020,48.69029598,253.6425243,446.1355127,258.5492769,953.9686813 +25-08-2020,104.6278887,348.475989,740.0975256,404.7717807,1046.09674 +26-08-2020,680.5144811,622.3844286,710.5284027,665.288484,945.2164386 +27-08-2020,204.923687,341.6981149,676.2424823,408.9256484,945.3551697 +28-08-2020,879.234763,543.6780538,282.6996509,552.4577107,983.4494698 +31-08-2020,30.23525801,710.336829,7.884103508,310.4091807,1022.514442 +01-09-2020,372.6790698,530.5372146,922.1114618,609.8222169,955.7992635 +02-09-2020,89.49454503,405.942322,24.31319971,202.858024,1061.707202 +03-09-2020,342.6109843,622.2310588,279.0679482,440.9357769,1072.492376 +04-09-2020,209.7499497,115.7032333,577.140244,284.057495,955.9276467 +07-09-2020,695.2700059,671.9571406,948.8610207,764.1237179,987.7459122 +08-09-2020,2.703213894,647.1966539,600.3922371,460.2583318,961.0662264 +09-09-2020,588.73961,962.7703198,16.87167337,569.1750773,915.7308948 +10-09-2020,696.4824307,813.6786497,509.8071966,688.0278694,1015.150553 +11-09-2020,333.9648696,790.8401632,97.24292563,453.3776982,1036.679743 +14-09-2020,442.0356377,519.9523746,693.9564109,553.1058761,1100.593213 +15-09-2020,90.88573203,227.7595015,410.3015627,247.7904739,955.1295248 +16-09-2020,623.294673,886.9607812,618.8261682,733.2166313,1066.811755 +17-09-2020,133.4614709,980.5801328,871.7857348,720.1988704,1067.117685 +18-09-2020,502.7207611,922.3479818,541.3807938,691.8667098,1009.892665 +21-09-2020,923.3060679,829.8973686,968.2864103,897.8313648,1030.108174 +22-09-2020,919.7828108,36.03381743,174.7720042,315.5066439,1043.663652 +23-09-2020,389.1346771,952.1426973,300.0289195,599.1611061,1098.704997 +24-09-2020,160.4676439,886.3046661,446.3944155,555.6152169,1023.890428 +25-09-2020,907.8755944,160.2304663,661.1175115,515.6765542,996.9931057 +28-09-2020,440.2637528,76.48676903,696.4631447,366.1974027,956.69156 +29-09-2020,247.3987555,39.61552258,59.94429825,101.5098472,1015.266038 +30-09-2020,61.07853707,907.7329575,739.8839178,629.1498071,1051.208247 +01-10-2020,898.0623572,672.5823113,528.939929,688.3266478,1012.230518 +02-10-2020,304.4463643,997.9622513,362.1890589,615.1382972,961.0038376 +05-10-2020,470.6489492,378.2451749,979.5269293,589.5571199,1004.45381 +06-10-2020,174.6583854,327.9880009,680.348666,396.3155464,993.5423259 +07-10-2020,63.20761834,607.249374,477.6465029,421.4893551,1013.236938 +08-10-2020,283.9999768,238.4132809,514.5127433,336.288885,916.9075816 +09-10-2020,367.9275805,456.5198913,337.4773818,395.8780632,1027.539431 +12-10-2020,970.4936936,133.4394317,96.80395318,345.9978811,1029.771158 +13-10-2020,343.3917288,591.0269009,659.1764719,545.9284209,1022.242672 +14-10-2020,397.2567472,999.2779939,351.8929962,637.3271058,999.8118591 +15-10-2020,721.406668,637.5826945,813.0538632,714.4600805,909.7031869 +16-10-2020,976.2256635,889.7936564,764.5619744,874.0533845,999.0338604 +19-10-2020,698.2484778,335.4981697,147.6855782,374.2577294,1053.03575 +20-10-2020,62.63600306,241.9017042,432.2814812,253.024292,956.9935562 +21-10-2020,521.9962736,773.0835541,958.7409231,763.5270788,900.5365267 +22-10-2020,117.3204804,107.0041402,589.694723,259.5544916,922.9721014 +23-10-2020,745.3980739,848.1503803,935.8320802,847.8720077,1015.701285 +26-10-2020,983.4262423,399.8016922,380.3351835,549.8910049,1018.6438 +27-10-2020,147.8086767,684.9344387,656.7619584,532.5008737,1044.31466 +28-10-2020,862.0625959,97.25799479,497.7769078,426.1479008,997.2370502 +29-10-2020,581.0819297,241.55704,169.0254061,309.87784,924.9835812 +30-10-2020,859.5808364,58.53492224,470.6209039,400.709583,959.074793 +02-11-2020,115.8340013,457.0587613,979.9623263,528.0444988,1040.941969 +03-11-2020,423.7063535,857.1249175,117.3155642,511.5968213,1007.024795 +04-11-2020,271.2520768,403.7927407,399.81214,367.1004127,1032.491482 +05-11-2020,671.3834787,344.7181274,713.7668684,546.6318174,1021.73944 +06-11-2020,639.1868992,399.1611453,431.7601277,473.4886753,989.7519724 +09-11-2020,614.5276998,70.04219014,822.4067384,449.1789055,991.2996581 +10-11-2020,653.4211611,726.3424644,536.9230011,648.0532495,1092.855113 +11-11-2020,110.477111,405.0356133,405.3735828,326.3407072,1020.733713 +12-11-2020,321.04299,29.9503249,737.2542426,327.3164188,993.5706225 +13-11-2020,109.7844581,606.308133,703.2174965,503.5522849,1022.771 +16-11-2020,634.7863229,959.142252,103.2981551,606.7820228,1011.145291 +17-11-2020,867.1671591,29.19023485,534.9168549,410.3035671,892.1321813 +18-11-2020,404.2436179,524.1838604,365.0998771,442.7300512,1032.504226 +19-11-2020,190.5669149,19.12289745,518.1498138,219.8474079,1091.046964 +20-11-2020,842.7768627,373.2159557,222.863818,452.1741872,960.9860066 +23-11-2020,80.53200347,85.31092312,221.3964463,126.2630982,1072.701787 +24-11-2020,100.0140609,265.0396984,66.14946212,159.1718802,987.1565151 +25-11-2020,65.60486721,856.2761796,162.1202607,429.3438028,1014.67357 +26-11-2020,559.6824058,773.4555444,456.4095653,617.8802985,1053.518001 +27-11-2020,153.3688779,199.5961421,432.9842063,259.6554547,963.9999284 +30-11-2020,528.2340892,349.440292,781.4796002,531.3431309,1062.124696 +01-12-2020,751.0216489,927.2118074,28.95254903,601.3261827,939.2891359 +02-12-2020,895.6912912,392.5687885,878.3724954,677.9198783,956.2422626 +03-12-2020,690.7847762,987.3487571,759.2824517,837.2379878,970.3239841 +04-12-2020,364.544626,501.0631728,376.3891552,425.8526072,1033.100268 +07-12-2020,364.911836,260.9044994,495.9702954,361.6749558,982.9562795 +08-12-2020,681.7399451,277.3402713,524.3798111,462.1869132,924.001277 +09-12-2020,117.3802942,159.8452869,46.80635471,113.4064149,989.1733564 +10-12-2020,970.7314428,3.86035151,178.5799681,316.7357657,960.7889309 +11-12-2020,612.8667531,81.36959885,881.8965031,471.9776335,1036.564681 +14-12-2020,719.6201578,966.3899714,507.6355472,758.0119596,982.8382473 +15-12-2020,300.4036832,549.5005728,930.8187173,601.194826,1003.538704 +16-12-2020,520.7614372,267.2070319,877.3987892,524.3947068,979.7263771 +17-12-2020,371.9187485,1.383349999,247.6850225,176.941701,1021.696948 +18-12-2020,318.2335092,858.7774682,458.5031671,589.9572941,990.8204618 +21-12-2020,444.5872878,336.1022664,880.678123,534.1190299,1016.259936 +22-12-2020,945.0267769,991.8903292,376.741267,788.457866,870.3305718 +23-12-2020,966.1474456,791.8795696,675.6891476,802.4427202,1004.862544 +24-12-2020,244.8894794,216.4572609,166.0478245,208.4201342,1020.695684 +25-12-2020,922.7566102,294.0766624,453.0942454,511.6070409,990.0359973 +28-12-2020,493.957834,778.1715955,844.2349616,722.6402741,1033.469624 +29-12-2020,139.0727011,426.9043602,842.8548878,478.9836189,1036.930351 +30-12-2020,818.0333058,102.4137585,156.3833489,310.6031414,1065.210695 +31-12-2020,304.1986916,75.35906908,424.6630028,244.9752972,1005.24058 +01-01-2021,107.6177051,568.2175937,246.5569398,345.1796332,904.3099648 +04-01-2021,596.4330653,117.5256429,975.8838684,512.0114178,885.7250276 +05-01-2021,932.5612039,391.7969386,242.1785941,490.0310843,919.9079524 +06-01-2021,250.3982129,483.3935352,39.9928019,283.4650727,998.1046469 +07-01-2021,639.7051061,408.3029083,377.4065726,460.6193491,992.1347356 +08-01-2021,809.3649715,709.0354602,954.3338154,811.9974413,1013.811993 +11-01-2021,351.9362405,897.5427646,769.9671863,711.9932594,968.7377039 +12-01-2021,357.4246516,621.6654365,288.5699577,447.6086249,963.1754414 +13-01-2021,874.3999171,112.4273172,212.4343613,347.3035228,1027.752397 +14-01-2021,183.0332921,403.0260024,745.23296,450.3690103,1032.796221 +15-01-2021,526.9074491,487.6763235,0.545964897,347.0030557,987.1674932 +18-01-2021,425.4017254,63.55377484,208.2532521,205.2584604,998.0761671 +19-01-2021,932.393939,215.3982043,858.3376386,606.727305,1020.215717 +20-01-2021,802.8933716,159.1462369,605.7119573,469.9404929,1025.217179 +21-01-2021,115.6618719,727.8881584,637.4622774,536.0450964,942.800965 +22-01-2021,811.9385617,479.3845494,914.8630878,703.4883339,964.0213072 +25-01-2021,49.34894679,292.888565,715.0525975,358.7449552,938.4726977 +26-01-2021,418.1092117,172.9513543,107.2107454,218.1346664,974.6546693 +27-01-2021,817.3391115,473.1429785,882.2836719,692.1879739,1040.616679 +28-01-2021,733.2891343,409.7262056,373.5110142,485.046758,1027.313593 +29-01-2021,515.6383467,889.0599532,737.2785797,742.0614196,945.095102 +01-02-2021,5.152964269,694.1578514,919.5074069,579.7678516,1025.613336 +02-02-2021,710.4557595,177.0057816,483.5181274,414.8315875,1004.292155 +03-02-2021,140.3160179,358.9952783,937.1170419,479.8997182,975.3036646 +04-02-2021,923.3053076,282.8368522,339.6310442,471.7984857,929.6770172 +05-02-2021,600.2128681,963.1972953,147.8013341,613.0552694,991.2588314 +08-02-2021,256.9166437,873.5568273,491.8922317,590.1545624,1033.9972 +09-02-2021,898.9610922,185.5178975,532.6685875,484.10624,891.8451176 +10-02-2021,326.2696326,316.5425599,446.8769639,359.5906421,980.1938401 +11-02-2021,433.0774491,357.3468797,914.9707703,550.6503483,1112.714185 +12-02-2021,731.7441854,727.5469913,289.9134496,592.8615634,1033.631836 +15-02-2021,577.7094243,779.1794333,795.5903685,730.3752309,1012.991625 +16-02-2021,344.5304608,770.8727566,735.8938968,645.9636109,963.1407415 +17-02-2021,141.5064856,865.9454686,441.3214702,540.3737136,966.0835081 +18-02-2021,486.4104489,448.3691789,567.8460015,495.622457,995.8355802 +19-02-2021,621.1692474,498.1795658,866.7885433,645.4698201,1080.143181 +22-02-2021,627.7347562,401.4279493,416.6917569,466.7058868,1023.27946 +23-02-2021,810.8386151,348.1919427,211.4547958,429.5255503,956.3920801 +24-02-2021,59.38318801,876.0268479,918.5464512,670.7545938,1058.839348 +25-02-2021,120.1201822,334.4737415,175.3720695,227.7571542,985.3702896 +26-02-2021,115.8984688,899.866743,56.87725915,428.5409029,1084.867324 +01-03-2021,980.4856635,96.4508607,863.4706492,570.9710965,971.6698488 +02-03-2021,566.506107,367.9174878,342.3423766,413.1070007,949.8367122 +03-03-2021,757.3641432,314.573295,657.3189166,539.3901861,1008.731479 +04-03-2021,517.3260835,484.9656452,901.1621706,622.7784846,1049.116349 +05-03-2021,554.6450586,826.861603,725.5735341,722.6065659,1051.87224 +08-03-2021,38.55724606,773.1100525,216.8702501,403.9891031,1007.959588 +09-03-2021,903.1496469,42.92419061,333.0720345,363.0901129,950.5951656 +10-03-2021,99.73294723,475.5891171,820.0224359,481.9266928,974.7329639 +11-03-2021,298.1873597,150.9348973,330.2670357,245.9787162,899.0859066 +12-03-2021,813.8801419,140.3839578,227.3624491,347.5480296,954.3439231 +15-03-2021,68.85196449,705.710044,395.2332435,438.9904138,991.0771593 +16-03-2021,310.8399771,718.6263903,335.9775423,490.7908912,1019.450107 +17-03-2021,727.7712732,815.1993953,217.6628435,606.380755,983.0272839 +18-03-2021,973.8186968,162.3579479,290.8409067,419.3099022,997.1510473 +19-03-2021,179.7952908,345.5056564,480.0608878,342.9308401,980.1907278 +22-03-2021,522.175869,853.6060423,889.4479088,776.0650064,1037.551265 +23-03-2021,220.1038608,622.8940322,111.4960573,356.4411566,955.0443531 +24-03-2021,458.9698602,322.333538,316.5007455,357.0761966,1041.877396 +25-03-2021,482.5842417,729.8276355,69.18265879,458.6714195,1098.044041 +26-03-2021,879.1733377,734.8137746,176.4993889,600.1741641,1023.639483 +29-03-2021,939.1609091,506.312224,999.8085781,775.2509966,973.6454195 +30-03-2021,197.2594743,534.9081984,290.2480426,368.6570365,973.1864928 +31-03-2021,304.1735574,591.0653808,921.7190669,616.9263934,1060.491861 +01-04-2021,805.2638556,723.9413985,559.1737821,694.5652735,943.6705287 +02-04-2021,922.2985037,492.3614067,873.8321783,725.7570333,952.309779 +05-04-2021,833.9816439,213.8353468,771.225463,552.7074328,941.7775773 +06-04-2021,12.17115694,322.8295375,229.5674447,210.7812604,936.074308 +07-04-2021,506.8629585,736.8531617,97.67636745,476.974585,947.759184 +08-04-2021,514.9222019,938.4120217,228.646551,604.8633883,1039.495247 +09-04-2021,677.1411441,592.8802708,10.06369566,434.5595408,1055.114128 +12-04-2021,475.8261959,708.7703909,43.97543202,440.1516324,965.1463464 +13-04-2021,879.521483,520.0814166,30.66104833,464.3592511,1010.366702 +14-04-2021,224.4136119,953.6756964,582.3197331,643.3440309,1037.957834 +15-04-2021,107.4725678,287.5445023,456.7036259,291.8661268,1005.02821 +16-04-2021,20.95006927,411.6155136,489.4586354,331.261963,952.2528621 +19-04-2021,243.6778753,588.6390003,753.2401196,547.4352922,926.4799132 +20-04-2021,235.8342241,620.4999003,639.622243,523.5289218,1050.521378 +21-04-2021,948.5403011,778.2761673,848.3452698,845.5690711,1024.808971 +22-04-2021,490.4199084,185.348587,995.815293,518.468131,1028.847795 +23-04-2021,129.355761,471.4573194,68.09309924,254.76524,944.617655 +26-04-2021,943.8508574,964.9249408,719.389062,883.0915268,1011.74886 +27-04-2021,349.9928436,254.3824011,265.3033245,283.3489692,1031.449979 +28-04-2021,127.2940254,525.8089531,141.8172757,300.0370335,1015.701692 +29-04-2021,316.7306666,626.706476,727.5436096,575.0744753,962.7488392 +30-04-2021,24.27270462,430.1159844,652.1245948,390.440117,1050.613026 +03-05-2021,853.2459762,475.3247822,969.2058717,729.6888391,923.6184026 +04-05-2021,265.6325475,13.50870663,483.7528647,226.8845605,1046.437096 +05-05-2021,256.113795,823.717672,232.7726722,488.4887537,1054.052797 +06-05-2021,310.6292183,791.227431,715.143252,639.0478624,1078.616516 +07-05-2021,558.0512367,704.9480619,418.6368636,576.8011973,982.8753905 +10-05-2021,5.310047615,11.35512851,511.2217876,164.8586517,950.0284992 +11-05-2021,83.29097972,51.07548017,965.5166391,343.466885,1039.694018 +12-05-2021,859.0026397,152.0272272,0.66421859,294.184483,965.039236 +13-05-2021,941.6677954,278.3252983,185.8976029,427.0990019,1002.199776 +14-05-2021,691.5081078,108.9037388,264.649598,313.0927625,984.1268891 +17-05-2021,975.0946802,639.4627745,520.6777915,692.3885991,954.8964014 +18-05-2021,397.9186148,774.5009549,140.9574765,477.1544547,1016.049973 +19-05-2021,967.337802,861.1230081,617.6569826,813.984022,930.3992042 +20-05-2021,42.9061904,700.8556494,913.2843409,590.7638885,1029.610284 +21-05-2021,524.5770675,354.2248218,120.277345,327.1976125,951.6534456 +24-05-2021,754.9011041,885.0218512,100.2517441,606.6790603,913.4134327 +25-05-2021,758.9845548,17.06048626,967.0549181,510.3449512,997.4946271 +26-05-2021,615.0580206,552.439059,295.9498336,489.5959772,1021.581693 +27-05-2021,929.2916716,265.9056273,828.1466132,617.8504785,1028.84673 +28-05-2021,985.1086793,783.3966455,518.9899204,755.3065129,1040.917687 +31-05-2021,66.07426385,472.4137892,438.255947,353.110532,882.31798 +01-06-2021,202.7960412,423.5876367,357.7578841,344.0932855,949.7427785 +02-06-2021,163.6842612,441.3741433,262.7999563,311.6711399,1005.332615 +03-06-2021,522.0624207,35.16005972,906.2314198,435.7298195,1075.950164 +04-06-2021,816.3643055,552.5813325,851.8085828,716.005542,1039.187225 +07-06-2021,962.3950738,110.5222941,630.8318084,499.878446,1095.067003 +08-06-2021,997.9940009,987.8891693,603.3229923,871.252227,973.7530289 +09-06-2021,128.0208705,583.192831,2.064635574,281.0878979,1013.72085 +10-06-2021,198.9113347,956.1231596,330.4405726,559.3907357,945.0014596 +11-06-2021,638.3901058,280.8594946,947.8218871,583.4800048,979.782389 +14-06-2021,728.5587299,329.6511576,791.7614212,579.7702001,963.2352141 +15-06-2021,108.1655245,392.3189401,221.2181277,263.2059918,968.300567 +16-06-2021,683.7264473,102.4462818,397.0258323,349.3645031,980.3275439 +17-06-2021,276.6497302,506.3429193,349.8976805,396.3470559,1000.135877 +18-06-2021,706.4105777,24.57702431,633.9869213,396.0945735,1001.110633 +21-06-2021,230.5712897,268.7090288,800.2556036,423.4582217,1027.172672 +22-06-2021,955.568394,316.55021,826.8052704,645.8437251,1006.999423 +23-06-2021,103.990838,633.981653,751.0322995,528.5230593,982.7977186 +24-06-2021,155.977928,426.0023877,892.7071642,498.5956667,973.8710729 +25-06-2021,103.5784634,18.0963582,590.585379,218.6215498,984.643414 +28-06-2021,435.5315405,798.6892489,923.4555382,740.2559124,977.5481429 +29-06-2021,299.1536445,388.4041172,486.2720863,394.8987773,1024.548553 +30-06-2021,588.1514604,983.8538297,697.3302508,789.0810252,1043.27626 +01-07-2021,389.5485073,263.7676865,944.6257184,508.703042,1063.702227 +02-07-2021,135.5484331,720.2658525,925.3950253,627.4997845,960.114862 +05-07-2021,664.6655865,423.0544402,198.9909399,418.1575265,1023.468611 +06-07-2021,367.4753223,706.8718094,649.5342242,598.2838053,930.2660179 +07-07-2021,927.9761666,866.8609137,816.1507523,867.4737741,1018.658736 +08-07-2021,911.4508754,276.3371527,369.5235401,475.1596742,1054.133614 +09-07-2021,379.8939038,560.4505887,668.2182295,545.5912744,992.5205249 +12-07-2021,286.716683,19.46246731,399.2223837,208.8065283,1053.631802 +13-07-2021,308.5279596,942.184719,888.2650405,755.9373696,943.0716065 +14-07-2021,860.3106783,652.9997609,344.2891647,612.6588712,955.5677358 +15-07-2021,548.8492674,815.2250407,98.61036872,521.5818155,993.2095079 +16-07-2021,801.0748803,41.17979133,816.4210312,485.0416983,1051.110518 +19-07-2021,807.5638042,51.00730883,627.1607115,432.1943183,979.1285272 +20-07-2021,502.4530743,169.8195032,148.3789377,252.1515415,977.322345 +21-07-2021,773.2591261,567.6927488,982.9991349,751.5651127,950.4185821 +22-07-2021,982.2477773,992.6669935,118.6155184,718.6403871,1010.144052 +23-07-2021,938.256137,244.569609,458.2122598,496.4419139,1062.334757 +26-07-2021,757.4065558,203.6209321,566.3116056,464.3203866,1035.034005 +27-07-2021,185.8167482,104.7361067,116.5586124,130.0954701,1034.832533 +28-07-2021,357.6390348,4.654836837,424.8539212,229.4824861,989.6512763 +29-07-2021,664.1971051,401.688185,85.79460052,373.8847157,971.834532 +30-07-2021,62.68886202,278.1165128,169.3126905,186.7212235,1033.862296 +02-08-2021,965.0949732,151.230225,805.4624374,571.97798,998.4044462 +03-08-2021,586.1079417,569.28692,512.0807159,556.0343846,991.3195882 +04-08-2021,971.7630761,363.8447751,787.915751,658.0735005,1044.912031 +05-08-2021,555.2941075,395.6336676,955.4659333,612.0752235,990.1106274 +06-08-2021,598.3159694,118.9169421,417.539201,339.8346458,958.111187 +09-08-2021,781.5817277,693.7470232,916.3403298,786.3204902,1045.459425 +10-08-2021,259.3773841,758.1937164,459.8752074,532.1757894,1004.035995 +11-08-2021,573.609747,955.046681,979.28632,860.5274707,948.1485328 +12-08-2021,861.5909639,359.0970877,887.7008357,657.5618945,944.3547053 +13-08-2021,638.6091776,429.9967805,35.7426825,363.4578464,1004.770594 +16-08-2021,770.1281242,502.1055807,786.1884995,661.9643011,1116.870483 +17-08-2021,748.0227993,793.567368,300.6511587,628.4195625,980.3589698 +18-08-2021,800.7985991,548.8463285,473.3262004,592.8124494,983.186307 +19-08-2021,675.1259138,21.35868294,102.3168159,221.3766364,1076.18856 +20-08-2021,292.1773652,982.99011,139.7457789,536.5059924,997.13594 +23-08-2021,330.5963008,51.05306469,331.2688803,212.7937256,927.5766568 +24-08-2021,320.3262865,946.8071709,845.154087,747.6666712,921.3601774 +25-08-2021,382.7642192,24.76905804,831.031114,370.7418927,1061.333199 +26-08-2021,660.5361771,152.3644837,996.071271,550.1322913,1033.317727 +27-08-2021,100.2334374,867.1145416,294.2661641,484.1911395,1041.306285 +30-08-2021,435.3534663,795.4565268,677.508356,662.5202075,997.1121721 +31-08-2021,937.8643744,621.1403255,97.81016148,543.4678158,963.6643987 +01-09-2021,884.3603632,769.155525,711.8704509,782.1979845,989.1418442 +02-09-2021,53.73354735,396.2227447,167.4358195,233.6025144,1006.801561 +03-09-2021,821.9039084,700.5286228,883.0775973,789.6480856,958.0844422 +06-09-2021,966.5751069,774.7476142,994.2330832,894.1766168,1028.072495 +07-09-2021,614.7698861,37.12960389,14.25151515,184.5593198,937.0201916 +08-09-2021,342.1038752,823.4717191,866.1347063,707.9363727,983.3620618 +09-09-2021,960.8125288,65.12146855,44.57111099,298.3579353,989.7996064 +10-09-2021,913.2835964,305.0466984,557.9874006,546.2547987,965.4490093 +13-09-2021,982.444883,400.4485347,665.8713983,638.5103242,889.7247322 +14-09-2021,400.8795636,768.1946645,527.7147256,595.3044265,1022.393483 +15-09-2021,237.523138,271.3061013,258.0592125,258.1577114,962.212462 +16-09-2021,532.3203283,703.189016,949.2799,733.8464601,1066.285398 +17-09-2021,694.0873751,781.192844,168.9261159,567.88939,982.9008861 +20-09-2021,374.062625,413.7802199,686.38023,487.7494016,972.9320206 +21-09-2021,295.8919764,303.2919214,355.8891546,317.6344921,1004.576097 +22-09-2021,810.3020815,577.59009,75.27727983,483.9650109,1052.671987 +23-09-2021,78.24609969,371.2869443,766.5910506,415.5655676,971.8296168 +24-09-2021,688.6834265,707.9823547,767.2100661,721.1993273,1050.736885 +27-09-2021,287.1527129,548.2562819,543.3526403,476.8845838,1072.015182 +28-09-2021,739.6325012,956.8705691,277.9899448,688.0823648,1049.516141 +29-09-2021,793.2816728,659.9705485,580.2378709,670.8907373,1081.321575 +30-09-2021,774.8797793,944.0324664,36.69141787,617.2111953,1064.632301 +01-10-2021,147.4001025,756.2872315,83.79135291,384.7070817,1075.744115 +04-10-2021,516.1237007,219.8607766,274.2957038,316.008999,1080.216316 +05-10-2021,701.8404829,30.19277327,873.3194279,471.5133756,1010.403476 +06-10-2021,444.4789554,502.3932939,540.0479637,498.5853024,978.538805 +07-10-2021,645.5442946,344.8565866,101.1074906,349.6548179,886.8878182 +08-10-2021,318.3789367,168.142118,556.1331795,328.7362084,933.863344 +11-10-2021,318.028631,958.067178,965.734278,789.224448,977.58586 +12-10-2021,620.1258806,617.4972677,985.3785646,732.3629181,980.9132456 +13-10-2021,887.2831512,765.0699492,313.5906117,657.659277,992.3602768 +14-10-2021,365.5390281,201.2667658,487.1481269,333.9284887,949.9619755 +15-10-2021,990.3685221,912.150953,118.349434,686.7398066,920.2111194 +18-10-2021,25.19028929,898.6376684,537.1701279,552.8024161,993.4888417 +19-10-2021,200.1898882,673.6532696,644.2231779,537.8602885,990.5291036 +20-10-2021,122.0856068,259.6002335,60.07796431,160.8959787,959.6222979 +21-10-2021,209.8604739,132.3056749,193.2362925,171.9612436,962.8923919 +22-10-2021,685.4671459,49.49974426,101.8546152,235.8796351,952.9921704 +25-10-2021,134.1736381,316.541121,298.7503109,262.2335663,980.173813 +26-10-2021,255.0637853,750.5366534,998.0227878,694.7895228,957.1848587 +27-10-2021,533.9779236,944.2027179,396.6101121,664.5288769,1062.993767 +28-10-2021,106.6824468,408.7738295,296.1277734,293.0020691,1012.049837 +29-10-2021,493.4069623,657.0436769,461.0502192,552.4463613,951.3841041 +01-11-2021,935.1605121,884.7648223,701.9775952,841.5233012,985.9776109 +02-11-2021,489.6849124,131.6872818,397.0136668,309.7953782,940.9857197 +03-11-2021,704.4015394,284.8855206,103.9880775,340.9768835,1050.608415 +04-11-2021,907.8984575,709.0508098,615.2764266,733.1457369,1069.209336 +05-11-2021,792.4989056,835.6460376,483.4589982,714.8112493,1062.600099 +08-11-2021,881.1882514,916.4190107,271.5510954,706.8760547,942.7653684 +09-11-2021,607.5453598,526.5840288,537.9457792,551.7684909,995.436649 +10-11-2021,937.663094,305.1887027,983.4339782,684.8630532,979.9214662 +11-11-2021,902.1312148,458.7228886,817.4532636,688.6654212,1028.100655 +12-11-2021,769.0469943,677.8949696,319.8338894,591.1648051,949.6045098 +15-11-2021,196.4509918,671.5276968,842.9732964,597.639699,966.2054153 +16-11-2021,16.25278868,642.8033753,442.8730246,413.1464203,979.3391486 +17-11-2021,898.0877551,321.4729309,474.1848123,523.1181252,1007.664423 +18-11-2021,514.767104,140.4395214,712.8923027,418.2249145,1034.706435 +19-11-2021,830.4763451,57.9092769,291.3888205,337.0394356,983.5636154 +22-11-2021,38.04468154,956.5441047,667.1688207,621.0285745,1033.198254 +23-11-2021,964.2004195,531.4942783,802.0685239,731.2168054,1041.103818 +24-11-2021,374.4139839,353.8190326,378.2678171,366.9156068,989.3392382 +25-11-2021,657.8621337,359.453151,900.3674516,607.1417782,937.7170934 +26-11-2021,983.2748651,30.42651534,193.6232904,335.9747738,941.4404832 +29-11-2021,112.2499926,42.36404709,227.7409933,118.5867577,1029.586349 +30-11-2021,446.7933204,836.9903653,221.8240305,541.7045539,976.1887782 +01-12-2021,493.9452557,929.6187394,667.2147068,731.6378083,914.3685339 +02-12-2021,798.0790198,550.9939702,980.4664588,750.3694218,1030.647618 +03-12-2021,588.6621547,45.51071396,197.9827999,238.1294269,1006.477726 +06-12-2021,404.773629,601.2771726,771.9308674,601.6668428,929.7016459 +07-12-2021,413.0861259,710.058305,789.8695031,655.3801578,1058.970999 +08-12-2021,317.2601972,979.27024,649.6564952,699.8833438,1041.831799 +09-12-2021,880.9980608,555.9376888,741.6031072,700.5137449,1006.937263 +10-12-2021,770.5440616,908.2483792,150.3497569,636.215715,936.2840316 +13-12-2021,558.2834242,428.3785131,923.1590212,616.6727899,929.8834734 +14-12-2021,105.0946942,982.5738887,875.4513241,714.5894389,984.6465757 +15-12-2021,73.82628156,490.9663855,717.5595002,449.6910934,914.3042305 +16-12-2021,738.1515457,906.4941252,799.8654356,828.3699498,1020.254014 +17-12-2021,310.9303803,498.4347859,701.7857629,511.3786462,929.4588343 +20-12-2021,138.4368414,193.9907976,481.0424481,268.208156,1008.245636 +21-12-2021,298.2457987,862.5592498,586.2773215,625.8581288,985.5934274 +22-12-2021,348.6651977,848.8330256,804.8784486,701.3888182,1035.589263 +23-12-2021,998.3548771,847.3076883,414.4565348,753.3914101,953.1026202 +24-12-2021,127.4988818,840.6409082,59.75791796,407.5355291,1013.686472 +27-12-2021,350.2712073,919.7379808,960.7664734,780.1273365,930.2579904 +28-12-2021,640.5645935,688.648317,42.45448873,475.2554952,1039.777478 +29-12-2021,514.4803411,546.8681788,340.1007461,474.0389134,994.2519117 +30-12-2021,68.59683475,228.9075997,357.9839369,226.0770422,1024.792533 +31-12-2021,435.1419865,590.9267255,722.3915187,590.0481582,933.9737327 +03-01-2022,317.6318733,328.9537599,19.69164272,229.9534465,1024.954214 +04-01-2022,40.87486009,257.8216943,740.2449977,349.4920472,1015.31017 +05-01-2022,628.3138304,769.7890207,768.9194362,731.671967,1018.184895 +06-01-2022,856.5674677,720.319266,979.010919,837.0464173,1015.631698 +07-01-2022,898.8252193,586.7171662,588.1576705,670.6588014,990.3268059 +10-01-2022,34.26704035,998.5265777,131.5759974,471.5338209,1062.064961 +11-01-2022,740.3471966,821.0151951,373.0545293,660.4220203,992.2051007 +12-01-2022,196.8520547,98.75988679,748.6060058,326.664276,963.04154 +13-01-2022,452.6535292,713.717759,915.4076489,706.4675456,997.0636903 +14-01-2022,146.5837362,919.1710007,411.6264595,554.9864534,952.4741027 +17-01-2022,305.2670099,943.0622606,990.6516926,787.2085169,976.8001788 +18-01-2022,198.8922178,656.838347,106.4953138,363.5446521,991.1376692 +19-01-2022,650.9140039,827.3132278,684.4985465,735.8043658,981.022294 +20-01-2022,417.3331421,383.0663596,393.1224152,395.3539874,1009.969854 +21-01-2022,589.711818,881.5672701,929.0661573,818.2306507,1097.28807 +24-01-2022,53.52962021,181.6223946,112.2243158,125.8193356,1028.547492 +25-01-2022,193.3346408,346.6078106,506.5316826,355.2326733,1053.615032 +26-01-2022,629.461227,732.1422191,890.1115414,753.6948706,974.8145281 +27-01-2022,989.0884372,662.8564786,845.3645187,806.7661448,970.6491856 +28-01-2022,778.0388469,307.5320392,875.6922702,609.7150519,981.0910977 +31-01-2022,42.76313795,0.367343751,273.7326294,96.54084219,1042.644455 +01-02-2022,462.0975296,638.362895,101.7702665,424.6910384,892.5940761 +02-02-2022,673.0101338,801.8158671,185.3129196,576.0422286,948.3417612 +03-02-2022,415.1252548,519.98499,451.8070181,470.7758224,1005.116792 +04-02-2022,799.8299309,960.5223981,798.953164,867.3953902,988.7953816 +07-02-2022,77.99281788,804.9355722,66.59633224,381.3405989,1098.386484 +08-02-2022,235.9703852,153.0968968,197.5191068,189.0523548,1022.384161 +09-02-2022,528.3151271,671.6898576,470.3212823,570.8449645,966.8904278 +10-02-2022,959.695639,240.29232,763.1402303,594.9981941,921.1196466 +11-02-2022,870.1821785,562.0661108,456.222502,611.6469664,982.9719983 +14-02-2022,596.1844468,428.8097702,555.1938823,512.8055984,934.8389959 +15-02-2022,416.9339521,400.4697103,695.3464681,496.3815734,1023.337533 +16-02-2022,92.85121307,166.5420727,851.1984717,359.2938308,1008.055316 +17-02-2022,771.0773468,281.4537273,377.2689327,442.1707712,1016.001597 +18-02-2022,926.0265066,818.0772252,614.3463,783.7330072,1103.958833 +21-02-2022,221.4901788,44.25197132,431.2578468,211.7637,954.6267009 +22-02-2022,672.6271393,828.4804905,852.6890057,794.2993556,990.3797896 +23-02-2022,32.77590129,244.1570338,339.0945885,217.0701305,939.3742128 +24-02-2022,188.732211,802.9753784,767.4657631,627.634607,995.9700742 +25-02-2022,516.8330404,982.926478,144.0585411,597.9169855,1079.663681 +28-02-2022,899.6517033,116.4632542,163.1817055,340.4783505,1028.43612 +01-03-2022,696.2192003,109.569692,565.8450954,408.1024378,994.2756477 +02-03-2022,420.2335365,728.4739655,900.6752388,699.4522264,1012.581512 +03-03-2022,769.8715147,849.6898764,32.94544853,574.8814898,939.4572181 +04-03-2022,310.1954982,515.4330867,415.9533146,429.6573034,980.3133144 +07-03-2022,231.254953,307.874098,945.4309704,485.2263659,1004.262629 +08-03-2022,294.1808799,353.9041102,3.70977375,229.2532963,1004.971099 +09-03-2022,845.0776273,154.8407034,204.1442755,354.7917922,923.4691878 +10-03-2022,255.2645171,884.6220568,206.4514112,505.8046806,1016.381159 +11-03-2022,797.5263609,808.0493403,927.0205688,842.1538955,1013.959825 +14-03-2022,115.5613136,217.2789723,742.8982921,353.1800037,981.1474397 +15-03-2022,196.0007543,286.3295469,166.7415801,225.0539096,1000.20875 +16-03-2022,172.6966862,481.5533546,109.6830621,283.5282174,925.8254223 +17-03-2022,321.6976185,426.5939096,24.54811652,273.767717,926.0102192 +18-03-2022,388.3331665,94.12243609,493.5785311,296.7900575,1006.734363 +21-03-2022,825.7381886,818.4221622,80.44851554,591.3682931,966.6138405 +22-03-2022,601.2277577,834.586382,237.9725429,587.0150037,999.422224 +23-03-2022,761.9265114,890.7643465,806.1241514,830.0319734,1041.974534 +24-03-2022,107.3010315,9.059999522,191.7241099,92.02635582,991.3035035 +25-03-2022,270.4773409,616.1829906,384.2731752,451.7331923,859.4665973 +28-03-2022,703.4070307,353.0749605,154.4254247,385.149449,992.4673181 +29-03-2022,312.6898435,884.3242264,958.5323442,754.4301457,975.9477989 +30-03-2022,207.5127341,788.468387,273.3487365,473.1980611,988.2652823 +31-03-2022,887.1315434,165.5456128,665.9599187,513.8736864,1044.986541 +01-04-2022,84.21126471,973.893324,700.6333446,651.0879337,921.0734907 +04-04-2022,841.8157394,566.6693394,476.8013639,612.3878307,1012.197831 +05-04-2022,621.8823914,528.7415117,469.3843551,535.2384416,1078.515196 +06-04-2022,759.4502515,178.2009549,171.1720482,331.514532,968.7028443 +07-04-2022,431.8426506,320.747916,74.12451791,273.9345944,1023.616394 +08-04-2022,844.4704924,771.6028067,543.9214998,720.4412386,1048.315289 +11-04-2022,979.3245373,72.60006655,766.669301,530.5518853,1010.511572 +12-04-2022,266.3703916,368.5989199,219.2793852,294.9134623,965.745151 +13-04-2022,789.0378915,144.240102,840.0166977,532.6515788,964.5239495 +14-04-2022,661.5776482,59.02324527,810.9817316,453.5684408,1037.190008 +15-04-2022,627.7557162,904.9823196,748.7223064,782.3278785,1029.607455 +18-04-2022,561.1209274,836.5471806,278.0502383,589.5505356,960.6765792 +19-04-2022,546.9500618,293.6168198,968.2043911,570.7289053,941.1763423 +20-04-2022,226.1963008,15.73823967,325.854842,168.2762889,935.9596643 +21-04-2022,502.509397,28.36293423,559.2483,319.9523306,1083.082593 +22-04-2022,874.282775,704.7321944,622.968323,724.716772,996.602744 +25-04-2022,955.9617507,958.2793338,824.2664697,916.0719107,1118.011429 +26-04-2022,607.7418474,487.7645595,13.31611325,372.6278703,1027.77728 +27-04-2022,606.2619062,989.0880754,818.10105,833.6136719,1021.976116 +28-04-2022,340.6046439,152.047025,784.0586145,398.6180916,1015.313624 +29-04-2022,743.9378206,967.046792,874.8423619,878.7478012,1049.957493 +02-05-2022,555.6626253,101.284247,483.5006584,341.4497533,951.6968407 +03-05-2022,313.695054,512.408482,301.7015746,393.8615654,1108.000655 +04-05-2022,861.822992,844.327014,315.4651572,684.8889052,994.9849149 +05-05-2022,599.5813464,430.1808576,909.092757,624.1165114,964.8299954 +06-05-2022,187.3609014,697.7284018,970.3753278,645.8046858,1015.12805 +09-05-2022,175.2755196,201.9664284,693.7233387,347.4301642,1054.616944 +10-05-2022,779.1539245,490.5490548,609.6864651,604.7273502,949.6222562 +11-05-2022,212.6824088,476.6142286,112.0718809,292.8813482,1028.343469 +12-05-2022,321.4219253,284.779705,444.6253601,344.1861351,964.1777921 +13-05-2022,930.1263622,181.2676621,401.3882466,449.9097913,974.6863233 +16-05-2022,615.5972191,946.5570861,133.1481915,605.5988505,975.5258791 +17-05-2022,917.876617,81.05378863,480.7413972,428.9519137,1038.177073 +18-05-2022,454.5898672,209.6027289,347.4596681,317.9216053,944.5463634 +19-05-2022,454.1652683,865.2114629,955.0641454,783.1325455,1009.630806 +20-05-2022,518.9256786,870.0997903,608.1715857,694.8716474,982.8291068 +23-05-2022,349.087342,194.1942076,413.1347718,303.5734968,957.6394911 +24-05-2022,522.8242829,44.44338826,145.8411659,203.8852046,939.3238199 +25-05-2022,600.184424,225.0015947,837.3263761,515.3890262,939.8555838 +26-05-2022,326.9422498,104.8342073,83.53058856,157.6411433,918.3101991 +27-05-2022,937.1230205,118.0203112,140.9097642,344.2484154,1044.80836 +30-05-2022,862.6660579,254.2881303,665.9514108,544.7894068,987.9173419 +31-05-2022,816.725687,607.1806401,957.4885434,771.9467724,1007.932597 +01-06-2022,708.8828993,112.7515099,558.4100265,410.526156,1058.909468 +02-06-2022,718.1865261,801.9572404,26.32133528,538.8484943,938.9941422 +03-06-2022,718.8789153,825.680821,746.8338109,772.6412272,952.9227162 +06-06-2022,512.3491457,458.0209631,549.4185833,500.9176337,1012.735777 +07-06-2022,704.6436988,922.9142906,617.0352106,769.6012521,908.7960224 +08-06-2022,887.8343063,701.2568474,68.33637744,554.7592269,971.0645744 +09-06-2022,500.82819,286.4863483,285.1749281,343.4197455,953.7553463 +10-06-2022,355.9275512,314.732772,578.6099801,407.6405974,1016.476122 +13-06-2022,683.6015004,268.7493871,129.7626226,336.5989654,978.7092067 +14-06-2022,58.80872093,575.752845,186.1301663,316.551514,1100.407464 +15-06-2022,9.247994224,927.7530793,537.1404191,560.8196324,1046.894569 +16-06-2022,92.44818025,842.9211121,983.2027383,685.6886539,957.3380758 +17-06-2022,448.600662,42.48960824,117.5459408,174.4235341,980.6343281 +20-06-2022,381.6537466,885.5226374,148.0386793,521.8694167,982.6207744 +21-06-2022,823.990094,14.97626022,457.3886988,368.693517,1165.328717 +22-06-2022,644.397141,60.37948203,614.7627506,388.6533992,924.4900178 +23-06-2022,944.4041215,160.2599201,729.611383,546.7163394,1010.176985 +24-06-2022,609.0938979,185.1163889,6.203414709,243.0171107,895.7783932 +27-06-2022,9.284450506,532.0924092,942.7794096,519.6778109,999.6531279 +28-06-2022,644.2986275,714.2998463,493.8654869,627.1671363,1095.494528 +29-06-2022,581.8889426,126.3675253,876.8206204,481.111549,979.5772284 +30-06-2022,760.7926287,998.1989528,297.7229476,717.313803,1055.227721 +01-07-2022,227.0177718,125.161658,964.2097566,412.7869138,996.6942387 +04-07-2022,780.8851846,166.3246137,552.6864711,450.6282179,978.8750642 +05-07-2022,413.7682081,151.4860078,162.072985,224.9366876,987.4171821 +06-07-2022,963.4699947,304.964183,941.4392917,678.6401233,970.6548677 +07-07-2022,75.61067307,460.8030423,129.6190485,254.98265,968.6970864 +08-07-2022,4.787385241,553.7660737,113.8941048,270.4013429,933.4902794 +11-07-2022,722.0245309,698.1163757,176.3329075,542.5902365,1075.340036 +12-07-2022,941.7421433,721.0434084,297.9702642,648.7945449,980.3461802 +13-07-2022,709.233764,731.9302777,342.2263313,604.9240017,1014.688716 +14-07-2022,375.5885625,359.1065077,616.6184436,443.4279297,956.1734074 +15-07-2022,900.4101465,173.1932362,875.1996098,585.5865856,1055.849528 +18-07-2022,27.65315651,660.338596,414.4388732,414.7750496,986.3222111 +19-07-2022,791.2815522,721.1981129,480.1078071,665.1305719,995.4483666 +20-07-2022,643.8640367,501.7731307,811.5184706,635.9065039,908.5511682 +21-07-2022,476.083986,523.15599,250.5205864,425.9580199,1019.798811 +22-07-2022,605.0430168,302.9048087,577.2840145,468.8787969,1090.575285 +25-07-2022,169.6781156,159.4690923,417.0297412,242.1274805,956.5461207 +26-07-2022,426.8195151,268.1092649,131.5968504,268.2040612,977.0885423 +27-07-2022,39.21053921,25.23182729,271.55029,105.4099544,943.0838021 +28-07-2022,461.8534422,726.2432813,474.8717007,577.5074938,1006.458109 +29-07-2022,904.0508194,35.21980458,180.6606215,312.781787,1003.20121 +01-08-2022,338.5144928,577.4961881,852.7361579,598.9778221,1035.254055 +02-08-2022,350.201952,267.9886825,61.88916884,226.0245805,1027.573677 +03-08-2022,821.3034777,379.6664432,571.5501954,557.3585876,959.3741977 +04-08-2022,983.5554182,1.594570604,145.4501407,308.9289118,1011.247402 +05-08-2022,779.110994,805.1274852,769.247119,787.0330541,983.5849447 +08-08-2022,536.998891,978.856981,396.18456,679.8345413,945.4483511 +09-08-2022,601.9436981,63.36900455,409.8574499,314.9713145,993.6572064 +10-08-2022,722.5000875,238.7388408,943.8275891,586.9598832,1190.083011 +11-08-2022,686.7833676,287.5753829,768.9989227,543.7681671,1115.758532 +12-08-2022,83.16477181,974.7744225,49.28525907,449.0509033,1006.99133 +15-08-2022,933.4558911,252.8538777,757.8241077,591.6318172,1086.94286 +16-08-2022,0.073699433,254.2400892,749.1006066,339.8130981,997.7308318 +17-08-2022,532.3360709,114.9521496,393.6297458,313.090368,997.343083 +18-08-2022,375.5493551,568.1622442,667.9770725,547.609725,902.5214106 +19-08-2022,840.8302424,497.231397,392.0217173,556.501268,951.9947217 +22-08-2022,143.9765341,804.822965,713.3704054,599.6545221,960.8250368 +23-08-2022,408.6773975,518.4323099,665.1828444,534.6110976,1005.375952 +24-08-2022,164.8055898,27.19779441,317.5036992,154.0993275,1000.699227 +25-08-2022,595.5850196,486.6060913,692.5546269,579.6707505,971.0528824 +26-08-2022,819.6898056,488.4424667,134.2670237,467.1479966,970.55934 +29-08-2022,850.6279998,574.9903273,739.9374808,699.9155296,991.6923432 +30-08-2022,704.6646536,968.2117713,295.3073223,688.8896008,930.9294175 +31-08-2022,705.3067728,365.6763331,395.4107209,465.7609852,969.368072 +01-09-2022,230.5946367,344.0101757,948.2967517,501.1941591,980.9355065 +02-09-2022,292.5708469,245.990606,583.1379785,363.0766419,937.5525533 +05-09-2022,258.0359567,473.3857256,834.1762566,527.7377367,983.4881053 +06-09-2022,230.4003143,426.6914122,610.489735,431.2170109,958.2596418 +07-09-2022,545.6289246,974.7232374,680.3702544,768.5878242,1061.76912 +08-09-2022,739.946242,966.955948,414.4380252,734.7670489,987.8098101 +09-09-2022,355.3798151,43.86242977,184.2043065,170.7505,990.5227166 +12-09-2022,237.1896321,183.5044671,754.7838932,375.1480292,1021.401405 +13-09-2022,535.8829813,667.6338015,820.4621608,679.8143774,1027.848416 +14-09-2022,230.7739413,325.9239398,708.360267,419.1488009,913.1879098 +15-09-2022,392.7589459,29.2709401,434.955219,252.4042555,981.1607945 +16-09-2022,908.2730864,409.0215116,332.2489164,518.7560482,954.5483837 +19-09-2022,989.5250829,644.4155642,365.9980265,650.3389878,992.7414878 +20-09-2022,102.0195314,787.8494449,708.0749335,579.6214438,973.1833739 +21-09-2022,921.9157992,217.27563,114.92435,374.0176883,1007.853473 +22-09-2022,724.0725264,203.395842,176.1038378,334.2170093,950.9770377 +23-09-2022,319.8073354,816.8251415,539.5366051,597.8144614,971.6116379 +26-09-2022,45.8503551,463.8946747,683.9796114,420.3578436,970.4420166 +27-09-2022,538.3684385,572.4502182,224.7773284,455.441427,1054.129569 +28-09-2022,847.7393316,561.3987176,713.246013,685.1219503,1018.400183 +29-09-2022,981.864217,428.1986577,881.0666127,716.8501804,1018.444435 +30-09-2022,7.281013941,33.40729262,590.2799217,199.229057,985.684086 +03-10-2022,311.4493955,248.276567,277.9353572,274.3802926,980.7641074 +04-10-2022,318.4029346,728.9476961,569.1959722,569.5446476,1028.050144 +05-10-2022,789.0359726,830.1965798,842.9348593,823.1383603,1038.871697 +06-10-2022,414.6441492,421.2733963,926.2658801,576.2113116,1000.757339 +07-10-2022,661.7635946,80.46718398,542.1869541,379.2573967,1057.082397 +10-10-2022,356.0072596,987.4349897,13.65540646,516.3292092,1063.707751 +11-10-2022,612.1808731,723.6230944,288.9067714,558.9072915,916.765098 +12-10-2022,973.6415183,859.536627,915.652841,907.4759882,1021.518944 +13-10-2022,19.23205935,569.8721513,294.650242,337.1578534,997.8699036 +14-10-2022,849.0286349,632.8496569,538.8770043,661.519504,1019.414441 +17-10-2022,114.5881697,540.2228048,631.9041464,454.8086898,1055.798826 +18-10-2022,955.9123093,585.0510104,967.4006017,802.9154996,953.9730918 +19-10-2022,961.6061156,650.2003358,505.9079841,688.7296764,918.9862949 +20-10-2022,466.0217438,890.3785611,28.25668297,509.3181184,1055.309574 +21-10-2022,113.808198,102.0717291,756.9353251,308.4314338,950.0757678 +24-10-2022,339.6510239,637.9685447,603.7829038,547.5545226,965.6890243 +25-10-2022,385.8279697,531.5677222,645.1385336,527.823438,1010.231045 +26-10-2022,940.9503299,575.6340729,614.3675118,685.3827737,965.6949089 +27-10-2022,67.8558177,952.2158148,528.0819279,584.0143573,920.3894686 +28-10-2022,801.2734199,50.29106315,420.9101357,366.2046237,1001.709488 +31-10-2022,256.9754592,266.9758987,791.45373,427.0587321,960.9257671 +01-11-2022,623.8667253,439.7453118,10.58573959,355.8225804,1029.892994 +02-11-2022,964.9279429,962.0232534,217.5522103,731.772972,974.6961722 +03-11-2022,41.34637232,530.199363,951.4108146,530.134331,965.5776931 +04-11-2022,910.3958458,584.6628639,303.5488507,584.565928,989.499973 +07-11-2022,329.9608838,897.9135515,491.7840356,619.9440321,1052.607674 +08-11-2022,131.116229,248.425476,276.7949015,225.8468247,1045.395204 +09-11-2022,123.5466849,463.0443815,916.0509083,512.8014015,945.3386909 +10-11-2022,668.782543,72.47392425,5.494817809,211.2121511,1139.985382 +11-11-2022,276.2476675,362.6929348,776.749669,468.0590464,983.7111838 +14-11-2022,967.0055239,387.5671734,686.6900298,635.4025731,942.3792136 +15-11-2022,994.9019074,745.6665839,636.1895491,778.3682238,1044.4116 +16-11-2022,78.07485418,323.2152012,913.3921585,440.7818342,981.9163771 +17-11-2022,201.0054817,843.5903593,696.3236851,625.9867485,1107.685975 +18-11-2022,366.3243708,529.1742697,542.8064688,489.8393441,1042.370418 +21-11-2022,714.0537851,516.5559411,133.0759902,450.3871388,990.0640077 +22-11-2022,773.4546715,406.2724969,963.0938902,677.2955656,1078.765344 +23-11-2022,283.5137823,263.0787803,333.5073957,290.4012168,1042.455761 +24-11-2022,572.317016,894.8697402,176.2816401,585.5857509,938.5552402 +25-11-2022,279.6787976,581.6798431,454.3342422,461.370626,1044.419705 +28-11-2022,447.3228873,820.7342621,923.8783025,752.8479765,974.1756279 +29-11-2022,481.3069661,687.3517954,801.058711,667.5170367,995.8336857 +30-11-2022,518.3664104,294.316409,638.0845977,460.9334505,1006.552722 +01-12-2022,585.1091003,901.5628197,52.40703677,553.3921214,956.0451994 +02-12-2022,910.1313871,534.4320282,15.67611605,473.9559932,933.3328861 +05-12-2022,344.7021788,724.3335639,488.4330879,549.5696126,1018.389201 +06-12-2022,980.1590374,422.6100738,326.6352296,541.9813066,930.5883251 +07-12-2022,821.6719344,547.9066994,682.3265791,662.8576404,871.2398687 +08-12-2022,805.702338,671.4275461,422.4074948,630.0715744,958.1947198 +09-12-2022,124.7964479,580.2481666,897.4333267,556.8367158,1016.554621 +12-12-2022,418.8924265,910.7252348,503.5278198,652.787775,986.5059433 +13-12-2022,620.8415624,832.9884761,564.5971096,692.946976,1063.356547 +14-12-2022,90.9693393,980.9794008,245.8493019,514.7568146,1009.187675 +15-12-2022,710.5053286,505.1134386,478.7726368,551.8853386,961.6845174 +16-12-2022,243.9408189,722.1507657,112.7882648,405.1209633,978.0208225 +19-12-2022,990.4533094,845.3735371,534.50894,787.7162395,928.172932 +20-12-2022,424.5529561,286.4646325,501.5914709,390.1648363,1054.289861 +21-12-2022,879.417462,275.0064007,500.5374588,506.6851454,930.9449957 +22-12-2022,234.5499021,337.1491137,190.2605089,264.1188678,953.9796184 +23-12-2022,990.5391939,571.4974465,732.815124,733.6595474,991.985689 +26-12-2022,98.24991345,366.1175501,892.639803,457.8506258,1000.117663 +27-12-2022,84.43832642,165.4832283,625.4176104,286.5309782,924.8674818 +28-12-2022,622.7889941,838.2270445,935.4927639,810.7773272,954.7232102 +29-12-2022,141.9864754,259.3738185,427.4614057,280.132194,1013.25203 +30-12-2022,0.903285521,69.81430296,226.4912779,99.99999366,1056.486168 +02-01-2023,481.101964,251.5227382,876.6818922,506.9413587,1017.450178 +03-01-2023,324.2728755,924.6228121,974.7872607,779.5854646,998.7095119 +04-01-2023,449.8615339,227.1288169,291.6661334,306.7413795,921.8795633 +05-01-2023,776.3336817,273.3497078,380.5828679,441.1841578,969.1328827 +06-01-2023,478.5758585,575.1111165,996.1004403,679.9293209,1026.074712 +09-01-2023,232.2097552,353.4237032,262.891177,292.9023267,1054.047333 +10-01-2023,361.1134366,100.8045169,359.8097672,250.8174959,1044.468795 +11-01-2023,887.8650315,298.5898478,371.9347798,478.9924392,1006.903582 +12-01-2023,944.4741644,728.3789963,516.7387148,720.5113166,1060.230023 +13-01-2023,777.1927284,123.1796489,464.4903532,404.0570601,1144.073036 +16-01-2023,118.2361287,233.618145,141.8672597,174.2788307,970.3069042 +17-01-2023,361.8012392,381.6393204,947.3085818,551.8731,961.8442102 +18-01-2023,264.1257312,472.4288453,811.379404,521.8884947,1075.924146 +19-01-2023,815.6175864,750.343187,287.8337621,624.2774414,1011.773226 +20-01-2023,494.9716194,186.2115952,188.3995228,269.489515,1005.615384 +23-01-2023,435.8412131,738.5922212,526.58426,591.8096009,1019.618716 +24-01-2023,886.6832208,830.9087978,31.60544282,597.7863468,967.2756747 +25-01-2023,568.4190429,609.1612644,961.5751443,707.6245105,948.2602358 +26-01-2023,23.23662671,531.103771,204.7813619,293.9743,961.1426245 +27-01-2023,53.66290629,587.4885247,772.6041436,502.1262552,1062.297313 +30-01-2023,774.8654492,30.28841016,406.9464003,346.362453,928.1679668 +31-01-2023,44.50962715,247.838647,192.8807028,176.3896388,1024.932732 +01-02-2023,215.1825792,339.118414,277.4180418,286.8161966,972.115627 +02-02-2023,962.2799113,352.40712,894.1725153,683.6821272,982.3316556 +03-02-2023,181.0416715,763.7468672,61.34553602,389.8904794,1037.147549 +06-02-2023,462.7612295,5.510440236,810.2907631,377.576153,1042.199446 +07-02-2023,950.486036,35.10737083,933.8463615,558.8883116,1017.148827 +08-02-2023,773.8538915,358.8615788,908.8765512,640.562537,906.3440169 +09-02-2023,296.2572713,409.2953122,96.71126219,282.0531914,1078.548235 +10-02-2023,656.9389619,29.60082874,484.9052752,338.7172144,1065.509826 +13-02-2023,683.1918503,821.2376009,149.9413896,575.9884162,1004.571842 +14-02-2023,754.0903662,719.0770236,559.5705341,678.9450183,1000.512891 +15-02-2023,584.6445978,91.27072086,600.4710432,381.2744096,1090.07246 +16-02-2023,381.5222071,867.5808513,313.0988817,565.4821327,1047.361214 +17-02-2023,576.5950774,426.5713997,876.2619383,606.2553084,998.5352798 +20-02-2023,253.916667,78.80236031,748.655721,333.5203103,985.3830662 +21-02-2023,412.8966169,589.0983591,26.38933171,367.3389737,990.3231444 +22-02-2023,952.1097914,877.6183774,623.8679006,818.8012935,1058.861603 +23-02-2023,17.02984211,377.976474,978.7965377,467.8656208,1051.999589 +24-02-2023,681.3303587,160.9878613,460.5967487,393.1648667,919.3288494 +27-02-2023,966.7377438,534.7081744,24.61452803,491.9896111,1023.23212 +28-02-2023,619.7720843,271.2165309,98.84595188,310.9707634,1043.206067 +01-03-2023,402.9084447,558.5230974,17.04071805,348.8582763,924.6768417 +02-03-2023,559.0468086,511.2031468,793.9083831,611.7324617,999.8517624 +03-03-2023,423.5498168,553.4504297,742.0093041,577.2140114,911.1478197 +06-03-2023,897.1458718,380.034576,601.6334958,587.1387995,1006.474642 +07-03-2023,694.6109034,43.27067644,800.7605085,452.5834822,895.8382749 +08-03-2023,377.4301852,670.2389414,471.6640662,530.2846662,965.9127238 +09-03-2023,702.3391427,724.3309792,191.5710135,553.1194806,969.4467043 +10-03-2023,662.1742343,851.3234379,235.5672005,609.6385397,964.557509 +13-03-2023,758.1834699,633.8251132,955.1260345,766.8006811,1072.576401 +14-03-2023,260.2465773,154.2777777,312.1210153,231.608937,1026.775528 +15-03-2023,257.9587782,756.8327605,733.1093038,616.0128856,980.021557 +16-03-2023,669.6849009,216.3791145,861.8068074,537.9384984,953.346108 +17-03-2023,956.5715559,531.6058181,649.3727306,681.8378409,988.0611842 +20-03-2023,500.692099,283.5577151,286.147604,342.4488388,948.5443516 +21-03-2023,313.4205227,190.8500042,901.9236326,444.3031742,1048.654 +22-03-2023,858.398134,461.6393613,367.2514126,538.4887295,1099.8383 +23-03-2023,939.0783565,222.3734692,553.5419595,516.8747117,1052.659995 +24-03-2023,54.49815554,191.202197,604.0269334,282.7408487,1016.584517 +27-03-2023,662.1836528,580.9958187,869.601416,692.2763339,991.7185608 +28-03-2023,993.4052208,763.8618422,465.0917841,732.5533314,979.7446855 +29-03-2023,833.9346695,120.3873942,683.2706964,485.9506182,1087.264229 +30-03-2023,518.3377875,178.0658863,972.9336173,515.7614906,971.2032196 +31-03-2023,338.4374198,615.423406,878.5942375,622.9928521,1078.054928 +03-04-2023,506.6888439,115.1378502,818.7390843,438.2293521,943.4230379 +04-04-2023,353.2137671,983.0668689,883.8254464,783.7726361,985.1884173 +05-04-2023,853.4493333,356.2531775,757.1297778,613.6639295,914.2971704 +06-04-2023,986.329063,526.321612,470.732155,632.131267,1007.96171 +07-04-2023,14.66582097,700.2037687,858.4775686,565.9260122,936.8136189 +10-04-2023,247.4571861,315.0245771,500.6770213,354.5615001,1083.25247 +11-04-2023,72.08015736,89.6424761,421.1107589,187.8068457,1020.613614 +12-04-2023,261.2189527,406.0373025,454.3862981,382.2996062,1026.869837 +13-04-2023,976.2733967,944.2598201,139.7301515,703.1590569,1014.133922 +14-04-2023,882.5859737,80.20666233,507.6354697,427.4992805,945.3729593 +17-04-2023,163.9099001,365.8921454,743.3402256,428.9894532,1006.205914 +18-04-2023,424.5054794,806.9512876,718.815711,677.2894425,1091.854034 +19-04-2023,942.8394462,534.1560206,802.147954,726.6506781,1000.427746 +20-04-2023,322.9071063,345.7458451,400.5104636,356.6308481,949.1491899 +21-04-2023,410.9157343,103.2532207,519.0989393,314.6055361,907.3828672 +24-04-2023,96.80321927,889.7621358,61.84478322,420.7083807,964.3336505 +25-04-2023,449.6944303,284.6940664,154.8694157,288.5469577,911.8885551 +26-04-2023,783.8366908,714.9323989,145.9478902,556.7959267,1041.525868 +27-04-2023,632.7656411,792.5551673,773.3322204,743.8432023,1039.058363 +28-04-2023,92.27959766,685.512719,716.0239209,536.2803727,956.2159086 +01-05-2023,862.166267,508.0443389,461.0940003,588.2086071,1030.699065 +02-05-2023,965.1163249,796.5122557,558.7309908,767.8276602,971.1772674 +03-05-2023,330.6170713,845.237996,455.4363895,586.6026376,997.7192859 +04-05-2023,92.68519216,454.9042727,871.9683962,487.4291114,1018.597778 +05-05-2023,448.2821469,14.34914774,611.4853239,315.7399332,977.8019995 +08-05-2023,995.8300034,817.248584,617.2379466,802.9542498,1020.910167 +09-05-2023,914.3988868,813.5816817,498.6393527,742.8179192,915.7135975 +10-05-2023,591.2202854,731.2928092,846.426164,729.5495072,1005.873749 +11-05-2023,58.17640238,774.8038572,447.50344,481.5236858,998.2523989 +12-05-2023,660.7985603,764.633011,539.501925,666.9917851,897.6803432 +15-05-2023,158.5148506,409.5268315,76.87299375,239.1460188,909.5154904 +16-05-2023,689.3006912,953.706182,795.2528122,833.8009715,907.0238197 +17-05-2023,389.7864228,584.291496,304.2006758,445.3388879,1020.715342 +18-05-2023,541.0455996,300.7269058,738.3247568,500.8137296,1006.197981 +19-05-2023,259.341508,964.0203904,661.9487322,681.7657737,1013.697879 +22-05-2023,68.77784768,10.77776351,997.0463442,332.3567994,933.6810754 +23-05-2023,220.5055782,312.5627485,208.4140142,255.6159051,1056.948691 +24-05-2023,928.1017725,652.0128597,504.3863236,680.0596145,1049.142061 +25-05-2023,557.6508145,317.8728473,614.1750024,473.9675511,961.6518482 +26-05-2023,419.6003635,199.2281464,656.6050997,400.1168559,1058.803014 +29-05-2023,373.8405693,785.0663791,415.3949575,560.3379872,987.4538802 +30-05-2023,508.271375,787.4664792,447.8780929,607.3942078,911.1897488 +31-05-2023,966.2211351,793.0286672,826.4304053,849.7261854,918.3652617 +01-06-2023,953.9204667,388.8506288,580.0802642,599.3603172,1036.686174 +02-06-2023,693.5917408,673.4584835,952.9367946,765.5733656,994.7975595 +05-06-2023,288.3486339,291.3615286,918.004402,485.0179372,1044.061247 +06-06-2023,799.3056417,203.3566241,570.0468781,476.5767239,995.5813438 +07-06-2023,745.7637341,353.0363904,434.3822512,483.3417216,1013.383545 +08-06-2023,575.3966117,467.1085575,753.0423901,584.8097641,1106.176321 +09-06-2023,5.938753683,434.6325244,337.5813753,289.8317862,1069.842454 +12-06-2023,609.1640528,775.9584419,76.1451622,514.1689358,978.3586366 +13-06-2023,158.0597336,665.0816241,738.402441,552.1972158,1018.748436 +14-06-2023,588.2017771,982.803349,499.4614891,727.2475634,1024.722272 +15-06-2023,136.2923351,686.2910604,602.0755222,513.0222283,1038.069558 +16-06-2023,590.421475,545.8536352,939.0957095,679.8088574,1003.55044 +19-06-2023,129.1563968,73.19729852,154.1171694,113.2787703,975.3234075 +20-06-2023,244.9902099,592.9463194,612.4252491,505.906479,999.8188591 +21-06-2023,232.6018775,489.2254993,482.0618528,418.3509349,975.9856445 +22-06-2023,453.1107663,803.5452949,471.6930699,606.8158923,1084.168364 +23-06-2023,758.365496,166.4811318,531.9673441,438.2402193,1062.036312 +26-06-2023,824.1047761,177.7165839,464.9221687,439.7640735,989.8192491 +27-06-2023,609.079316,184.7745748,756.7656059,475.7864796,1021.414613 +28-06-2023,78.9962478,946.4155089,468.2214942,565.9698453,991.7270368 +29-06-2023,336.1230864,116.8070072,432.5966431,273.4752175,1059.662057 +30-06-2023,659.8040294,94.48727914,306.2690952,311.4408589,1052.444026 +03-07-2023,836.0175828,646.1810256,206.3730119,560.4827311,1028.430542 +04-07-2023,160.9097958,904.4850262,287.0202213,513.9508169,1043.563213 +05-07-2023,179.5001689,999.9640185,309.1918278,566.1116458,1033.02854 +06-07-2023,124.7401878,461.7576298,434.3451102,363.0925341,1058.703093 +07-07-2023,926.8024758,134.2049475,91.13640613,332.8740729,1026.556569 +10-07-2023,92.97867091,904.2874658,449.369178,546.075398,1007.595026 +11-07-2023,150.6065282,593.8300984,537.6233557,457.8173785,971.1387188 +12-07-2023,198.4067477,603.0381394,340.2312343,413.2365146,921.4124631 +13-07-2023,238.3707677,510.4006109,291.6492615,369.7438279,998.607581 +14-07-2023,222.1399218,879.7224083,155.7625766,479.1448526,962.9472233 +17-07-2023,280.5899773,386.1383798,273.6383103,322.9907642,1003.000453 +18-07-2023,210.7106426,771.1460971,329.0161587,484.0157694,1057.024421 +19-07-2023,112.5129577,540.8951625,125.4884972,297.3843709,1008.641234 +20-07-2023,357.5196074,881.8267623,369.1611951,582.4725068,979.2499164 +21-07-2023,632.5089743,514.625536,137.7248458,429.2001276,957.3435688 +24-07-2023,649.0695978,856.0349969,93.21247405,563.9457216,928.4932396 +25-07-2023,753.6800891,690.2112815,866.660575,761.9468242,1066.640267 +26-07-2023,104.0919321,305.6953794,694.2914872,372.3535248,911.1654491 +27-07-2023,22.01797889,734.0756777,857.978579,582.0372831,953.2608487 +28-07-2023,453.3040524,434.3299034,278.4689621,391.0384221,884.3399033 +31-07-2023,5.051870005,186.3035167,979.8641184,384.0764007,984.1929212 +01-08-2023,867.2860771,266.5046387,963.7488571,643.5963754,982.885772 +02-08-2023,367.712616,297.5853748,152.8076354,271.4176663,979.785279 +03-08-2023,901.6110695,986.9924911,327.4114041,759.4674634,996.843505 +04-08-2023,703.4304234,335.3034098,104.9907393,362.3125359,958.9367463 +07-08-2023,392.6923069,551.5699608,123.0167592,376.0768775,954.317218 +08-08-2023,818.2727748,497.3631169,234.3829525,501.6032248,1090.891321 +09-08-2023,592.7595785,793.2593061,327.6243491,595.124193,983.2968526 +10-08-2023,701.4763244,427.85918,964.0511688,667.4500897,1045.382931 +11-08-2023,770.9400866,356.3509025,17.74795906,362.1844227,958.1614479 +14-08-2023,657.5198954,197.8721586,121.8791756,297.2538768,1080.63643 +15-08-2023,931.7764514,999.9489702,269.8888206,755.156284,1075.709107 +16-08-2023,301.7685522,164.9889392,457.6847759,292.410572,1011.550934 +17-08-2023,865.8437598,701.5059521,846.3315581,790.4122032,945.0234204 +18-08-2023,228.4816557,730.4560674,918.5266284,654.5315681,1004.350069 +21-08-2023,281.4161142,690.6535436,400.6574117,491.1822459,1002.365225 +22-08-2023,290.2266452,969.6234688,348.63323,595.1641297,1011.981196 +23-08-2023,107.8496813,388.5892096,447.678291,331.8230202,951.0889692 +24-08-2023,752.2108255,949.9142669,817.0569838,855.7961582,923.8499932 +25-08-2023,930.9413113,475.06013,719.3165682,672.8153531,1008.118152 +28-08-2023,309.049585,69.58710852,365.4735253,225.4683991,999.4854342 +29-08-2023,697.9152283,274.6221102,861.4058956,569.9539361,1000.103751 +30-08-2023,790.77285,194.0425492,330.8367625,396.1293646,1051.340029 +31-08-2023,825.3026175,243.9377895,331.6021457,426.6678791,926.2419758 +01-09-2023,343.0669324,801.0420278,37.03026561,441.4340186,1050.534686 +04-09-2023,73.78698312,578.4515482,397.111991,387.170505,962.838623 +05-09-2023,632.8853196,266.4612762,909.5826775,564.062507,980.2388967 +06-09-2023,760.9418872,67.74622055,783.9054773,475.4302464,958.7110318 +07-09-2023,969.5823723,942.4356206,735.483798,885.475726,1004.480993 +08-09-2023,123.5937535,576.0767658,284.2327288,364.4630343,904.7091063 +11-09-2023,970.2129436,717.4857254,610.7655898,751.9770434,971.595714 +12-09-2023,695.0880426,437.9791291,372.7367514,486.5141804,974.2121727 +13-09-2023,935.7995794,331.9271348,41.43613173,403.3276855,1063.19651 +14-09-2023,400.8401542,790.3403526,648.468358,642.1156212,1007.534907 +15-09-2023,962.1707755,106.2018676,911.5463022,585.1070262,1034.775916 +18-09-2023,368.8491939,474.0025854,428.4821545,431.7460414,1000.296941 +19-09-2023,116.4522811,247.7964557,742.2715692,366.1070532,947.5549814 +20-09-2023,23.00754185,133.8877744,25.21016879,70.49999954,1045.360243 +21-09-2023,857.3880573,617.3248278,169.9286621,542.7082999,957.7279329 +22-09-2023,768.7722231,966.8005975,934.5603745,903.8194662,973.687833 +25-09-2023,921.5475478,7.810215406,589.013489,432.6130702,1009.104989 +26-09-2023,256.6326166,564.6472143,318.0302892,405.7164904,1047.276939 +27-09-2023,153.6665428,444.4937234,495.0963272,382.3953437,989.9307728 +28-09-2023,989.7655068,42.38788414,301.1551989,376.130469,1075.526237 +29-09-2023,851.8938451,659.6954981,826.6830318,762.9323342,971.4260792 +02-10-2023,660.2909186,759.5363091,492.92175,650.2494174,1033.279464 +03-10-2023,204.8776929,810.0038608,567.8206547,572.9662484,1000.180815 +04-10-2023,139.5051938,804.8940269,958.5859104,674.5846477,1077.333592 +05-10-2023,346.1638726,293.5122521,81.77517821,241.8903973,1010.720301 +06-10-2023,664.4912264,958.9616185,135.99269,624.7982754,906.1343591 +09-10-2023,485.1596313,98.23818465,34.10990371,181.8461937,1054.41676 +10-10-2023,664.5010507,867.6871753,337.5705361,648.8231791,995.9225743 +11-10-2023,875.7651744,117.0530992,237.9606819,357.5429965,972.3469044 +12-10-2023,901.6067269,508.5098937,608.1923838,644.6043688,1061.148238 +13-10-2023,38.01823254,128.3899101,55.7908125,81.68458089,983.4345682 +16-10-2023,905.0007399,134.7949639,849.6728266,562.6829549,1029.999337 +17-10-2023,351.0346994,800.5974964,365.0435475,545.1683205,961.580834 +18-10-2023,267.6840397,93.66070119,280.7065906,198.2599822,958.1934937 +19-10-2023,471.4797167,817.5087989,452.5149548,611.6732892,1090.529088 +20-10-2023,971.4355749,541.6330109,24.94562981,496.2724878,960.6483631 +23-10-2023,415.3673002,688.8991074,234.2916462,474.6486756,970.7614532 +24-10-2023,698.6299508,503.6973052,25.73777558,407.5229711,914.5839604 +25-10-2023,774.3529495,560.3737038,82.49350308,469.3193012,1081.499112 +26-10-2023,475.2140335,287.2928818,879.6815426,521.3977304,1019.899916 +27-10-2023,284.9270528,941.687071,546.1327493,643.2416993,1011.888982 +30-10-2023,323.6137095,813.5450174,697.4003784,646.4369472,1048.756921 +31-10-2023,413.9624957,629.6183027,778.584264,618.1541648,933.5331715 +01-11-2023,851.5577943,816.4127137,166.0770886,623.9998195,972.9476609 +02-11-2023,828.3895525,58.62905888,200.1706816,308.477851,995.4281134 +03-11-2023,622.9267201,114.6925254,603.3475951,402.295933,922.5764475 +06-11-2023,307.9656914,429.4665852,315.1515034,361.4881442,1065.571356 +07-11-2023,70.17356786,500.7587529,963.5994444,529.1999827,999.0785475 +08-11-2023,611.7833482,300.0318716,956.1498341,587.0403377,983.8355682 +09-11-2023,389.237252,697.5177339,634.1128049,595.3709869,1011.811274 +10-11-2023,952.910848,914.6026945,148.0040564,686.9567602,962.3708858 +13-11-2023,85.68587473,809.6423278,904.9432133,645.5449027,1002.25565 +14-11-2023,492.9736039,690.7612738,69.78828018,445.1465426,1171.376927 +15-11-2023,219.8043979,149.3761947,601.1605836,308.4166306,1030.234102 +16-11-2023,197.5398938,59.84631555,302.2072827,171.8923254,1083.415553 +17-11-2023,677.2124291,577.8637243,330.7249655,527.748196,982.2458439 +20-11-2023,833.4788758,276.269108,260.5476384,420.4541594,962.4215505 +21-11-2023,559.9474108,478.2156398,445.9726606,490.0746083,1015.485179 +22-11-2023,155.785619,504.6461916,259.0189173,335.095535,932.9147528 +23-11-2023,392.1798826,733.5704477,936.8628256,705.3287613,884.6521117 +24-11-2023,773.8629652,405.6338946,593.0331393,562.2964152,1036.579625 +27-11-2023,746.4978159,414.2210501,360.2481588,486.3620703,1032.066907 +28-11-2023,135.243296,736.2608015,838.5085908,607.2075851,1041.692561 +29-11-2023,316.584411,783.5077656,610.2130583,604.8196977,1001.408494 +30-11-2023,784.0830464,411.3373831,747.5763636,615.3967384,1098.918635 +01-12-2023,408.5091179,88.75798542,550.5789181,317.6114464,995.6335906 +04-12-2023,454.3287264,252.8798872,892.113335,505.140708,972.301763 +05-12-2023,382.8533055,39.12611143,382.1357402,237.5235912,849.6750642 +06-12-2023,424.5098079,861.6377232,799.1832081,725.3168678,997.6417066 +07-12-2023,199.9665859,839.029226,247.9272283,484.6350615,1041.593889 +08-12-2023,341.9341482,76.81845398,55.35631313,141.0815301,1000.34306 +11-12-2023,680.8601208,923.3410845,493.0168542,724.932994,1056.211087 +12-12-2023,844.093712,793.7512497,664.6787234,767.1644578,1114.744058 +13-12-2023,978.2289311,802.1879209,274.8443942,685.6346822,991.3324896 +14-12-2023,789.0142462,692.6616463,399.5204466,627.4689371,1061.562678 +15-12-2023,76.79747023,214.3595296,797.2378916,358.4403916,920.7073712 +18-12-2023,248.4852881,997.857983,693.98814,703.088934,1051.565955 +19-12-2023,477.2224807,570.4366902,610.8727235,558.0484619,1003.174524 +20-12-2023,968.94482,161.7411946,272.3958027,412.0217229,988.9304751 +21-12-2023,709.591048,239.8579831,871.2971622,561.4709909,991.830054 +22-12-2023,346.5341757,180.8393999,47.62076085,183.8248225,992.1848266 +25-12-2023,595.5950403,825.2821896,273.7931111,592.6963007,984.5598545 +26-12-2023,917.5394863,757.7342701,61.3006825,584.3649312,1009.933649 +27-12-2023,572.6329967,567.4409403,202.3723049,455.5402987,991.2853933 +28-12-2023,334.5443787,458.2788936,48.07782124,297.8823515,942.2103761 +29-12-2023,149.7764093,164.0043891,379.2357545,226.9896334,1020.852694 diff --git a/PortFolio Optimaization Using Genetic ALgorithm/readme.md b/PortFolio Optimaization Using Genetic ALgorithm/readme.md new file mode 100644 index 0000000000..2d6817ba9f --- /dev/null +++ b/PortFolio Optimaization Using Genetic ALgorithm/readme.md @@ -0,0 +1,36 @@ +# Portfolio Optimization Using Genetic Algorithms + +## Overview +This project implements portfolio optimization using genetic algorithms to find the optimal asset allocation that maximizes returns and minimizes risk. + +## Objectives +- **Data Collection:** Gather historical price data for a set of assets. +- **Data Preprocessing:** Clean and prepare the data for analysis. +- **Feature Engineering:** Calculate returns, volatility, and correlations. +- **Genetic Algorithm Implementation:** Develop and apply a genetic algorithm to optimize the portfolio. +- **Evaluation:** Assess the performance of the optimized portfolio. + +## Methodology +1. **Data Collection:** + - Collect historical price data for various assets from sources like Yahoo Finance, Quandl, or Bloomberg. + +2. **Data Preprocessing:** + - Handle missing values and outliers. + - Calculate daily, monthly, or annual returns. + +3. **Feature Engineering:** + - Compute metrics such as average return, standard deviation, and correlation matrix. + +4. **Genetic Algorithm Implementation:** + - Define the chromosome representation, fitness function, and genetic operators (selection, crossover, mutation). + - Optimize the portfolio by maximizing the Sharpe ratio or minimizing risk. + +5. **Evaluation:** + - Evaluate the optimized portfolio's performance against a benchmark. + - Use metrics such as Sharpe ratio, Sortino ratio, and Maximum Drawdown. + +## Tools and Technologies +- **Programming Languages:** Python +- **Libraries:** pandas, numpy, scipy, matplotlib, seaborn, DEAP (for genetic algorithms) + +