Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm's 300,000 packages pre-installed, including market-agents with all npm packages installed. Try it out:

var marketAgents = require("market-agents")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

market-agents v0.91.0

pool of heterogeneous robot trading agents for economic or financial simulations

market-agents

Build Status Coverage Status [Documentation Status

Provides EventEmitter Agent framework for robot trading in economic and financial simulations

##Documentation

The ESDoc hosted documentation for market-agents may be preferable as it should include both this information and documentation automatically generated from the source code and source code comments.

##Installation

npm install market-agents --save

##Initialization

import * as MarketAgents from 'market-agents'; // ES6 
// or
const MarketAgents = require('market-agents'); // CJS
// unpack some constructors
const { Agent, ZIAgent, Pool } = MarketAgents;

##Agent classes, methods, etc.

See the ESDoc hosted documentation for market-agents

##Agent Event Reference

wake

Parameters: info

Emitted-By: Agent.prototype.wake

When: when Agent.wake(info) is called.

Note: this.wakeTime contains the current official agent time. The event is triggered before calculating the new wakeTime. Use this for: agent strategy (placing bids, asks, responding to others bids/asks)

pre-transfer

Parameters: myTransfers, memo

Emitted-By: Agent.prototype.transfer

When: before modifying the agent's inventory

Use this for: altering or removing transfers before they occur

post-transfer

Parameters: myTransfers, memo

Emitted-By: Agent.prototype.transfer

When: after modifying the agent's inventory

Use this for: logging transfers, taking other actions after the transfer

pre-period

Parameters: None

Emitted-By: Agent.prototype.initPeriod

When: after new period information has been copied to agent

Use this for: additional agent set up at the beginning of every period

post-period

Parameters: None

Emitted-By: Agent.prototype.endPeriod

When: after all period activities, produce and redeem, have completed

Use this for: any final agent accounting, profit capture, cleanup, etc. before ending the period

pre-redeem

Parameters: trans

Emitted-By: Agent.prototype.redeem

When: Typically at end of a period, after a redemption transfer has been calculated, but before the transfer takes place

Use this for: modifying the redemption transfer

post-redeem

Parameters: trans

Emitter-By: Agent.prototype.redeem

When: after a redemption transfer has been processed and added to the agent's inventory

Use this for: logging redemption amounts, taking other actions after a redemption

pre-produce

Parameters: trans

Emtited-By: Agent.prototype.produce

When: Typically at the end of a period, after a production transaction has been calculated, but before the transfer

Use this for: modifying the production transfer

post-produce

Parameters: trans

Emitted-By:Agent.prototype.produce

When: after a production transfer has been processed and added to the agent's inventory

Use this for: logging production amounts, taking other actions after production

##Trader Events

Trader registers ziAgent.Prototype.sendBidsAndAsks as the first responder to the Agent Wake event.

##Trader subclasses (e.g. ZIAgent, etc.)

inherit Agent and Trader events and behavior

##Pool Events

Pool is not an EventEmitter of its own.

Instead, several Pool methods call methods on all agents in the Pool, triggering related Agent events.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free