{% extends "base.html" %} {% set active_page = "portfolio" %} {% block title %} Portfolio overview {% endblock %} {% block divs %}

About

This page shows you how your portfolio of assets is doing in terms of energy (production & consumption) and flexibility. Highlighted time slots require your attention, as upcoming balancing opportunities have been identified.

{% if documentation_exists %}

Need help understanding this page? Check out the documentation.

{% endif %}

Controls

{% block datetimepicker %} {{ super() }} {% endblock %} {% if asset_types | length > 0 %}

Energy summary

{% for asset_type_name in asset_types %} {% endfor %} {% if asset_types | length > 1 %} {% endif %}
Production Consumption
MWh MWh
{{ asset_type_name | capitalize }} {% if asset_types[asset_type_name].is_producer and production_per_asset_type[asset_type_name] > 0 %} {{ "{:,.3f}".format( production_per_asset_type[asset_type_name] ) }} {% endif %} {% if asset_types[asset_type_name].is_consumer and consumption_per_asset_type[asset_type_name] > 0 %} {{ "{:,.3f}".format( consumption_per_asset_type[asset_type_name] ) }} {% endif %}
Total {{ "{:,.3f}".format( sum_production ) }} {{ "{:,.3f}".format( sum_consumption ) }}
{% if fm_mode == "demo" %}

Flexibility summary

{% for asset_type_name in asset_types %} {% endfor %} {% if asset_types | length > 1 %} {% endif %}
Curtailment Shifting Revenue
MWh MWh * h KRW
{{ asset_type_name | capitalize }} {% if asset_types[asset_type_name].is_producer and flex_info["curtailment_per_asset_type"][asset_type_name] > 0 %} {{ "{:,.3f}".format( flex_info["curtailment_per_asset_type"][asset_type_name] ) }} {% endif %} {% if asset_types[asset_type_name].is_consumer and flex_info["shifting_per_asset_type"][asset_type_name] > 0 %} {{ "{:,.3f}".format( flex_info["shifting_per_asset_type"][asset_type_name] ) }} {% endif %} {{ "{:,.2f}".format( flex_info["profit_loss_flexibility_per_asset_type"][asset_type_name] ) }}
Total {{ "{:,.3f}".format( flex_info["sum_curtailment"] ) }} {{ "{:,.3f}".format( flex_info["sum_shifting"] ) }} {{ "{:,.2f}".format( flex_info["sum_profit_loss_flexibility"] ) }}
{% endif %} {% endif %}

Market status

{% for market in markets: %} {% endfor %}
Market Currency Average price
{{ market.display_name }} {{ market.unit[:3] }} {% if not average_prices[market.name] | isnull %} {{ "{:,.2f}".format( average_prices[market.name] ) }} {{ market.unit }} {% else %} Unknown for the requested period {% endif %}

Portfolio status

{% if fm_mode == "demo" %}

For onshore and vehicles, an opportunity is mocked for the following 4am timeslot (select time window "today" or "tomorrow"). Double-click the opportunity to see the order book.

{% endif%}

You can also

{% if fm_mode == "demo" %}
{{ portfolio_plots_divs[0] | safe }}
{{ portfolio_plots_divs[1] | safe }}
{% else %}
{{ portfolio_plots_divs | safe }}
{% endif %} {{ portfolio_plots_script | safe }}

Asset status

{% if fm_mode == "demo" %} {% endif %} {% for asset in assets: %} {% if fm_mode == "demo" %} {% endif %} {% endfor %}
Asset Production ConsumptionCurtailment Shifting Balancing revenue
{{ asset.display_name }} {% if production_per_asset[asset.name] > 0 %} {{ "{:,.2f}".format( production_per_asset[asset.name] ) }} MWh {% endif %} {% if consumption_per_asset[asset.name] < 0 %} {{ "{:,.2f}".format( consumption_per_asset[asset.name] ) }} MWh {% endif %} {% if asset.asset_type.can_curtail and flex_info["curtailment_per_asset"][asset.name] > 0 %} {{ "{:,.2f}".format( flex_info["curtailment_per_asset"][asset.name] ) }} MWh {% endif %} {% if asset.asset_type.can_shift and flex_info["shifting_per_asset"][asset.name] > 0 %} {{ "{:,.2f}".format( flex_info["shifting_per_asset"][asset.name] ) }} MWh {% endif %} {{ "{:,.2f}".format( flex_info["profit_loss_flexibility_per_asset"][asset.name] ) }} KRW
{% block paginate_tables_script %} {{ super() }} {% endblock %} {% endblock %}