diff --git a/examples/FinRL_PortfolioOptimizationEnv_Demo.ipynb b/examples/FinRL_PortfolioOptimizationEnv_Demo.ipynb
new file mode 100644
index 000000000..23bf077c6
--- /dev/null
+++ b/examples/FinRL_PortfolioOptimizationEnv_Demo.ipynb
@@ -0,0 +1,2465 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "3xt6fIDownZs"
+ },
+ "source": [
+ "# A guide Portfolio Optimization Environment\n",
+ "\n",
+ "This notebook aims to provide an example of using PortfolioOptimizationEnv (or POE) to train a reinforcement learning model that learns to solve the portfolio optimization problem.\n",
+ "\n",
+ "In this document, we will reproduce a famous architecture called EIIE (ensemble of identical independent evaluators), introduced in the following paper:\n",
+ "\n",
+ "- Zhengyao Jiang, Dixing Xu, & Jinjun Liang. (2017). A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem. https://doi.org/10.48550/arXiv.1706.10059.\n",
+ "\n",
+ "It's advisable to read it to understand the algorithm implemented in this notebook.\n",
+ "\n",
+ "### Note\n",
+ "If you're using this environment, consider citing the following paper (in adittion to FinRL references):\n",
+ "\n",
+ "- Caio Costa, & Anna Costa (2023). POE: A General Portfolio Optimization Environment for FinRL. In *Anais do II Brazilian Workshop on Artificial Intelligence in Finance* (pp. 132–143). SBC. https://doi.org/10.5753/bwaif.2023.231144.\n",
+ "\n",
+ "```\n",
+ "@inproceedings{bwaif,\n",
+ " author = {Caio Costa and Anna Costa},\n",
+ " title = {POE: A General Portfolio Optimization Environment for FinRL},\n",
+ " booktitle = {Anais do II Brazilian Workshop on Artificial Intelligence in Finance},\n",
+ " location = {João Pessoa/PB},\n",
+ " year = {2023},\n",
+ " keywords = {},\n",
+ " issn = {0000-0000},\n",
+ " pages = {132--143},\n",
+ " publisher = {SBC},\n",
+ " address = {Porto Alegre, RS, Brasil},\n",
+ " doi = {10.5753/bwaif.2023.231144},\n",
+ " url = {https://sol.sbc.org.br/index.php/bwaif/article/view/24959}\n",
+ "}\n",
+ "\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q0L7FZeWMUHp"
+ },
+ "source": [
+ "## Installation and imports\n",
+ "\n",
+ "To run this notebook in google colab, uncomment the cells below."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 127,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "XGHfTt1HMVQw",
+ "outputId": "e5226807-a740-4f22-a279-f466886518ba"
+ },
+ "outputs": [],
+ "source": [
+ "## install finrl library\n",
+ "# !sudo apt install swig\n",
+ "# !pip install git+https://github.com/AI4Finance-Foundation/FinRL.git"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 128,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-GLganWiMYZ1",
+ "outputId": "b3a7f99c-55dd-4274-c1ce-ab3a8111929a"
+ },
+ "outputs": [],
+ "source": [
+ "## We also need to install quantstats, because the environment uses it to plot graphs\n",
+ "# !pip install quantstats"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 129,
+ "metadata": {
+ "id": "6RqrzokqoanP"
+ },
+ "outputs": [],
+ "source": [
+ "## Hide matplotlib warnings\n",
+ "# import warnings\n",
+ "# warnings.filterwarnings('ignore')\n",
+ "\n",
+ "import logging\n",
+ "logging.getLogger('matplotlib.font_manager').disabled = True"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Cz8DLleGz_TF"
+ },
+ "source": [
+ "#### Import the necessary code libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 130,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "cP5t6U7-nYoc",
+ "outputId": "fd138d3e-222a-4ec5-e008-03a28b89dae9"
+ },
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "\n",
+ "import numpy as np\n",
+ "\n",
+ "from finrl.meta.preprocessor.yahoodownloader import YahooDownloader\n",
+ "from finrl.meta.env_portfolio_optimization.env_portfolio_optimization import PortfolioOptimizationEnv\n",
+ "from finrl.agents.portfolio_optimization.models import DRLAgent\n",
+ "from finrl.agents.portfolio_optimization.architectures import EIIE\n",
+ "\n",
+ "device = 'cuda:0' if torch.cuda.is_available() else 'cpu'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "TY2yhvpASEyo"
+ },
+ "source": [
+ "## Fetch data\n",
+ "\n",
+ "In his paper, *Jiang et al* creates a portfolio composed by the top-11 cryptocurrencies based on 30-days volume. Since it's not specified when this classification was done, it's difficult to reproduce, so we will use a similar approach in the Brazillian stock market:\n",
+ "\n",
+ "- We select top-10 stocks from Brazillian stock market;\n",
+ "- For simplicity, we disconsider stocks that have missing data for a days in period 2011-01-01 to 2019-12-31 (9 years);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 131,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "H11UjCstSFwm",
+ "outputId": "3d27b983-d1e0-41af-b20a-421be40e469f"
+ },
+ "outputs": [],
+ "source": [
+ "TOP_BRL = [\n",
+ " \"VALE3.SA\", \"PETR4.SA\", \"ITUB4.SA\", \"BBDC4.SA\",\n",
+ " \"BBAS3.SA\", \"RENT3.SA\", \"LREN3.SA\", \"PRIO3.SA\",\n",
+ " \"WEGE3.SA\", \"ABEV3.SA\"\n",
+ "]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 132,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 623
+ },
+ "id": "Bkm96aNsSIji",
+ "outputId": "e3a20095-841e-4c89-c08e-24b9575cfb02"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "Shape of DataFrame: (22330, 8)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " open | \n",
+ " high | \n",
+ " low | \n",
+ " close | \n",
+ " volume | \n",
+ " tic | \n",
+ " day | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2011-01-03 | \n",
+ " 8.632311 | \n",
+ " 8.728203 | \n",
+ " 8.630313 | \n",
+ " 5.265023 | \n",
+ " 576145 | \n",
+ " ABEV3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2011-01-03 | \n",
+ " 31.500000 | \n",
+ " 31.799999 | \n",
+ " 31.379999 | \n",
+ " 13.565923 | \n",
+ " 3313400 | \n",
+ " BBAS3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2011-01-03 | \n",
+ " 11.809763 | \n",
+ " 11.927362 | \n",
+ " 11.724237 | \n",
+ " 6.708650 | \n",
+ " 10862336 | \n",
+ " BBDC4.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2011-01-03 | \n",
+ " 18.031555 | \n",
+ " 18.250118 | \n",
+ " 17.963253 | \n",
+ " 10.446303 | \n",
+ " 10014663 | \n",
+ " ITUB4.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2011-01-03 | \n",
+ " 9.264964 | \n",
+ " 9.492898 | \n",
+ " 9.264964 | \n",
+ " 7.048940 | \n",
+ " 3320493 | \n",
+ " LREN3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 22325 | \n",
+ " 2019-12-30 | \n",
+ " 30.549999 | \n",
+ " 30.709999 | \n",
+ " 30.150000 | \n",
+ " 11.107358 | \n",
+ " 22111600 | \n",
+ " PETR4.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 22326 | \n",
+ " 2019-12-30 | \n",
+ " 6.780000 | \n",
+ " 6.832000 | \n",
+ " 6.570000 | \n",
+ " 6.601397 | \n",
+ " 8933500 | \n",
+ " PRIO3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 22327 | \n",
+ " 2019-12-30 | \n",
+ " 47.959999 | \n",
+ " 48.290001 | \n",
+ " 47.299999 | \n",
+ " 44.469746 | \n",
+ " 2701600 | \n",
+ " RENT3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 22328 | \n",
+ " 2019-12-30 | \n",
+ " 53.650002 | \n",
+ " 53.860001 | \n",
+ " 53.200001 | \n",
+ " 37.320980 | \n",
+ " 11928100 | \n",
+ " VALE3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 22329 | \n",
+ " 2019-12-30 | \n",
+ " 17.700001 | \n",
+ " 17.740000 | \n",
+ " 17.330000 | \n",
+ " 16.431314 | \n",
+ " 5838200 | \n",
+ " WEGE3.SA | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
22330 rows × 8 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date open high ... volume tic day\n",
+ "0 2011-01-03 8.632311 8.728203 ... 576145 ABEV3.SA 0\n",
+ "1 2011-01-03 31.500000 31.799999 ... 3313400 BBAS3.SA 0\n",
+ "2 2011-01-03 11.809763 11.927362 ... 10862336 BBDC4.SA 0\n",
+ "3 2011-01-03 18.031555 18.250118 ... 10014663 ITUB4.SA 0\n",
+ "4 2011-01-03 9.264964 9.492898 ... 3320493 LREN3.SA 0\n",
+ "... ... ... ... ... ... ... ...\n",
+ "22325 2019-12-30 30.549999 30.709999 ... 22111600 PETR4.SA 0\n",
+ "22326 2019-12-30 6.780000 6.832000 ... 8933500 PRIO3.SA 0\n",
+ "22327 2019-12-30 47.959999 48.290001 ... 2701600 RENT3.SA 0\n",
+ "22328 2019-12-30 53.650002 53.860001 ... 11928100 VALE3.SA 0\n",
+ "22329 2019-12-30 17.700001 17.740000 ... 5838200 WEGE3.SA 0\n",
+ "\n",
+ "[22330 rows x 8 columns]"
+ ]
+ },
+ "execution_count": 132,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "print(len(TOP_BRL))\n",
+ "\n",
+ "portfolio_raw_df = YahooDownloader(start_date = '2011-01-01',\n",
+ " end_date = '2019-12-31',\n",
+ " ticker_list = TOP_BRL).fetch_data()\n",
+ "portfolio_raw_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 133,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 444
+ },
+ "id": "2UqpIXsuSKfO",
+ "outputId": "436605d5-bc9e-4038-e3d7-7bdf140033d8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " open | \n",
+ " high | \n",
+ " low | \n",
+ " close | \n",
+ " volume | \n",
+ " day | \n",
+ "
\n",
+ " \n",
+ " tic | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " ABEV3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " BBAS3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " BBDC4.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " ITUB4.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " LREN3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " PETR4.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " PRIO3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " RENT3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " VALE3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ " WEGE3.SA | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ " 2233 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date open high low close volume day\n",
+ "tic \n",
+ "ABEV3.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "BBAS3.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "BBDC4.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "ITUB4.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "LREN3.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "PETR4.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "PRIO3.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "RENT3.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "VALE3.SA 2233 2233 2233 2233 2233 2233 2233\n",
+ "WEGE3.SA 2233 2233 2233 2233 2233 2233 2233"
+ ]
+ },
+ "execution_count": 133,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "portfolio_raw_df.groupby(\"tic\").count()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "pM829994GWo3"
+ },
+ "source": [
+ "### Instantiate Environment\n",
+ "\n",
+ "Using the `PortfolioOptimizationEnv`, it's easy to instantiate a portfolio optimization environment for reinforcement learning agents. In the example below, we use the dataframe created before to start an environment."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 134,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Normalizing ['close', 'high', 'low'] by previous time...\n"
+ ]
+ }
+ ],
+ "source": [
+ "df_portfolio = portfolio_raw_df[[\"date\", \"tic\", \"close\", \"high\", \"low\"]]\n",
+ "\n",
+ "environment = PortfolioOptimizationEnv(\n",
+ " df_portfolio,\n",
+ " initial_amount=100000,\n",
+ " comission_fee_pct=0.0025,\n",
+ " time_window=50,\n",
+ " features=[\"close\", \"high\", \"low\"]\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Instantiate Model\n",
+ "\n",
+ "Now, we can instantiate the model using FinRL API. In this example, we are going to use the EIIE architecture introduced by Jiang et. al.\n",
+ "\n",
+ ":exclamation: **Note:** Remember to set the architecture's `time_window` parameter with the same value of the environment's `time_window`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 135,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000,
+ "referenced_widgets": [
+ "750b2ea28d2a439db3fc5034927dbce2",
+ "c172e120fc5e4f9ab13bf8599d868b5f",
+ "4b2aa7128c5d4d15bb794eb76faccd6a",
+ "317393fb13c0449abfff29a4949553a0",
+ "8cb75a82e5374c51b1f47a6e15783177",
+ "9cb3d937be5d4f7cac192b392218ef37",
+ "b27b9cc333ac44a5bb2cec60d02f16c0",
+ "6a1187acb99d44c68e27cd5aad879ff1",
+ "6a5c9dbaddc441d390d4827c170cbe9c",
+ "1f84695a1caf4c80b29eb5eea90bb29a",
+ "a7a6884bfdb642b9b342f7cda49d7d67"
+ ]
+ },
+ "id": "wr82W3E0uQSo",
+ "outputId": "61dcf1f5-7cf0-40b2-85bd-3f7dd943ddc6",
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "# set PolicyGradient parameters\n",
+ "model_kwargs = {\n",
+ " \"lr\": 0.01,\n",
+ " \"policy\": EIIE,\n",
+ "}\n",
+ "\n",
+ "# here, we can set EIIE's parameters\n",
+ "policy_kwargs = {\n",
+ " \"k_size\": 4,\n",
+ " \"time_window\": 50,\n",
+ " \"device\": device\n",
+ "}\n",
+ "\n",
+ "model = DRLAgent(environment).get_model(\"pg\", model_kwargs, policy_kwargs)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Train Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 136,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 361474.125\n",
+ "Final accumulative portfolio value: 3.61474125\n",
+ "Maximum DrawDown: -0.44278663937515705\n",
+ "Sharpe ratio: 0.7851840332671329\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 5%|▌ | 1/20 [00:10<03:22, 10.65s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 367367.75\n",
+ "Final accumulative portfolio value: 3.6736775\n",
+ "Maximum DrawDown: -0.44544702041693773\n",
+ "Sharpe ratio: 0.7889937808125205\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 10%|█ | 2/20 [00:21<03:11, 10.64s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 341392.1875\n",
+ "Final accumulative portfolio value: 3.413921875\n",
+ "Maximum DrawDown: -0.40833481343659395\n",
+ "Sharpe ratio: 0.7853202449980996\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 15%|█▌ | 3/20 [00:31<03:00, 10.64s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 407335.0\n",
+ "Final accumulative portfolio value: 4.07335\n",
+ "Maximum DrawDown: -0.46804438206034515\n",
+ "Sharpe ratio: 0.8067679859324299\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 20%|██ | 4/20 [00:42<02:50, 10.66s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 420579.9375\n",
+ "Final accumulative portfolio value: 4.205799375\n",
+ "Maximum DrawDown: -0.469598046340988\n",
+ "Sharpe ratio: 0.8051605373339927\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 25%|██▌ | 5/20 [00:53<02:39, 10.61s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 453810.21875\n",
+ "Final accumulative portfolio value: 4.5381021875\n",
+ "Maximum DrawDown: -0.4524471342004611\n",
+ "Sharpe ratio: 0.827235064234536\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 30%|███ | 6/20 [01:03<02:27, 10.53s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 561952.375\n",
+ "Final accumulative portfolio value: 5.61952375\n",
+ "Maximum DrawDown: -0.47880184779386326\n",
+ "Sharpe ratio: 0.8551097402398795\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 35%|███▌ | 7/20 [01:13<02:16, 10.49s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 604649.5\n",
+ "Final accumulative portfolio value: 6.046495\n",
+ "Maximum DrawDown: -0.5322350966854077\n",
+ "Sharpe ratio: 0.7896393741372305\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 40%|████ | 8/20 [01:24<02:05, 10.46s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 577075.4375\n",
+ "Final accumulative portfolio value: 5.770754375\n",
+ "Maximum DrawDown: -0.5981585577705477\n",
+ "Sharpe ratio: 0.6958970690891116\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 45%|████▌ | 9/20 [01:34<01:55, 10.48s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 599269.125\n",
+ "Final accumulative portfolio value: 5.99269125\n",
+ "Maximum DrawDown: -0.6529561182875228\n",
+ "Sharpe ratio: 0.6859310166769742\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|█████ | 10/20 [01:45<01:44, 10.49s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 708887.375\n",
+ "Final accumulative portfolio value: 7.08887375\n",
+ "Maximum DrawDown: -0.6771446995966863\n",
+ "Sharpe ratio: 0.7210440705113376\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 55%|█████▌ | 11/20 [01:55<01:34, 10.48s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 865635.3125\n",
+ "Final accumulative portfolio value: 8.656353125\n",
+ "Maximum DrawDown: -0.681352361247958\n",
+ "Sharpe ratio: 0.7630764231791436\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 60%|██████ | 12/20 [02:06<01:23, 10.47s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 973545.25\n",
+ "Final accumulative portfolio value: 9.7354525\n",
+ "Maximum DrawDown: -0.6725992234520531\n",
+ "Sharpe ratio: 0.7939690978360787\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 65%|██████▌ | 13/20 [02:17<01:13, 10.57s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 1138418.125\n",
+ "Final accumulative portfolio value: 11.38418125\n",
+ "Maximum DrawDown: -0.6711483054281047\n",
+ "Sharpe ratio: 0.8222353508533622\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 70%|███████ | 14/20 [02:27<01:03, 10.60s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 1402175.5\n",
+ "Final accumulative portfolio value: 14.021755\n",
+ "Maximum DrawDown: -0.662336537704288\n",
+ "Sharpe ratio: 0.86537519568219\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 75%|███████▌ | 15/20 [02:38<00:52, 10.55s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 1698154.375\n",
+ "Final accumulative portfolio value: 16.98154375\n",
+ "Maximum DrawDown: -0.6535264151004916\n",
+ "Sharpe ratio: 0.9058785622283346\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 80%|████████ | 16/20 [02:48<00:42, 10.50s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 2016288.25\n",
+ "Final accumulative portfolio value: 20.1628825\n",
+ "Maximum DrawDown: -0.6440322262060848\n",
+ "Sharpe ratio: 0.9428484491387145\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 85%|████████▌ | 17/20 [02:58<00:31, 10.48s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 2346726.5\n",
+ "Final accumulative portfolio value: 23.467265\n",
+ "Maximum DrawDown: -0.634284880387107\n",
+ "Sharpe ratio: 0.9759229657591402\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 90%|█████████ | 18/20 [03:09<00:20, 10.43s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 2695615.75\n",
+ "Final accumulative portfolio value: 26.9561575\n",
+ "Maximum DrawDown: -0.6263110274122448\n",
+ "Sharpe ratio: 1.0062827959000722\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 95%|█████████▌| 19/20 [03:19<00:10, 10.43s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 3077908.25\n",
+ "Final accumulative portfolio value: 30.7790825\n",
+ "Maximum DrawDown: -0.620180266358566\n",
+ "Sharpe ratio: 1.0358328134696104\n",
+ "=================================\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [03:30<00:00, 10.50s/it]\n"
+ ]
+ }
+ ],
+ "source": [
+ "DRLAgent.train_model(model, episodes=20)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "JE7X3qEeXOr4"
+ },
+ "source": [
+ "### Save Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 137,
+ "metadata": {
+ "id": "YcWuPgPvXNpP"
+ },
+ "outputs": [],
+ "source": [
+ "torch.save(model.train_policy.state_dict(), \"policy_EIIE.pt\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7FRK9A98XVck"
+ },
+ "source": [
+ "## Test Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "pstJ-uY1_7VY"
+ },
+ "source": [
+ "### Define test period\n",
+ "In this work, we are going to use three annual test periods: the year of 2020, 2021 and 2022. To get data from Yahoo Finance, we do just like in the training data."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 138,
+ "metadata": {
+ "id": "yf7yyFWLfEgh"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "Shape of DataFrame: (2480, 8)\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "Shape of DataFrame: (2470, 8)\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "[*********************100%%**********************] 1 of 1 completed\n",
+ "Shape of DataFrame: (2500, 8)\n"
+ ]
+ }
+ ],
+ "source": [
+ "portfolio_2020_raw_df = YahooDownloader(start_date = '2020-01-01',\n",
+ " end_date = '2020-12-31',\n",
+ " ticker_list = TOP_BRL).fetch_data()\n",
+ "portfolio_2021_raw_df = YahooDownloader(start_date = '2021-01-01',\n",
+ " end_date = '2021-12-31',\n",
+ " ticker_list = TOP_BRL).fetch_data()\n",
+ "portfolio_2022_raw_df = YahooDownloader(start_date = '2022-01-01',\n",
+ " end_date = '2022-12-31',\n",
+ " ticker_list = TOP_BRL).fetch_data()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 139,
+ "metadata": {
+ "id": "WkbmU7ug87qe"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " open | \n",
+ " high | \n",
+ " low | \n",
+ " close | \n",
+ " volume | \n",
+ " day | \n",
+ "
\n",
+ " \n",
+ " tic | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " ABEV3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " BBAS3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " BBDC4.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " ITUB4.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " LREN3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " PETR4.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " PRIO3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " RENT3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " VALE3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ " WEGE3.SA | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ " 248 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date open high low close volume day\n",
+ "tic \n",
+ "ABEV3.SA 248 248 248 248 248 248 248\n",
+ "BBAS3.SA 248 248 248 248 248 248 248\n",
+ "BBDC4.SA 248 248 248 248 248 248 248\n",
+ "ITUB4.SA 248 248 248 248 248 248 248\n",
+ "LREN3.SA 248 248 248 248 248 248 248\n",
+ "PETR4.SA 248 248 248 248 248 248 248\n",
+ "PRIO3.SA 248 248 248 248 248 248 248\n",
+ "RENT3.SA 248 248 248 248 248 248 248\n",
+ "VALE3.SA 248 248 248 248 248 248 248\n",
+ "WEGE3.SA 248 248 248 248 248 248 248"
+ ]
+ },
+ "execution_count": 139,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "portfolio_2020_raw_df.groupby(\"tic\").count()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 140,
+ "metadata": {
+ "id": "xclUdAcr8-Nv"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " open | \n",
+ " high | \n",
+ " low | \n",
+ " close | \n",
+ " volume | \n",
+ " day | \n",
+ "
\n",
+ " \n",
+ " tic | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " ABEV3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " BBAS3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " BBDC4.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " ITUB4.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " LREN3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " PETR4.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " PRIO3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " RENT3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " VALE3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ " WEGE3.SA | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ " 247 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date open high low close volume day\n",
+ "tic \n",
+ "ABEV3.SA 247 247 247 247 247 247 247\n",
+ "BBAS3.SA 247 247 247 247 247 247 247\n",
+ "BBDC4.SA 247 247 247 247 247 247 247\n",
+ "ITUB4.SA 247 247 247 247 247 247 247\n",
+ "LREN3.SA 247 247 247 247 247 247 247\n",
+ "PETR4.SA 247 247 247 247 247 247 247\n",
+ "PRIO3.SA 247 247 247 247 247 247 247\n",
+ "RENT3.SA 247 247 247 247 247 247 247\n",
+ "VALE3.SA 247 247 247 247 247 247 247\n",
+ "WEGE3.SA 247 247 247 247 247 247 247"
+ ]
+ },
+ "execution_count": 140,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "portfolio_2021_raw_df.groupby(\"tic\").count()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 141,
+ "metadata": {
+ "id": "Lkl9XcGU8_5i"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " open | \n",
+ " high | \n",
+ " low | \n",
+ " close | \n",
+ " volume | \n",
+ " day | \n",
+ "
\n",
+ " \n",
+ " tic | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " ABEV3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " BBAS3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " BBDC4.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " ITUB4.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " LREN3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " PETR4.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " PRIO3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " RENT3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " VALE3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ " WEGE3.SA | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ " 250 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date open high low close volume day\n",
+ "tic \n",
+ "ABEV3.SA 250 250 250 250 250 250 250\n",
+ "BBAS3.SA 250 250 250 250 250 250 250\n",
+ "BBDC4.SA 250 250 250 250 250 250 250\n",
+ "ITUB4.SA 250 250 250 250 250 250 250\n",
+ "LREN3.SA 250 250 250 250 250 250 250\n",
+ "PETR4.SA 250 250 250 250 250 250 250\n",
+ "PRIO3.SA 250 250 250 250 250 250 250\n",
+ "RENT3.SA 250 250 250 250 250 250 250\n",
+ "VALE3.SA 250 250 250 250 250 250 250\n",
+ "WEGE3.SA 250 250 250 250 250 250 250"
+ ]
+ },
+ "execution_count": 141,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "portfolio_2022_raw_df.groupby(\"tic\").count()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "IFYB9iGwAPSh"
+ },
+ "source": [
+ "### Instantiate different environments\n",
+ "\n",
+ "Since we have three different periods of time, we need three different environments instantiated to simulate them."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 142,
+ "metadata": {
+ "id": "HhsL5Cxx9d5s"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Normalizing ['close', 'high', 'low'] by previous time...\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Normalizing ['close', 'high', 'low'] by previous time...\n",
+ "Normalizing ['close', 'high', 'low'] by previous time...\n"
+ ]
+ }
+ ],
+ "source": [
+ "df_portfolio_2020 = portfolio_2020_raw_df[[\"date\", \"tic\", \"close\", \"high\", \"low\"]]\n",
+ "df_portfolio_2021 = portfolio_2021_raw_df[[\"date\", \"tic\", \"close\", \"high\", \"low\"]]\n",
+ "df_portfolio_2022 = portfolio_2022_raw_df[[\"date\", \"tic\", \"close\", \"high\", \"low\"]]\n",
+ "\n",
+ "environment_2020 = PortfolioOptimizationEnv(\n",
+ " df_portfolio_2020,\n",
+ " initial_amount=100000,\n",
+ " comission_fee_pct=0.0025,\n",
+ " time_window=50,\n",
+ " features=[\"close\", \"high\", \"low\"]\n",
+ ")\n",
+ "\n",
+ "environment_2021 = PortfolioOptimizationEnv(\n",
+ " df_portfolio_2021,\n",
+ " initial_amount=100000,\n",
+ " comission_fee_pct=0.0025,\n",
+ " time_window=50,\n",
+ " features=[\"close\", \"high\", \"low\"]\n",
+ ")\n",
+ "\n",
+ "environment_2022 = PortfolioOptimizationEnv(\n",
+ " df_portfolio_2022,\n",
+ " initial_amount=100000,\n",
+ " comission_fee_pct=0.0025,\n",
+ " time_window=50,\n",
+ " features=[\"close\", \"high\", \"low\"]\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Y4RuS2pRAa4H"
+ },
+ "source": [
+ "### Test EIIE architecture\n",
+ "Now, we can test the EIIE architecture in the three different test periods. It's important no note that, in this code, we load the saved policy even though it's not necessary just to show how to save and load your model."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {
+ "id": "JeRy__TI9CAs"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 104272.4921875\n",
+ "Final accumulative portfolio value: 1.042724921875\n",
+ "Maximum DrawDown: -0.3134186860319077\n",
+ "Sharpe ratio: 0.36180776300706646\n",
+ "=================================\n",
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 42020.9765625\n",
+ "Final accumulative portfolio value: 0.420209765625\n",
+ "Maximum DrawDown: -0.5931160156249999\n",
+ "Sharpe ratio: -3.141339365788307\n",
+ "=================================\n",
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 52142.08203125\n",
+ "Final accumulative portfolio value: 0.5214208203125\n",
+ "Maximum DrawDown: -0.5175579482110072\n",
+ "Sharpe ratio: -2.195587992293611\n",
+ "=================================\n"
+ ]
+ }
+ ],
+ "source": [
+ "EIIE_results = {\n",
+ " \"training\": environment._asset_memory[\"final\"],\n",
+ " \"2020\": {},\n",
+ " \"2021\": {},\n",
+ " \"2022\": {}\n",
+ "}\n",
+ "\n",
+ "# instantiate an architecture with the same arguments used in training\n",
+ "# and load with load_state_dict.\n",
+ "policy = EIIE(k_size= 4, time_window= 50, device=device)\n",
+ "policy.load_state_dict(torch.load(\"policy_EIIE.pt\"))\n",
+ "\n",
+ "# 2020\n",
+ "DRLAgent.DRL_validation(model, environment_2020, policy=policy)\n",
+ "EIIE_results[\"2020\"][\"value\"] = environment_2020._asset_memory[\"final\"]\n",
+ "\n",
+ "# 2021\n",
+ "DRLAgent.DRL_validation(model, environment_2021, policy=policy)\n",
+ "EIIE_results[\"2021\"][\"value\"] = environment_2021._asset_memory[\"final\"]\n",
+ "\n",
+ "# 2022\n",
+ "DRLAgent.DRL_validation(model, environment_2022, policy=policy)\n",
+ "EIIE_results[\"2022\"][\"value\"] = environment_2022._asset_memory[\"final\"]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LZc5PpbaBU-J"
+ },
+ "source": [
+ "### Test Uniform Buy and Hold\n",
+ "For comparison, we will also test the performance of a uniform buy and hold strategy. In this strategy, the portfolio has no remaining cash and the same percentage of money is allocated in each asset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 144,
+ "metadata": {
+ "id": "ntHO_UIs-83T"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 403056.28125\n",
+ "Final accumulative portfolio value: 4.0305628125\n",
+ "Maximum DrawDown: -0.47875244091762803\n",
+ "Sharpe ratio: 0.7853090877067095\n",
+ "=================================\n",
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 171126.8125\n",
+ "Final accumulative portfolio value: 1.711268125\n",
+ "Maximum DrawDown: -0.250801953125\n",
+ "Sharpe ratio: 1.712443490118881\n",
+ "=================================\n",
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 95723.921875\n",
+ "Final accumulative portfolio value: 0.95723921875\n",
+ "Maximum DrawDown: -0.17293185561981794\n",
+ "Sharpe ratio: -0.1558444284474649\n",
+ "=================================\n",
+ "=================================\n",
+ "Initial portfolio value:100000\n",
+ "Final portfolio value: 114157.5\n",
+ "Final accumulative portfolio value: 1.141575\n",
+ "Maximum DrawDown: -0.16239865532322129\n",
+ "Sharpe ratio: 0.8449068899613046\n",
+ "=================================\n"
+ ]
+ }
+ ],
+ "source": [
+ "UBAH_results = {\n",
+ " \"train\": {},\n",
+ " \"2020\": {},\n",
+ " \"2021\": {},\n",
+ " \"2022\": {}\n",
+ "}\n",
+ "\n",
+ "PORTFOLIO_SIZE = len(TOP_BRL)\n",
+ "\n",
+ "# train period\n",
+ "terminated = False\n",
+ "environment.reset()\n",
+ "while not terminated:\n",
+ " action = [0] + [1/PORTFOLIO_SIZE] * PORTFOLIO_SIZE\n",
+ " _, _, terminated, _ = environment.step(action)\n",
+ "UBAH_results[\"train\"][\"value\"] = environment._asset_memory[\"final\"]\n",
+ "\n",
+ "# 2020\n",
+ "terminated = False\n",
+ "environment_2020.reset()\n",
+ "while not terminated:\n",
+ " action = [0] + [1/PORTFOLIO_SIZE] * PORTFOLIO_SIZE\n",
+ " _, _, terminated, _ = environment_2020.step(action)\n",
+ "UBAH_results[\"2020\"][\"value\"] = environment_2020._asset_memory[\"final\"]\n",
+ "\n",
+ "# 2021\n",
+ "terminated = False\n",
+ "environment_2021.reset()\n",
+ "while not terminated:\n",
+ " action = [0] + [1/PORTFOLIO_SIZE] * PORTFOLIO_SIZE\n",
+ " _, _, terminated, _ = environment_2021.step(action)\n",
+ "UBAH_results[\"2021\"][\"value\"] = environment_2021._asset_memory[\"final\"]\n",
+ "\n",
+ "# 2022\n",
+ "terminated = False\n",
+ "environment_2022.reset()\n",
+ "while not terminated:\n",
+ " action = [0] + [1/PORTFOLIO_SIZE] * PORTFOLIO_SIZE\n",
+ " _, _, terminated, _ = environment_2022.step(action)\n",
+ "UBAH_results[\"2022\"][\"value\"] = environment_2022._asset_memory[\"final\"]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "kBMM7hAHC6rq"
+ },
+ "source": [
+ "### Plot graphics"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 145,
+ "metadata": {
+ "id": "n8YrDNpeC71w"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAIsCAYAAAAeUFNGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAADMKklEQVR4nOzdd3gU1foH8O9sy6b3kEBoV0poIhKVjpQI0lUEu6KCFy/ixd7F8tOLiteuXLuCFQFpUsWCFBXEAtJrQkJIr1tnfn9sdrKzJdlsdrOb5Pt5Hh93zsycOQlL2DfvOe8RJEmSQERERERERI2iCvYAiIiIiIiIWgIGV0RERERERH7A4IqIiIiIiMgPGFwRERERERH5AYMrIiIiIiIiP2BwRURERERE5AcMroiIiIiIiPyAwRUREREREZEfMLgiIiIiIiLyAwZXREQ+mD9/PjIzMxX/XXDBBRg6dCiuueYafPrppxBF0a/PPHz4MG688UYMGjQIo0ePRmFhoV/7bw1+/fVXZGZmYunSpX7rs7i4GBUVFX7r7/Tp08jMzMSrr77a4HtnzZqFMWPG+G0soWbVqlXIzMzEtm3b/NZnZmYmHnzwQb/1R0StmybYAyAias7uuusuxMXFAQAkSUJ1dTW2bNmChQsX4vTp07j77rv99qwnnngCR48exaxZsxATE4PExES/9d1adO7cGU8++SR69+7tl/5++uknPProo3jvvfcQFRXllz7j4+Px5JNP4pxzzmnwvTfffDMqKyv9Mo5Q1K9fPzz55JPo1q1bsIdCROQWgysioka4+OKL0bZtW0XbZZddhptvvhlffPEFbrzxRiQlJfnlWYcOHcKFF16Im266yS/9tUaJiYkYN26c3/r766+/UFZW5rf+ACA8PNznMQ4YMMCvYwk16enpSE9PD/YwiIg84rRAIiI/U6vVyMrKgtVqxZ9//um3fi0WCyIjI/3WHxEREfkXgysiogBQqWw/Xi0Wi9x2/Phx3H///Rg5ciQGDx6M66+/Hhs3blTct2jRImRmZmLr1q0YN24chgwZgnfffReZmZkAgI0bNyIzMxOLFi0CAIiiiE8//RTTpk3DwIEDkZWVhUcffRS5ubmKfidOnIjHH38cCxYswODBgzFmzBgcO3YM8+fPx5QpU7B3717MnDkTgwcPxqWXXooPPvgAkiTh888/x+TJkzF06FDcfPPN2L9/v6LfnJwcPPnkkxg/fjwGDBiA4cOH45///Cd2796tuM4+5i+//BKXX345Bg4ciMsvvxxffvmly/du//79uOuuuzBq1ChcfPHFmDVrFnbt2qW45uzZs3jiiSdwySWXYODAgZg2bRq++OKLev9cnNdc2dc3rVixAu+88w4mTJiAQYMG4eqrr8amTZvq7Gv+/Pl4++23AQBTp07FrFmz5PaJEyfi66+/xqhRozB8+HCsXr0aAHDw4EE8+OCDGDNmDC666CKMGjUK8+bNw+HDh+V+3a258vb757zmyj6WgwcP4vbbb8eQIUMwcuRIPPHEEygpKVHcW1hYKH9Phw4dinvuuQe///47MjMzsWrVqjq/F5mZmXjjjTewePFijB8/HkOGDMEtt9yCX3/91eXav/76C3PnzsXw4cMxZMgQzJo1Cz///LPL99bd99Ddmiuj0YhFixZhypQpGDBgAC699FIsWLDA5esTRREffPABpkyZgsGDB2PGjBn466+/6vy6iIgaitMCiYgCYOfOnQCAjIwMAMCRI0dwyy23ICYmBtdffz3Cw8OxZcsWPPjgg8jPz8e1116ruP/xxx/H1VdfDY1GI68zeeyxx9CnTx9ceeWV6Nq1KwDgsccew7p16zB48GBMnToVeXl5+PLLL7Fjxw588MEHaNeundznt99+i7Zt2+Kuu+5CTk4OOnXqBAAoKSnBnDlzMH78eIwZMwZff/01XnvtNezevRvHjx/HtGnTYDKZ8P777+O+++7DV199Ba1Wi+LiYtx0003QarW44oorkJiYiBMnTmDZsmW44447sHz5cqSkpMjPX716NUwmE6688krExMRg6dKlWLBgAdLS0jBkyBAAwO+//47bb78d0dHRuPrqqxETE4OvvvoKc+bMwZtvvonzzjsPBQUFuOmmm2AymTB16lQkJCRgx44deO6553Dy5Encc889Df7zevfdd6FWqzF9+nSoVCp88sknePDBB9GpUyd06dLF7T2XX345KisrsWXLFsydO1exDqioqAivvfYaZsyYgYqKCpx33nk4evQobr75ZqSmpuK6665DVFQUDh48iBUrVmDv3r1YuXIl9Hq9xzF68/1zp6ysDLNnz8awYcNw1113Yc+ePVi1ahWqq6vxn//8BwBQVVWFmTNnIi8vD9OnT0ebNm2wdu1a3HXXXV5/D9eu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1yguLgZgq+oXLNdeey3Wrl2LuXPnyqXYN2/ejL179wLwbkqiRqPBrFmzcNVVV0GlUuHLL7+EJElyOXeNRoP77rsPDzzwAK699lpcdtlliIqKwpo1a3Dw4EHccccd8vfTW5MnT8Y333yDN998E8ePH0ffvn1x9OhRLFu2DO3atZMrbqanp+PGG2/Ee++9hzlz5mD48OE4dOgQ1q9f3+BsGRFRXRhcNVJFRQV2797tdq8M+2807T+4e/furTjfq1cv/PDDDzh9+rTHUr9E1DL07t0b77//Pv73v//h888/h9FoRHp6Ou655x5ceeWVPvf79NNPIyMjA6tWrcJ///tfxMTEYNSoUbjtttsUleUCYdasWRBFEevXr8fOnTuRmJiIPn36YOHChbjlllvw888/Y8aMGQ3q87zzzsP//vc/LFq0CO+99x40Gg169eqFJ554Qq7gl56ejg8//BBvvfUW1qxZg4qKCqSmpuK2227D9ddf36RTrceMGYNvv/0W33zzDX7//fc6g6sHHngAERER+PHHH7FhwwYkJydj4MCBuP7663HllVfi559/VpSub0pRUVH43//+h5deegnLli2D1WrFwIEDcf/99+PJJ59UrN3zZNiwYcjIyMAnn3wCg8GA8847D3PmzFGUxR8xYgTeeOMNvPvuu/jwww8hSRI6deqEJ598Ut5ioCG0Wi1ef/11vPvuu9iwYQM2bdqExMRETJ06FTNnzkRsbKx87e23346UlBR89tlneOmll9CpUycsXLhQrupJROQPgsR8uNcOHDiAF198Ef/+97/l0sN33303unfv7lLm1q5Tp0747rvv8Omnn+Lhhx9WrAXYtWsX/ve//7m0ExERNaWSkhJER0e7FDbZsGEDHnroIbz55pt1bg+QmZmJrKwsPPvss4EeKhFRSOOaq0bq1q0bcnNz0b59e3Tq1En+7/vvv8evv/4KwJahEgQBv/zyi+LeP/74AxEREfVWGiMiIgqkV155BSNGjHCZmrhx40ao1Wp07949SCMjImpeOC2wkcaPH48FCxbg1VdfxcUXXwydTodt27bhl19+wU033QTAVhb44osvxsaNG6HRaNCtWzd5wfmVV14Z0AXnRERE9bn00kuxatUqzJo1CxMnToRGo8H27dvx/fffY+bMmYiJiQn2EImImgV+qm+k9PR03Hvvvfj666/x/vvvQ5IkpKWlYdasWejfv7983bRp0xAfH4+tW7diw4YNSExMxLXXXouhQ4cGcfRERETABRdcgFdffRUffPAB3n77bZhMJnTq1AmPPfYYJk2aFOzhERE1G1xzRURERERE5Adcc0VEREREROQHDK6IiIiIiIj8gMEVERERERGRHzC4agasVmuwh0DE9yEFHd+DFGx8D1Io4PswtDG4agbOnj0b7CEQ8X1IQcf3IAUb34MUCvg+DG0MroiIiIiIiPyAwRUREREREZEfMLgiIiIiIiLyAwZXREREREREfsDgioiIiIiIyA8YXBEREREREfmBJtgDaAmsVivMZnPA+jebzTAYDAHrn5ofrVYLtVod7GEQERERkQMGV40gSRLy8vJQUlIS0OdYrVZUVFQE9BnU/MTFxSE1NRWCIAR7KEREREQEBleNYg+sUlJSEBEREbAPuWazGVqtNiB9U/MjSRKqqqqQn58PAEhLSwvyiIiIiIgIYHDlM6vVKgdWiYmJAX2WWq1mcEUK4eHhAID8/HykpKRwiiARERFRCGBBCx/Z11hFREQEeSTUWtnfe4Fc70dERERE3mNw1Uhc70LBwvceERERUWhhcEVEREREROQHDK7IxaxZs5CZman4b/jw4bj55pvx3XffBXt4fnHq1ClkZmZi1apVHq9ZtWoVMjMzcerUKbfn33jjDWRmZjboub/++isyMzOxc+fOOq8bN24c5s+f36C+iYiIiCi4WNCC3OratSseeughALbiHWVlZfjmm29w77334rXXXsNFF10U5BESEREREYUWBlfkVkREBPr06aNoGzJkCP744w8sW7aMwRURERERkRNOCySvqVQqREZGKgopzJo1C7fccoviup07dyIzMxO//vorSktLMWjQILz88suKaywWC7KyslzaHe3evRtz5szBiBEjMGDAAEyaNAmLFi2C1WqVr8nMzMTSpUvx7LPPYtSoURg8eDDmzp2LkydPKvratGkTrrrqKgwePBjXXXcdDh061JhvhUd///035s6di1GjRmH48OH497//jcOHD9d5z4EDB3D77bdj6NChmDhxItavXx+QsRERERFRYDG48jNJkmAwWvz7n8m3+yRJatTXYrFY5P+Ki4uxePFinDhxAlOnTvW6j9jYWFx88cVYt26dIijaunUriouLMWnSJLf3HTx4ELNnz0ZsbCyeffZZ/Pe//8V5552Ht99+2yX4eO2111BZWYmnn34aDz30EPbu3YtHH31UPv/999/jwQcfRJcuXfDCCy9g9OjRePzxx73+GqxWq+J7Yf/P+fv766+/YsaMGbBYLHj00Ufx6KOPIj8/HzfffDOOHj3qtu/8/HzMmjUL5eXleOqpp3Dbbbfh5ZdfRmFhodfjIyIiIqLQwGmBfiRJEu5/bSv+Pl4U7KEAAHp0SsCCOUN8Ktn9+++/Y8CAAS7tV199Nfr379+gviZPnowNGzbg559/xsCBAwEAa9asQZ8+fdC5c2e39xw6dAgXXnghnnrqKahUtt8BXHTRRfjhhx+wa9cujBs3Tr62U6dOePrpp+Xj06dPY9GiRSgsLERiYiLeffddZGRkyNfYx/Daa695NX5vg8lXX30V7dq1w6uvvipv6nvRRRdhypQpePPNN/H888+73PPpp5/CYrHg5ZdfRkJCAgCgY8eOmDFjhlfPJCIiopbJUlaIgm8WIeaCcYj4x3nBHg55KeSCqx9//BGbN29GQUEBEhISMHz4cIwcObLOAGHevHmoqqpyaX/uuecQGxsbyOG2WN26dcMjjzwCwBY0lpeX46effsJnn30GjUaDO++80+u+LrzwQrRt2xZr1qzBwIEDUVJSgq1bt+Lee+/1eM/48eMxfvx4GI1GnDx5EqdOncKBAwdgtVphMpkU15577rmK45SUFABAdXU1DAYD/v77b8ycOVNxzahRo7wOrl544QW5T0dLly7FypUr5Wft27cPN998sxxYAUB0dDSGDh2KH374wW3fv/32G3r37i0HVgDQp08ft88jIiKi1uPM8oUwZh9A1eHd+MfDS4M9HPJSSAVXW7Zsweeff46xY8ciIyMDR48exdKlS2EwGDB+/Hi39xQUFKCqqgrTp09Hp06dFOeioqKaYNS1BEHAgjlDYDRZ67+4AcwWM7QabYPvC9Opfd5oNjw8HD179lS0DRgwANXV1fjkk09w3XXXITEx0au+BEHAxIkT8cEHH6CyshLr1q2DWq3GJZdc4vEeg8GA559/HmvXroXFYkHbtm1x7rnnQqNxfcvq9XrFsT3TZQ8KJUlCXFyc4pqkpCSvxg4A55xzDtq3b+/S7tiH/TnuvieJiYmoqKhw23dZWRm6du1aZ99ERETU+hizD9S8atwyD2paIRNciaKIdevW4cILL8SUKVMAABkZGcjPz8e3337rMbjKzs4GAPTv3z8kslSCIEAf5t9vq1olQasNjT+qHj16YMWKFcjNzUViYiIEQYAoioprqqurXe6bOHEi3n77bfz444/YuHEjRo4cWWfwu3DhQmzatAnPPPMMBgwYgPDwcABAVlZWg8YbExMDlUqFoiLlVM2SkpIG9VOf6OhoCILgdq1UQUGBx/dmXFycy9gCMT4iIiIiCryQKWghCALuvPNOObCyU6vVsFgsHu87deoUoqOjQyKwag327t0LtVqNdu3aAQAiIyORn5+vuOb33393uS81NRUXXXQRvvrqK/z5558eC1nY7dmzB+effz5GjBghB1Z///03iouLXYK5uoSFheHcc8/Ft99+q7jP0zQ9X4WHh6NHjx7YtGmTonBHRUUFtm7divPOO8/tfRdccAH++usv5OXlyW2HDh1Cbm6uX8dHRERERIEXGukQ2IKrtm3bArBN56qqqsJvv/2GHTt2YOTIkR7vO3XqFMLDw/HGG2/gwIEDkCQJffr0wbRp0xhwNUJVVRX+/PNP+dhsNuP777/HypUrcdlllyE+Ph4A5PVECxcuxPDhw7Fnzx588803bvucPHkyHnjgAbRr167eohi9evXCxo0bsXTpUnTu3BmHDh3Cu+++C0EQ3GbG6jJ79mzcfvvtuOeee3DFFVfgxIkTeO+99xrUhzfmzJmDO+64A3fccQemT58Os9mMDz74AAaDAbNmzXJ7z9VXX40VK1Zg7ty5uO2222C1WvH6669Dp9P5fXxEREREFFghE1w5OnToEBYuXAgA6NChQ51TwbKzs1FRUYEhQ4YgKysLubm5WLVqFV544QU8/PDDLutxyDuHDh1SVKwLCwtDu3btcPvtt+OGG26Q2ydNmoTs7GysXr0ay5YtQ2ZmJp599lmXAhIAMHjwYKhUKkycOLHetWDz5s2DxWLBm2++CbPZjLZt2+KWW27BkSNH8P3338Nisbhdf+VO//798fLLL+ONN97Afffdh3bt2uGxxx7DXXfd5eV3wzsXXnghXn/9dfzvf//DQw89BK1Wi379+mH+/Pno0qWL23vi4uLwzjvvYOHChXjiiScQERGBm266CWvWrPHr2IiIiIgo8ASpsZshBUBxcTHOnj2L4uJirF69GmazGQ899BBiYmJcrj18+DD0ej3S09MVbc8//zyuuuoqjBgxwqcx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",
+ "text/plain": [
+ "