= jMarkets Features = [[TOC(InstallGuide, FeaturesPage, DevGuide, DownloadPage, FaqPage, LicenseAgreement, ContactUs)]] == General Information == jMarkets is a java-based web application which implements continuous double-sided electronic markets. It supports multiple concurrent markets. A market session can be configured intuitively by going through a set of html forms and initialized conveniently by a click of button from a java-enabled browser. A client can connect to jMarkets server and participate in a running market session from any java-enabled ('''1.5.x or higher''') browser. The software is packaged as a WAR file which can be easily deployed under any J2EE compliant web application container. The simple diagram below depicts how jMarkets works.[[BR]] [[Image(htdocs:screenshots/arch.png)]] == Market Features == === General === * '''Continuous and Call Market Support''' It supports both Continuous and Call market formats. A session can contain one or more trading periods running either formats. * '''Different level of order information control''' It supports both open and close book markets. In an open-book market session, traders see all orders; whereas in a close-book session, the traders only see their own order. * '''Choices of Payoff and Bankruptcy Function''' It provides a simple API for developing new Payoff and Bankruptcy functions, thus allowing one to easily expand types of markets that the system can support and to configure market sessions with different combinations of payoff and bankruptcy functions. * '''Transaction Management''' It leverages both JDBC built-in and its own transaction management APIs to guard various market transactions. * '''Backlog Cooling''' If the number of orders waiting to be processed by the server exceeds a certain level, the server stops accepting new orders so it can "cool down" and process all waiting orders. This prevents the server from being overwhelmed by sudden rushes in orders. * '''Multiple Concurrent Market Sessions''' It supports multiple concurrent market sessions. * '''Flexible Market Role Assignment''' A trader can be either a buyer, a seller or both in a market in a period. A trader can have different roles in different markets in the same period. * '''Constraint Regulated Trading''' An offer can only be submitted to the server if it satisfies both the short-sale constraint and bankruptcy cutoff rules specified for that trader. A message will be displayed if a trader tries to submit an offer that violates one or more of the rules. * '''Cash Carry Over''' A client's cash balance can be either carried over from one trading period to the next or realized at the end of the period by adding the amount to the client's accumulative payoff for the experiment. * '''Asset Carry Over''' A client's holdings of different assets in a period can be carried over either directly or as dividend from one trading period to the next. Alternatively, the holdings can be realized at the end of the period by converting to cash and subsequently adding to the client's accumulative payoff for the experiment. === Market Monitor and Configuration === [[Image(htdocs:screenshots/admin-2.png)]] * '''Realtime Experiment Monitoring''' The experimenter interface provides real-time updates on subject connectivity and market activities, including price movement, during an experiment. * '''Choice of Experiment To Monitor''' The Experimenter interface allows experimenter to choose an experiment from a list of his/her own running market sessions to monitor. * '''Experiment Output''' Experimenter can download csv-based experiment report, which includes all trading activitiess in a market session, by choosing from a list of previously run experiments. * '''Web-based Experiment configuration''' Experiments are configured through a set of easy-to-use web forms, which allows experimenters to configure securities, initial holdings, and every other aspect of the experiment. The configurations can then be saved in XML and loaded into the system later, so that experiments do not need to be re-created each time they are run. === Trader Interface === [[Image(htdocs:screenshots/trader-1.png)]] * '''Two Subject/Trader Interfaces''' The system supports two point-and-click client interfaces. Simplicity and convenience is emphasized throughout the design of the client GUI. NO typing is required for submitting, updating or canceling an offer. * '''Client Side Real-time Market Updates''' The color of a price-level cell will flicker and color will change, or arrow will appear on either side of the market bar, depending which trading GUI one uses, to reflect trading activities in real time. Security and cash holdings will be updated automatically on a client GUI in real time as well. * '''Client Re-authentication''' A client can re-join a running session at any time by logging in again and his holdings and standing offers will be restored. * '''Client Orderbook''' The client screen displays a table showing all the standing orders submitted by this client in the current period on each security. * '''Client Transaction Table''' The client screen displays a table showing the transactions with which this client was involved in the current period on each security. * '''Client Earnings Table''' The client screen displays a table showing how much the client has earned in each period on each security, including the total payoffs. * '''Real-time Price Chart''' A price chart on the client interface that deplays price movements of each security over time and it is updated in real-time. * '''Best Price Buttons''' Best buy/sell buttons for each security allow traders to quickly hop to the best offers on either side of the market, so that they don't have to scroll around trying to find where all the action is taking place * '''Past order and transaction caching''' Both order and transaction panels can keep history from past trading periods if instructed to do so. == System Features == * '''Database Agnostic''' jMarkets has its own Object-Relational component for the persistence layer which allows the plug-in of vendor neutral relational databases for the backend storage. This allows users to leverage existing resources without having to purchase new database hardware and software. * '''Platform Neutral''' jMarkets can be deployed on any host as long as it supports JRE 1.5.x or higher.