KaplanSniperAgent
a reimplementation of a Kaplan Sniper Agent (JavaScript implementation by Paul Brewer)
see e.g. "High Performance Bidding Agents for the Continuous Double Auction" Gerald Tesauro and Rajarshi Das, Institute for Advanced Commerce, IBM
http://researcher.watson.ibm.com/researcher/files/us-kephart/dblauc.pdf
for discussion of Kaplan's Sniper traders on pp. 4-5
Constructor Summary
Public Constructor | ||
public |
constructor(options: Object) Create KaplanSniperAgent |
Method Summary
Public Methods | ||
public |
Calculates price this agent is willing to accept. |
|
public |
Calculates 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 |
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 |
produce() 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 |
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 |
wakes agent so it can act, emitting wake, and sets next wakeTime from this.nextWake() unless period.endTime exceeded |
From class Trader | ||
public abstract |
send a limit order to sell one unit to the indicated market at myPrice. |
|
public abstract |
calculate price this agent is willing to accept. |
|
public abstract |
send a limit order to buy one unit to the indicated market at myPrice. |
|
public abstract |
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 Methods
public askPrice(marginalCost: number, market: Object): number | undefined source
Calculates price this agent is willing to accept. The returned price always equals either undefined or the price of market.currentBid(), triggering an immediate trade.
The KaplanSniperAgent will sell, if marginalCost<=market.currentBidPrice, during one of three conditions: (A) market bid price is greater than or equal to .getJuicyBidPrice(), which needs to be set at the simulation level to the previous period high trade price (B) when spread = (market ask price - market bid price) is less than or equal to agent's desiredSpread (default: 10) (C) when period is ending
Override:
Trader#askPricepublic bidPrice(marginalValue: number, market: Object): number | undefined source
Calculates price this agent is willing to pay. The returned price always equals either undefined or the price of market.currentAsk(), triggering an immediate trade.
The KaplanSniperAgent will buy, if market.currentAskPrice<=marginalValue, during one of three conditions: (A) market ask price is less than or equal to .getJuicyAskPrice(), which needs to be set at the simulation level to the previous period low trade price (B) when spread = (market ask price - market bid price) is less than or equal to agent's desiredSpread (default: 10) (C) when period is ending