{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Stochastic linear program (SLP) to take into account uncertainty\n", "\n", "In this sample we illustrate the usage of SLP for energy portfolios. Our demonstration implements a two-stage problem for a simple portfolio. It may be extended to any portfolio." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Some prerequisites\n", "### Basics" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import datetime as dt\n", "from copy import deepcopy\n", "import eaopack as eao\n", "import matplotlib.pyplot as plt\n", "np.random.seed(123)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameter setting\n", "Defining timegrid and main portfolio settings as well as settings for SLP. Note that we do not explain the setup in detail. Please refer to the basic samples to understand the concepts and parameters\n", "\n", "For the SLP part we define the number of samples to be used. Using the parameter 'sigma' we can adjust uncertainty in price samples. The parameter 'start_future' defines the transition between the two stages of the SLP - present and future. In the two-stage setup we determine the optimal steps in the present given an uncertain future" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "Start = dt.date(2021,1,1)\n", "End = dt.date(2021,1,5)\n", "start_future = Start+dt.timedelta(days=2)\n", "n_samples = 200\n", "sigma = .5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set up portfolio\n", "(1) defining the assets of the portfolio (here a battery and a market with uncertain prices)\n", "(2) definition of how prices are sampled" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "node = eao.assets.Node('home')\n", "timegrid = eao.assets.Timegrid(Start, End, freq = 'h')\n", "battery = eao.assets.Storage(name='battery', nodes=node, cap_in= 1, cap_out=1, start_level= 24, end_level=24, size= 96)\n", "market = eao.assets.SimpleContract(name = 'market', nodes = node, min_cap= -10, max_cap= 10, price = 'spot')\n", "\n", "def get_price(start, end, name = 'spot', n_samples = 1, sigma = 0.2, start_future = None, last_sample = None):\n", " dates = pd.date_range(start, end, freq ='h')\n", " prices = []\n", " n = len(dates)\n", " if not start_future is None:\n", " Ip = (dates <= pd.Timestamp(start_future))\n", " else:\n", " Ip = (dates <= dates.max())\n", " means = 2+.5*np.sin(4.+np.linspace(0.,10., n)) \n", " if last_sample is not None:\n", " means[Ip] = last_sample[Ip]\n", " for iS in range(0,n_samples):\n", " process = np.zeros(n)\n", " for i,pres in enumerate(Ip):\n", " if not pres:\n", " process[i] = process[i-1] + np.random.randn(1)*sigma \n", " prices.append({'start' : dates.values, 'values': means + process})\n", " return prices" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\2383451886.py:21: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n", " process[i] = process[i-1] + np.random.randn(1)*sigma\n" ] } ], "source": [ "# define mean price\n", "mean_price = get_price(Start, End, sigma = 0.0)[0]\n", "# standard format needs to be cast onto timegrid\n", "mean_price_grid = {'spot' :timegrid.values_to_grid(mean_price)}\n", "\n", "# create price samples for future (past included, but irrelevant)\n", "# Note: May want to implement possibility to give only future prices\n", "sample_prices = get_price(Start, End, n_samples=n_samples, sigma = sigma, start_future = start_future)\n", "sample_prices_grid = []\n", "for mys in sample_prices:\n", " sample_prices_grid.append( {'spot' :timegrid.values_to_grid(mys)} )\n", "\n", "\n", "portf = eao.portfolio.Portfolio([battery, market])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Perform the optimization\n", "For comparison we perform a deterministic optimization on the 'mean price' and an SLP on given samples for the future" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "op = portf.setup_optim_problem(mean_price_grid, timegrid)\n", "res_hard = op.optimize()\n", "op_slp = eao.stoch_lin_prog.make_slp(portf = portf, \n", " optim_problem= deepcopy(op),\n", " timegrid=timegrid,\n", " start_future = start_future, \n", " samples = sample_prices_grid)\n", "res_slp = op_slp.optimize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create charts and interpret the results" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n", "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\1060397432.py:12: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot']\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAGGCAYAAAAAW6PhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdB3gT9RsH8G/TNk33HtCWUvbee29kyVAEBVkCThyoKIog7i36V0FBWSooKg72Etl7770KnXSvpEn/z++uSVu6krZp0vT7eZ7Y9nK5XGtLcu+9933tsrOzs0FEREREREREREREVkFh6R0gIiIiIiIiIiIiolws2hIRERERERERERFZERZtiYiIiIiIiIiIiKwIi7ZEREREREREREREVoRFWyIiIiIiIiIiIiIrwqItERERERERERERkRVh0ZaIiIiIiIiIiIjIirBoS0RERERERERERGRFHFAF6XQ63L59G+7u7rCzs7P07hARERGRGWRnZyM5ORnVq1eHQlE5ehX4PpWIiIjIthn7HrVKFm3FG+HQ0FBL7wYRERERVYCbN28iJCQElQHfpxIRERFVDSW9R62SRVvRuaD/4Xh4eFh6d4iIKlZqKlC9uvz57duAq6ul94iIyCySkpKkAqj+vV9lwPepRFRl8T0qEVURSUa+R62SRVv9pWbijTDfDBNRlWNvn/u5+DeQb4iJyMZVppgBvk8loiqL71GJqIqxK+E9auUI9yIiIiIiIiIiIiKqIli0JSIiIiIiIiIiIrIiLNoSERERERERERERWREWbYmIiIiIiIiIiIisCIu2RERERERERERERFaERVsiIiIiIiIiIiIiK8KiLREREREREREREVFVKdru2LEDQ4YMQfXq1WFnZ4c///yzxMds374drVq1gpOTE+rUqYMlS5YUWOfrr79GzZo1oVKp0L59exw4cMBM3wERERERERERERGRDRVtU1NT0bx5c6nIaoyrV69i0KBB6NmzJ44dO4bnn38ekydPxsaNGw3r/PLLL5g+fTrmzJmDI0eOSNvv378/oqOjzfidEBEREREREREREVUMu+zs7OwKeSI7O6xevRrDhg0rcp1XXnkFa9euxalTpwzLRo8ejYSEBGzYsEH6WnTWtm3bFl999ZX0tU6nQ2hoKKZNm4ZXX33VqH1JSkqCp6cnEhMT4eHhUebvjYioUklN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93GJEiXUnzdv3izgsyUiIiIiR8A1KhERERE5dKdtz549UbZsWcydOxclS5ZUW86keyEpKcngODc3N93Hkh8mMm5PIyIiIiKyBK5RiYiIiMhhi7Z37tzByZMn1WK4VatW6rqtW7da+7SIiIiIyIFxjUpEREREDl20LVq0qJrGO2fOHLWdTLabTZw40dqnRUREREQOjGtUIiIiInLITFvZMubq6qqm8C5evBj79u1T283GjRuHDz74wNqnR0REREQOiGtUIiIiIjKVU3p6ejrsTJcuXVCxYkV88cUX1j4VIiIiIiKFa1QiIiIicshO27t37+LPP//Epk2b0LFjR2ufDhERERER16hERERE5NiZtk8++ST27NmDCRMmoHfv3tY+HSIiIiIirlGJiIiIyGx2GY9AREREREREREREZKvsKh6BiIiIiIiIiIiIyNaxaEtERERERERERERUiNhs0XbmzJlo1KgRihQpgpCQEPTp0wcnT540OCYhIQHPP/88goKC4Ovri/79++PGjRu6r//3338YMmQIwsLC4OXlhWrVquHTTz81uI9r165h6NChqFy5MpydnfHSSy8V2PdIRERERLaFa1QiIiIicuii7ebNm9Vid+fOnVi3bh2Sk5PRqVMnxMXF6Y4ZN24cVq5ciSVLlqjjIyIi0K9fP93X9+3bpxbTCxYswNGjR/HGG29g0qRJ+OKLL3THJCYmIjg4GJMnT0adOnUK/PskIiIiItvBNSoRERERWYLdDCK7deuWWtzKwrd169aIjo5WC9lFixZhwIAB6pgTJ06oToUdO3agadOmRu9HFtnHjx/Hhg0bMn2tbdu2qFu3LmbNmpXv3w8RERER2T6uUYmIiIjIoTptM5IFsAgMDNR1KEhnQ8eOHXXHVK1aFWXKlFEL4uzuR3sfRERERER5wTUqEREREeWGK+xAWlqayvFq0aIFatasqa67fv063N3dERAQYHBs8eLF1deM2b59O3755ResWrWqQM6biIiIiOwX16hERERE5NBFW9kuduTIEWzdujXX9yG37927N9566y2VO0ZERERElBdcoxIRERGRw8YjjBkzBn/++Sc2btyI0qVL664PDQ1FUlISoqKiDI6XybzyNX3Hjh1Dhw4dMHr0aDXMgYiIiIgoL7hGJSIiIiKHLNrK/DRZDC9btkwNZChfvrzB1xs0aAA3NzesX79ed93Jkydx6dIlNGvWTHedTORt164dhg8fjnfeeadAvwciIiIisi9coxIRERGRQ8cjyHYzmbr7xx9/oEiRIroMMH9/f3h5eak/n3rqKYwfP14NbfDz88MLL7ygFsPaqbyy3ax9+/bo3LmzOk57Hy4uLmqqr9bBgwfVn7GxsWoCsHwuWWTVq1e3yvdORERERIUT16hEREREZAlO6dIOYIOcnJyMXv/DDz9gxIgR6uOEhARMmDABP//8MxITE9XC96uvvtJtPZs6dSqmTZuW6T7Kli2LCxcuZPtYGY8hIiIiIuIalYiIiIgcumhLREREREREREREZI9sNtOWiIiIiIiIiIiIyB6xaEtERERERERERERUiLBoS0RERERERERERFSIsGhLREREREREREREVIiwaEtERERERERERERUiLBoS0RERERERERERFSIsGhLREREREREREREVIiwaEtERERERERERERUiLBoS0RERERERERERFSIsGhLREREREREREREVIiwaEtERERERERERERUiLBoS0RERERERERERITC4/8B9Hu+XvaV7JUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "### check and illustrate results\n", "out_hard = eao.io.extract_output(portf, op, res_hard)\n", "out_slp = eao.io.extract_output(portf, op_slp, res_slp)\n", "\n", "collect = pd.DataFrame()\n", "collect['deterministic'] = out_hard['dispatch']['battery']\n", "collect['slp (future: mean)'] = out_slp['dispatch']['battery']\n", "collect['start price'] = mean_price_grid['spot']\n", "timegrid.set_restricted_grid(end = start_future)\n", "for i, ts in enumerate(sample_prices_grid):\n", " ts['spot'][timegrid.restricted.I] = mean_price_grid['spot'][timegrid.restricted.I]\n", " collect['sample '+'{:1.0f}'.format(i)] = ts['spot'] \n", "\n", "fig, ax = plt.subplots(1,2, tight_layout = True, figsize=(14,4))\n", "collect[['deterministic','slp (future: mean)']].plot(ax = ax[0])\n", "collect[['start price', 'sample 1', 'sample 2', 'sample 3', 'sample 4']].plot(ax = ax[1], style = ':')\n", "ax[0].axvline(x = start_future, c = 'r')\n", "ax[1].axvline(x = start_future, c = 'r')\n", "ax[0].legend(loc = 'lower left')\n", "ax[1].legend(loc = 'lower left')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interpretation\n", "\n", "The red line indicates the start of the uncertain future (Jan 3). While for the pending decision (stage 1) prices are certain, for the future (stage 2) we have five price samples that encode the uncertainty. Solutions in this example are relatively similar -- but note that the deterministic optimization charges the storage maximally until Jan 03 as future prices are higher than present prices. Since uncertainty is high, the SLP solution starts discharching earlier, as future prices may be higher today but are uncertain. \n", "\n", "### Two-stage vs. multi-stage problem: \n", "\n", "In our implementation we provide a formulation of a two-stage SLP generically for any portfolio structure. For the two-stage case problems can typically be handled and often already provide a good appoximation. For the multi-stage case we believe that it will be necessary to resort to numerical approximations, strategies that are specific to the given portfolio or others such as methods from machine learning. Providing a solution to the SLP for a relevant problem class could be a valuable research thread for further work." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Backtesting: SLP vs. hard optimization\n", "\n", "We're backtesting the decisions of the hard and SLP decision by sampling over future price outcomes. Naturally, this backtest is more of an illustration for this specific example." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Anwender\\AppData\\Local\\Temp\\ipykernel_21864\\2383451886.py:21: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n", " process[i] = process[i-1] + np.random.randn(1)*sigma\n" ] } ], "source": [ "n_test = 1000 # number of samples for backtesting\n", "# decisions to fix (hard and SLP)\n", "fix_slp = {'I': start_future, 'x': res_slp.x}\n", "fix_hard = {'I': start_future, 'x': res_hard.x}\n", "# draw random prices and perform optimization for future\n", "sample_prices = get_price(Start, End, n_samples=n_test, sigma = sigma, start_future = start_future)\n", "values_slp = []\n", "values_hard = []\n", "for mys in sample_prices:\n", " my_price = {'spot' :timegrid.values_to_grid(mys)} \n", " op_test_hard = portf.setup_optim_problem(my_price, timegrid, fix_time_window=fix_hard)\n", " op_test_slp = portf.setup_optim_problem(my_price, timegrid, fix_time_window=fix_slp) \n", " res_test_hard = op_test_hard.optimize()\n", " res_test_slp = op_test_slp.optimize() \n", " values_slp.append(res_test_slp.value)\n", " values_hard.append(res_test_hard.value)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean portfolio value hard optimization: 67.53\n", "Mean portfolio value SLP optimization: 68.01\n", "Variance portfolio value hard optimization: 605.14\n", "Variance portfolio value SLP optimization: 497.74\n" ] } ], "source": [ "print('Mean portfolio value hard optimization: '+'{:2.2f}'.format(np.asarray(values_hard).mean()))\n", "print('Mean portfolio value SLP optimization: '+'{:2.2f}'.format(np.asarray(values_slp).mean()))\n", "\n", "print('Variance portfolio value hard optimization: '+'{:2.2f}'.format(np.asarray(values_hard).var()))\n", "print('Variance portfolio value SLP optimization: '+'{:2.2f}'.format(np.asarray(values_slp).var()))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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74EyZcqYcx5++GE5dOiQ2zWo17z9m3X1+OOPm3N02npX1G3e6nXHjh1y9913mzUL9N/uTTfdJPv373ce5z7hyus1OTnZTFZUvXp18zv2+uuvl2nTprmdU5TqlWBRDG3YsEHefvttadKkidv+QYMGycKFC2XevHmyevVq80ewa9euXiunr/jzzz/lb3/7m5QoUUK++eYb2b59u7z++utSrlw55zmvvvqqvPHGG+aXyfr1680v7NjYWPPLBFkbN26cvPXWW/Lmm2+aP3b6WOsxPj7eeQ71enm6RlDTpk1lypQpWR7PTR3qDdq2bdtk2bJlsmjRIvOHtG/fvlKc5VSv586dk59++skEY/36xRdfyK5du8wNmyvqNW//Zh3mz58v69aty3I1YOr2yut179690qJFC2nQoIGsWrVKtmzZYv4NlyxZ0nkO9wlXXq+DBw82Syp89NFH5m+ZfqCrQeOrr74qmvWqs0Kh+Dh79qxVv359a9myZVbLli2tp59+2uw/ffq0VaJECWvevHnOc3fs2KEfDVsJCQleLHHh9+yzz1otWrTI9nh6erpVtWpV67XXXnPu0/oODg62Pv744wIqpe/p2LGj9dhjj7nt69q1q9WrVy/zPfV65fT/5/nz5zsf56YOt2/fbp63YcMG5znffPON5efnZ/33v/8t4HfgG/WalR9//NGc98cff5jH1Ku9uj148KB19dVXW1u3brVq1aplTZw40XmMus1bvXbv3t168MEHs30O9wl5q9eGDRtao0aNctt34403Wi+88EKRrFdaLIoZbWrr2LGj6e7gatOmTab53nW/fmpRs2ZNSUhI8EJJfYd+6qCryN93331SuXJlueGGG+Sdd95xHk9MTDQLQbrWrTYzR0VFUbc5uPXWW2X58uXy22+/mce//PKLrF27Vtq3b28eU6/25aYO9at2JdF/4w56vr+/v2nhQO6cOXPGdJPQulTUa96lp6fLQw89JP/617+kYcOGmY5Tt3mr08WLF8u1115rWiz1b5n+HnDt1sN9Qt7/ln311Vemy7Rmj5UrV5q/a3feeWeRrFeCRTEyd+5c0yw/ZsyYTMf05iIoKMj5R89BV0PXY8je77//brrs1K9fX5YuXSr9+vWTp556Sj744ANz3FF/GVeWp25z9txzz0mPHj3ML1jtZqaBTZuQtYuDol7ty00d6le9yXAV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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2,1, tight_layout = True, figsize=(8,4), sharex = 'col')\n", "ax[0].hist(np.asarray(values_hard), bins = 20)\n", "ax[1].hist(np.asarray(values_slp), bins = 20)\n", "ax[0].set_title('hard optimization')\n", "ax[1].set_xlabel('portfolio value')\n", "ax[1].set_title('SLP optimization')\n", "ax[0].axvline(x = np.asarray(values_hard).mean(), c = 'r', label = 'mean')\n", "ax[1].axvline(x = np.asarray(values_slp).mean(), c = 'r')\n", "ax[0].legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The comparison shows only relatively small differences in the value. However, this was to be expected, since hard and SLP decisions only differed in a small timeframe for the immediate future. Variances differ more significantly, as also the histograms show." ] } ], "metadata": { "kernelspec": { "display_name": "my_env", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 2 }