ACM ICAIF 2023 Trading Hackathon Challenge

Overview

We're excited that you're here to participate in our event. Whether you're a coding novice or an experienced developer, this hackathon is designed to provide you with an engaging and challenging experience.

The objective for you in this hackathon is to build an equity trading algorithm that maximizes profit by buying and selling stocks (i.e., manage an investment portfolio). You will be provided access to years of historical data for a group of 500 stocks. Your algorithm should step through the data, one day at a time, and for each day, generate orders to buy or sell each of the 500 stocks. You can work individually or form a team to work together. Best of luck with your projects! We can't wait to see what you come up with!

The submission of your results will end by the end of the day on Nov 26th, Sunday.

Summary

  1. Register your team.
  2. You can download the detailed instruction by clicking the Instruction
  3. Use the training dataset to develop your trading algorithms/strategies.
  4. Use the testing dataset to evaluate the performance of your trading algorithms/strategies.
    • Also, please use the testing dataset to generate trades files, as mentioned in the instruction.
    • Please note that you should NOT develop your trading algorithms/strategies using testing data.
  5. Submit your project.
  6. The leaderboard will be updated in real-time.

About The Data

Please email to airsyntheticdata.requests@jpmorgan.com to request the dataset.

The data for this hackathon is a synthetic version of the S&P 500, created by AI Research's Synthetic Data group. It is intended to be a synthetic version of the market that can be used for testing trading algorithms. It is modeled after real data, with accurate similarities and correlations between groups of stocks. The data that traders use to inform their trading is classified as "financial data" or "market data." Financial data includes information related to a company's financial health, industry, and macroeconomic factors, while market data focuses on historical price and volume information. Traders analyze these types of data to make informed decisions about buying and selling stocks.

Market Data

The market data for this project is provided as a comma-separated-values (CSV) file, where each row represents the data for one day. An example looks like this:

A market data example with five tickers
Date AAPL IBM JPM TSLA
2005-01-03 52.2773 86.8520 60.4727 2.6500
2005-01-04 51.7295 85.7908 60.4137 2.6015
2005-01-05 52.0064 85.1988 60.3900 2.5867
2005-01-06 52.0417 85.6319 60.4313 2.5740
2005-01-07 52.1596 85.5092 60.4137 2.5570
2005-01-10 52.2420 85.9135 60.3841 2.5660
2005-01-11 52.5484 85.3215 60.4668 2.5888
2005-01-12 52.6191 85.6031 60.5553 2.5810

Financial Data

The financial data used by traders for investing generally falls into four categories: Fundamental, Technical, Sentiment, and Macroeconomic:

To simplify the project, we will precompute the values for five indicators and provide them to participants for each stock in a CSV file named for that stock. For instance, the file providing information about IBM is named IBM.CSV, and it looks like this:

A financial data example with five indicators
Date indicator01 indicator02 indicator03 indicator04 indicator05
2005-01-03 0.2773 1.8520 0.4727 1.6500 0.2773
2005-01-04 0.7295 1.7908 0.4137 0.6015 1.7908
2005-01-05 0.0064 1.1988 0.3900 0.5867 0.3900
2005-01-06 0.0417 -2.6319 -0.4313 -0.5740 -2.6319
2005-01-07 -0.1596 1.5092 0.4137 -1.5570 -0.1596
2005-01-10 1.2420 1.9135 0.3841 0.5660 1.9135
2005-01-11 0.5484 1.3215 -0.4668 1.5888 -0.4668
2005-01-12 0.6191 1.6031 0.5553 2.5810 1.6031

Your Task

Your program should operate in the following way, and follow these rules:

  1. Your program should read in over 500 files, as follows:
    • the market data (one file)
    • the financial data (about 500 files)
    • a strategy file, that describes to your algorithm how it should behave
  2. Assume you start with $1,000,000 in cash.
  3. The program should output a trades file (trades.csv) that lists the trades it would like to make for each day.

The "trades.csv" file should be formatted like this:

A "trades.csv" file format example
Date AAPL IBM JPM TSLA
2005-01-03 0 0 0 0
2005-01-04 100 0 0 0
2005-01-05 0 0 0 -100
2005-01-06 0 0 0 0
2005-01-07 0 0 0 0
2005-01-10 -100 0 0 0
2005-01-11 0 0 0 0
2005-01-12 0 0 0 100

Evaluation

We have a market simulator, which reads in your trades file and the market data file, then simulates your trades. It provides some metrics of your trading performance, and charts showing how it did. We will evaluate each algorithm according to Sharpe ratio, and total return, and provide awards and rankings on those metrics.

Procedure

Participants will be provided with 20 folders of data. The folders are in two groups: "training” and "testing”, e.g., training01 to training10 and testing01 to testing10. Participants can use the data in the training folders to train or develop trading algorithms. Each folder will contain about 501 files (1 market and 500 financial data). The data in each folder covers the same period, from January 2022 to December 2022.

Participants' algorithms must follow these rules:







Submission methods

Please email your results, the trade files in CSV format, with your team name to the contact email: haibei.zhu@jpmchase.com

We will evaluate your results given the metrics mentioned in the Procedure and update the leaderboard.

Leaderboard

Last update: 11/16/2023, 11:00pm, ET

Team Name Submission Date Sharpe ratio total return Ranking
Alexander 11/29/2023 0.219 0.036 = 3.6% 1