{
"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
}