- français
- English
Bigdata2015-algorithmic-trading
Algorithmic Trading Simulation project proposal
The team
- Kamil Bennani-Smires: computational finance advisor
- Jakob Ehrl: simulation master (market simulation)
- Liu Fengyun: product manager (manage features and requirements)
- Dennis Meville Meier: chief of quality (code testing, documentation re-reading)
- Merlin Nimier-David: benevolent dictator (team management)
- Arnaud Robert: computational finance advisor
- Elias Schegg: visualization guru
- Jakub Sygnowski: chief architect (defining modules and interfaces)
Abstract
Algorithmic trading is the use of electronic platforms for entering trading orders with an algorithm which executes pre-programmed trading instructions accounting for a variety of variables such as timing, price, and volume. Algorithmic trading is widely used by investment banks, pension funds, mutual funds, and other buy-side (investor-driven) institutional traders, to divide large trades into several smaller trades to manage market impact and risk.
TradingSimulation is a framework already developed by former students for back-testing trading strategies, designed in a modular fashion. The system is composed of multiple components built on top of Akka Actors which do processing and send data on previously set up edges. The framework was intended for usage in two main configurations: Live and Replay. In Live mode, market data is fetched from external APIs. In Replay mode, historical data is used as input to the system.
The target audience of the system are developers of algorithmic trading agents who want to implement, optimize and test their agent on a fast, distributed infrastructure. This is done using either live data or simulating the performance of their agent with (possibly vast amounts of) historical data.
A second use-case is to configure the components in such a way that no real-world data is used, but to let our Trader agents trade among themselves instead. In this case, many agents using various strategies (and various parameters over these strategies) would be instantiated. We aim to analyse the behaviour of such market simulation after different periods of time.
However, given the crudeness of the assumptions, we do not expect the simulation to fit a real market by any objective measure.
Project objectives
See the detailed article: project objectives.
Project report
The project is now complete. You can find the project's report (under the form of a guide / documentation oriented towards future users): Programmer's guide
Methodology
- We build on work made by our predecessors last year and try to keep whatever possible. Accordingly, we'll be using mostly Scala, the Akka framework and some related technologies.
- We'll assess which goals shall be fullfilled by which components by writing corresponding user stories and coming up with a matching highlevel architechture.
- We'll proceed according to the defined milestones
- We'll be using git for version control. We made a fork of the project on github: https://github.com/merlinND/TradingSimulation.
- We communicate using slack.com as Platform
- We manage tasks and deadlines using trello.com
- We'll use Travis CI to run automatic builds&tests of our system.
- For each component we lay focus on the requirements, design, construction, testing and debugging. We won't focus on deployment and maintenance.
Risks
- Failing to communicate: Leads to building components with interfaces that do not match, doing things twice, working into different directions.
- We don't know the framework we'll use (Akka) yet, it may turn out that we'll either: design the codebase plainly wrong/slow, or be buried with learning the tools.
- Trying to deliver code for badly estimated deadline may lead to ugly code with no time for refactoring.
- Missing deadlines because of single teammembers not delivering certain content.
- Single slow components could slow down the whole system.
Not getting (enough) data: We know where and how to get the data and are sure we can do it. Therefore this is not a huge risk.
Data sources
- Real-time data: http://www.truefx.com (more information)
-
Historical data: http://www.histdata.com/download-free-forex-historical-data and / or http://www.fxhistoricaldata.com. We have access to tick-data for various currency pairs from 2001 to the present.
Milestones with detailed workpackages
- Milestone 1: March 24th 2015
- Forex market data coming into the system [Dennis, Merlin, Jakub]
- Historical data acquired & readable by the system [common]
- Simple strategy making use of Forex quotes [Kamil, Arnaud]
- "Hello World" web-based monitoring interface receiving (any kind of) data from the backend [Elias, Jakob]
- Milestone 2: April 28th 2015
- Market engine fully ported to Quote-based data [Dennis, Merlin, Jakub]
- Implement various trading strategies [Kamil, Arnaud]
- Multiple Cross Moving Average http://www.investopedia.com/university/movingaverage/movingaverages4.asp
- Range Trading http://www.dailyfx.com/forex/education/trading_tips/chart_of_the_day/2014/03/12/The_3_Step_Range_Trading_Strategy.html
- Fibonnaci retracement http://www.investopedia.com/articles/active-trading/091114/strategies-trading-fibonacci-retracements.asp
- More efficient strategies should be preferred, but we also aim to produce several strategies representative of the real world to be used for market simulation.
- Implement Broker and / or Market Maker as necessary for market simulation [Arnaud, Kamil, Jakub]
- Backtesting: running the strategies on historical data and assessing their performance [Liu Fengyun, common]
- Simple parameter optimization techniques for trading strategies [Merlin, Jakub]
- Research and describe market simulation configurations which would make sense [Jakob]
- Web-based visualization interface starting to be useful [Elias, Jakob]
- Milestone 3: May 19th 2015
- All trading strategies implemented [Kamil, Arnaud]
- Web-based visualization interface fully implemented [Elias, Jakob]
- Several market simulation configurations defined, run and the results being analyzed [Jakob]
- Run market simulation in a distributed fashion on a cluster [Jakub, Dennis, Merlin]
- Documentation (especially for developers who would like to use our framework) [Liu Fengyun]
- Test suites to validate code correctness [Liu Fengyun, common]
- Full market simulation [Jakub, Jacob, Merlin]
- Project report [common]