Home Reference Source Test Repository
import {MidpointAgent} from 'market-agents/src/index.js'
public class | source

MidpointAgent

Extends:

events~EventEmitterAgentTrader → MidpointAgent

MidpointAgent - An agent that bids/asks halfway between the current bid and current ask.
When there is no current bid or current ask, the agent bids minPrice or asks maxPrice.

Constructor Summary

Public Constructor
public

constructor(options: *)

Method Summary

Public Methods
public

askPrice(marginalCost: number, market: Object): number | undefined

Calculate price this agent is willing to accept.

public

bidPrice(marginalValue: number, market: Object): number | undefined

Calculate price this agent is willing to pay.

Inherited Summary

From class Agent
public

period: *

public

time, in JS ms since epoch, of agent wake

public

ends current period, causing agent to undertake end-of-period tasks such as production and redemption of units

public

init(newSettings: Object)

initialize an agent to new settings

public

initPeriod(period: number | Object)

re-initialize agent to the beginning of a new simulation period

public

percent of period used

public

guess at number of random Poisson wakes remaining in period

public

produces units in negative inventory with configured costs, usually called automatically at end-of-period.

public

redeem()

redeems units in positive inventory with configured values, usually called automatically at end-of-period.

public

transfer(myTransfers: Object, memo: Object)

increases or decreases agent's inventories of one or more goods and/or money

public

unitCostFunction(good: String, hypotheticalInventory: Object): number

agent's marginal cost of producing next unit

public

unitValueFunction(good: String, hypotheticalInventory: Object): number

agent's marginal value for redeeming next unit

public

wake(info: Object)

wakes agent so it can act, emitting wake, and sets next wakeTime from this.nextWake() unless period.endTime exceeded

From class Trader
public abstract

ask(market: Object, myPrice: number)

send a limit order to sell one unit to the indicated market at myPrice.

public abstract

askPrice(marginalCost: number, market: Object): number | undefined

calculate price this agent is willing to accept.

public abstract

bid(market: Object, myPrice: number)

send a limit order to buy one unit to the indicated market at myPrice.

public abstract

bidPrice(marginalValue: number, market: Object): number | undefined

calculate price this agent is willing to pay.

public

For each market in agent's configured markets, calculates agent's price strategy for buy or sell prices and then sends limit orders for 1 unit at those prices.

Public Constructors

public constructor(options: *) source

creates an Agent with clone of specified options and initializes with .init(). Option properties are stored directly on the created agent's this.

Override:

Trader#constructor

Params:

NameTypeAttributeDescription
options *

Public Methods

public askPrice(marginalCost: number, market: Object): number | undefined source

Calculate price this agent is willing to accept. The returned price is either the max price, the midpoint of the bid/ask, or undefined.
Undefined (no ask) is returned if the propsed price is less than the marginalCost parameter this.integer==true causes midpoint prices to be rounded up to the next integer before comparison with marginalValue

Override:

Trader#askPrice

Params:

NameTypeAttributeDescription
marginalCost number

the marginal cost of producing the next unit. sets the minimum price for allowable bidding

market Object

The market for which a bid is being prepared. An object with currentBidPrice() and currentAskPrice() methods.

Return:

number | undefined

agent's buy price or undefined

public bidPrice(marginalValue: number, market: Object): number | undefined source

Calculate price this agent is willing to pay. The returned price is either the min price, the midpoint of the bid/ask, or undefined.
Undefined (no bid) is returned if the propsed price would exceed the marginalValue parameter this.integer==true causes midpoint prices to be rounded up to the next integer before comparison with marginalValue

Override:

Trader#bidPrice

Params:

NameTypeAttributeDescription
marginalValue number

the marginal value of redeeming the next unit. sets the maximum price for allowable bidding

market Object

The market for which a bid is being prepared. An object with currentBidPrice() and currentAskPrice() methods.

Return:

number | undefined

agent's buy price or undefined