Welcome to the GP Trading Platform WikiEdit
GP Trading Platform Project Wiki to collect thoughts and ideas. Feel free to edit and add!
Create a working prototype of GP software.
The prototype should be able to:
1. Import tick quote data for a single symbol from file into quote structure in memory.
2. Have one implemented simple inital method for each of the three strategy main parts, position entry, exit and risk mangement.
3. Create an initial population of random strategies using the methods for Entry, Exit, Risk management.
4. Fitness function to test the generated strategies against in-memory quote data.
5. Produce a ranking table of strategy performance in percent return.
Stuff to decide on:
Project/software name ->
Buildsystem to use ->
Make or Cmake?
Make is available everywhere and is tried and tested, just works. I have good experience using this.
Cmake: what are the benefits of using Cmake?
Main software design and architecture ->
Monolithic, micro-services, service-oriented, etc.
A monolithic and tightly coupled design does make sense as the software is performance critical running backtests of 100,000's strategies against quote data.
Using a micro-service architecture with separate running components would introduce latency as there would be a lot of interprocess communication between components.
Methods can be implemented as shared libraries (plugins) so they can be easily swapped, replaced with different versions and tested.
Shared library plugins can be either loaded on start or loaded up on demand at use.
C framework/toolkit to use for parallization ->
This can be decided up on later..
OpenMP is popular and supported by GCC and soon Clang/LLVM compiler.
Unified Parallel C (UPC)
Pthreads: have experience developing semi-HFT automated trading system using pthreads. It's old and work, but something more modern that can auto-parallelize for multi-core is appropriate? Great opportunity to learn new stuff.
Just add ever whatever ideas you come up with here:
Entry methods ideas
SMA, EMA, VMA levels, trend direction, crossover, etc.
Basic technical indicators like RSI, CCI, etc.
Resistance break out.
Support break down.
Volatillity entry using instrument volatillity or VIX, VXN indices, etc.
Horisontal support and resistance using calculated Pivot levels (R3 R2 R1 P S1 S2 S3)
Horisontal S&R using Fibonacci.
Horisontal S&R using Point & Figure.
Horisontal S&R using percentage range on last pivor high or low.
Double top and double bottom (percentage range on last pivot high or pivot low).
Tripple top and tripple bottom (percentage range on last pivot high or pivot low).
Scale in entry (entry by increasing position size at x% at a time)
Scale in entry on pullback against trend direction.
Exit methods ideas
Exit at fixed % from entry
Exit using scale out (exit by decreasing position size at x% at a time)
Risk methods (stoploss, hedging, etc)
Stoploss exit at fixed % from entry price. (basic stoploss)
Stoploss exit at fixed price from entry price. (basic stoploss)
Combined Exit and Risk management methods
Trailing exit x% below/above last quote price.
Trailing exit based on previous pivot high/lows.
Trailing exit based on Average True Range (ATR) volatility metric.