Skip to content
This repository was archived by the owner on Apr 11, 2023. It is now read-only.

Requirements Document

Garrett T edited this page Jan 31, 2015 · 14 revisions

Orders

  • Market Orders: As a matching engine, I can match a standard market order against any other type of order.
  • Limit Orders: As a matching engine, I can match a standard limit order against any other type of order.
  • Stop Orders: As a matching engine, I can follow a reference price and use that to turn a standard stop order into a market order, and fulfill it.
  • Canceling Orders: As a matching engine, I can cancel any unfulfilled, or partially fulfilled, orders.

Trading

  • As a matching engine, I prevent all trades that would execute against the same account by following the "Version 1, Decrement" plan as outlined by NASDAQ.

Events

  • As a matching engine, I reliably publish all events and keep a ledger that can be re-parsed at any time should their be some type of network failure.

API

  • Can publish realtime updates using its event stream
  • Provides analytic data, such as market graphs, market spread, etc. over time.
  • Interface for adding, canceling, and checking status of all orders, for all accounts.

Data Warehouse

  • Is responsible for storing any and all data that passes through the matching engine. Including, but not limited to: Orders, Canceled Orders, Trades, Trade Errors (self-matching), Matching Engine Errors, and any other Service Errors.

Authentication

  • Users can register from the front page with a unique e-mail address and a password of at least 8 characters
  • Users can login from the front page
  • Only authenticated users can make orders
  • Only authenticated users can view personal trend visualizations

Orders

  • Users can easily place a market order to buy or sell
  • Minimal advanced features are provided for users who are more comfortable with exchanges
  • The application prevents orders when users do not have sufficient funds

Market Visualizations

  • Users can view a price chart
  • Users can view a depth chart
  • Users can view the order book
  • The order book includes the bid-ask spread
  • All visualizations are real-time

Money Management

  • Users have an available account balance for each security
  • Users can withdraw
  • Users can deposit
  • Users can purchase faux bitcoins
  • Karma score

Gamification

  • Users are given a small amount of bitcoin to begin trading
  • Leader-boards are kept and users can obtain achievements / awards based on their success

Clone this wiki locally