- Table of Contents
- Overview
- Requirements
- How to Install
- API Tokens
- Key Features
- How to Contribute
- Financial Terminologies
- Accessibility
- Credits
StockSim is a sophisticated desktop trading simulator designed to replicate real-world market conditions with high fidelity.
Built with a focus on educational value and practical experience, it provides business students, aspiring traders, and financial professionals with a risk-free environment to develop and refine their trading strategies.
The platform offers real-time market data integration through Finnhub API and supports various trading operations including long positions, short selling, and portfolio management.
- Java Development Kit (JDK) 21 or higher
- Apache Maven 3.8.8 or higher
- Internet connection for real-time market data
- Clone this repository
- Set up environmental variables in
.env.local
- Build the main app
mvn clean package java -jar target/StockSim.jar
- Download the latest release from releases
- Run the jar file:
java -jar StockSim.jar
- Create a Finnhub account at https://finnhub.io/.
- Click "Get free API key" to generate your API key.
- Add the key to your
.env.local
file as:STOCK_API_KEY=your_finnhub_api_key
- Create a MongoDB Atlas account at https://www.mongodb.com/.
- Share your MongoDB username and IP address with our team to be added to the project's cluster. (Note: All University of Toronto IP addresses are pre-whitelisted.)
- Once added, you'll receive the MongoDB API key.
- Add the key to your
.env.local
file as:MONGODB_API_KEY=your_mongodb_api_key
For detailed information about use cases and user stories, please refer to this page.
On this view, user can view real-time stock information, sort and filter them by ticker, company, and industry, then execute trades.
User's assets and portfolio will be displayed to provide information.
This view shows all transactions of the user.
- Fork the repository
- Open issues for api keys
- Create a new branch
- Make changes and commit
- Create a pull request
Balance
: The amount of cash currently available in your account.Portfolio
: The collection of all stocks you currently hold. For example, if you own 100 shares of AAPL (Apple Inc.) and -50 shares of AMZN (Amazon), these positions comprise your portfolio.- Portfolio Value: The total market value of all stocks in your portfolio. For example, if AAPL trades at $10 per share and AMZN at $5 per share, your portfolio value would be (100 × $10) + (-50 × $5) = $750
Assets
: Your total wealth, calculated as the sum of your cash balance and portfolio value.Position
: The quantity of shares you hold in a particular stock. A position can be:- Positive (Long Position): Owning shares, e.g., +100 shares of AAPL
- Zero: No current position
- Negative (Short Position): Borrowed shares that must be returned, e.g., -100 shares of AAPL
Order Entry
: The process of submitting trade orders to the market:Buy
(+): Purchasing shares by paying cash, increasing your positionSell
(-): Selling shares to receive cash, decreasing your position
Please refer to the Accessibility Report.
Name | GitHub Username |
---|---|
Angel Chen | AngelChen09 |
Yue Cheng | ivorkchan |
Corrine Xiang | TheGreatCorrine |
Raine Yang | Raine-Yang-UofT |
Jifeng Qiu | thqi3541 |