Market Configurations#
The market configuration allows an extensive configuration of multiple bidding options. A full list of configurations and explanation is given here.
market config item
description
name
string name
product_type
energy or capacity or heat
market_products
list of available products to be traded
opening_hours
recurrence rule of openings
opening_duration
time delta
market mechanism
name of method used for clearing
maximum_bid_price
max allowed bidding price
minimum_bid_price
min allowed bidding price
maximum_bid_volume
the largest valid volume for a single bid
additional_fields
list of additional fields to base bid
volume_tick
step increments of volume
price_tick
step increments of price
volume_unit
string for visualization of volume
price_unit
string for visualization of price
supports_get_unmatched
boolean
maximum_gradient
max allowed change between bids
eligible_obligations_lambda
function checking if agent is allowed to trade here
Here, a description of all options and the usage is given.
The opening_hours is a recurrence rule which defines when the market is open. The opening_duration is a timedelta which defines how long the market is open. This can be used to leave time for negotiation in the agents. The market_mechanism is the name of the clearing method used for this market, and is mapped to the actual clearing_function in the initialization. The minimum_bid_price, maximum_bid_price and maximum_bid_volume are constraints for bids. All Bids of the sent orderbook are rejected and not considered for clearing if one or more are not in these bounds. An agent receives a “Rejected” message if this is the case. The additional_fields is a list of additional fields which are used to base the bid on. The price_tick and volume_tick is the step increment of volume, which ensures that only integers are used for calculation. The price_unit and volume_unit are strings for visualization of price. The supports_get_unmatched is a boolean which defines if the market supports the handle_get_unmatched method, which allows agents to look into the current market orderbook, as it is the case, mostly on continuous markets. The maximum_gradient is the maximum allowed change between bids from one hour to the next one - only relevant if the count of market products is greater than 1.
Most important, the market_products are a list of MarketProduct objects.
MarketProduct#
Each MarketProduct contains the three informations:
duration (a relative timedelta or recurrency rule)
count (how many consecutive products are available for trading)
first_delivery (a relative timedelta of the first delivery in relation to market start)
only_hours (tuple of hours from which this product is available, on multi day products)
For example, if the duration is 1 hour, the count is 4 and first_delivery is 2 hours, then a market which opens at 12:00 will have the following products:
14:00 - 15:00
15:00 - 16:00
16:00 - 17:00
17:00 - 18:00
It then makes sense to reschedule the market clearing all 4 hours, but it would also be possible to schedule the same clearing interval an hour later too, which would look like this:
Example Configuration - CRM Market#
An example of a EOM and CRM market is shown here. It is possible to trade at the EOM and sell positive capacity on the CRM too:
markets_config:
EOM:
operator: EOM_operator
product_type: energy
start_date: 2019-01-01 01:00
products:
- duration: 1h
count: 1
first_delivery: 1h
opening_frequency: 1h
opening_duration: 1h
market_mechanism: pay_as_clear
CRM_pos:
operator: CRM_operator
product_type: capacity_pos
start_date: 2019-01-01 00:00
products:
- duration: 4h
count: 1
first_delivery: 2h
opening_frequency: 4h
opening_duration: 30m
market_mechanism: pay_as_bid
Due to the configuration of the market opening frequency and duration, the timetable for the opening and closing of the markets, as well as the delivery periods are shown below