{ "cells": [ { "cell_type": "markdown", "id": "6a3770a2", "metadata": {}, "source": [ "# Green PPA Pricing - Expected Value" ] }, { "cell_type": "code", "execution_count": 6, "id": "c2d0f955", "metadata": { "ExecuteTime": { "end_time": "2023-06-16T08:35:18.182289Z", "start_time": "2023-06-16T08:35:17.417889Z" } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "import sys\n", "import datetime as dt\n", "sys.path.append('../../../..')\n", "import pandas as pd\n", "import numpy as np\n", "import json\n", "import matplotlib.pyplot as plt\n", "import logging\n", "logger = logging.getLogger('rivapy.pricing')\n", "logger.setLevel(logging.DEBUG)\n", "\n", "from rivapy.instruments import SimpleSchedule, GreenPPASpecification\n", "from rivapy.marketdata import PowerPriceForwardCurve\n", "import rivapy.sample_data.residual_demand_models as rdm_sample\n", "from rivapy.pricing.pricing_request import GreenPPAPricingRequest\n", "from rivapy.pricing import green_ppa_mean_pricer\n", "\n", "from IPython.display import display, HTML\n", "display(HTML(\"\"))\n", "\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "2eacff24", "metadata": {}, "source": [ "## Green PPA Specification" ] }, { "cell_type": "code", "execution_count": 37, "id": "ca679b34", "metadata": { "ExecuteTime": { "end_time": "2023-06-16T12:47:19.274633Z", "start_time": "2023-06-16T12:47:18.535730Z" } }, "outputs": [], "source": [ "simple_schedule = SimpleSchedule(dt.datetime(2022,12,1), dt.datetime(2023,12,1,4,0,0), freq='1H')\n", "green_ppa = GreenPPASpecification(simple_schedule, \n", " fixed_price = 10.0, \n", " max_capacity=10, \n", " technology = 'wind', \n", " udl = 'power',\n", " location='')" ] }, { "cell_type": "code", "execution_count": 41, "id": "0315764f", "metadata": { "ExecuteTime": { "end_time": "2023-06-16T12:47:31.411336Z", "start_time": "2023-06-16T12:47:31.387602Z" } }, "outputs": [], "source": [ "pr = GreenPPAPricingRequest(theo_val=True, cf_expected=True, cf_paths=True)\n", "rd_model = rdm_sample.WagnerModel.residual_demand_model(capacity_wind=25, capacity_solar=20)" ] }, { "cell_type": "code", "execution_count": 42, "id": "d4ed5552", "metadata": { "ExecuteTime": { "end_time": "2023-06-16T12:47:33.215775Z", "start_time": "2023-06-16T12:47:32.219539Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/doeltz/doeltz/development/RiVaPy/rivapy/tools/datetime_grid.py:24: FutureWarning: Argument `closed` is deprecated in favor of `inclusive`.\n", " self.dates = pd.date_range(start, end, freq=freq, tz=tz, closed=closed).to_pydatetime()\n" ] } ], "source": [ "results = green_ppa_mean_pricer.price(dt.datetime(2022,12,1), green_ppa, rd_model, pr, n_sims=10, seed=42)" ] }, { "cell_type": "code", "execution_count": 43, "id": "b755b16a", "metadata": { "ExecuteTime": { "end_time": "2023-06-16T12:47:33.239924Z", "start_time": "2023-06-16T12:47:33.216689Z" } }, "outputs": [ { "data": { "text/plain": [ "{'theo_val': 106.33955937000052,\n", " 'cf_expected': array([88.65277778, 73.38856324, 81.46445778, ..., 35.01461317,\n", " 16.81824448, 35.65894031]),\n", " 'cf_paths': array([[ 88.65277778, 88.65277778, 88.65277778, ..., 88.65277778,\n", " 88.65277778, 88.65277778],\n", " [120.59769197, 73.59260888, 85.56582072, ..., 56.00689862,\n", " 124.17623418, 70.07224311],\n", " [150.66679196, 55.10256533, 27.52760532, ..., -50.1915637 ,\n", " 153.27188838, 117.63575482],\n", " ...,\n", " [ 41.34946064, 80.04721905, 89.40655705, ..., 144.98860263,\n", " 52.47875851, 31.48219098],\n", " [ 41.83472586, 82.56825408, 91.22650758, ..., 150.22908045,\n", " 42.48726577, 27.08113649],\n", " [ 44.12449773, 52.31010233, 117.90576107, ..., 101.5151421 ,\n", " 36.99336384, 30.78853215]])}" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "code", "execution_count": null, "id": "6f3a5502", "metadata": {}, "outputs": [], "source": [ "values = np.ones((len(simple_schedule.get_schedule()),))\n", "hpfc = PowerPriceForwardCurve( dt.datetime(2022,12,1), dt.datetime(2022,12,1), \n", " dt.datetime(2023,12,1,4,0,0), freq='1H', values = values)" ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "164.988px" }, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 5 }