PriceLimitRule#

class pams.events.PriceLimitRule(event_id, prng, session, simulator, name)[source]#

This limits the price range.

The order having the price that is out of the price range, the price is overridden to the edge of range. This event is only called via hooked_before_order() at designated step.

get_limited_price(order, market)[source]#

Calculate the limited price for an order.

Parameters:
  • order (Order) – order whose price is calculated

  • market (Market) – market that order belongs to

Returns:

price after price limit. If the input order is market order, the return become None (market order).

Return type:

Optional[float]

hook_registration()[source]#

Define when this event should be hooked by simulator. This method is automatically hooked by simulator at the beginning of simulation. You must implement this.

Returns:

The list of event hook ( EventHook )

Return type:

List[EventHook]

hooked_before_order(simulator, order)[source]#

This method is hooked before order placements if you set the event hook. Please be careful that the order haven’t yet been accepted by markets and it could be leakage of order information.

Parameters:
  • simulator (Simulator) – simulator for reference.

  • order (Order) – order accepting now.

Return type:

None

setup(settings, *args, **kwargs)[source]#

event setup. Usually be called from simulator/runner automatically.

Parameters:

settings (Dict[str, Any]) – agent configuration. Usually, automatically set from json config of simulator. This must include the parameters “targetMarkets” and “triggerChangeRate”. This can include the parameters “enabled”. The parameter “referenceMarket” is obsoleted.

Return type:

None

Returns:

None