Sunday, April 22, 2018

Roadmap: 2018

Last update: June 4rd 2018

Most recently being worked on first:
  1. Get rid of mutable state. General cleanup. Add better support for continuous time series data and overall model the system more around this instead of a strict assumption that everything is or should be (converted to) discrete time series data.
  2. More testing! Flesh out the rest of the old exchange API components – and do some testing on new exchanges also.
  3. Deal with trading system vs. exchange sync problems; see text at top of strategy_result_handler.clj. Test using demo account; try to trigger sync problems this time.
  4. Some "strategy helper" component is need that will deal with :post-only orders that are cancelled because they'd get instantly executed as market orders. Some retry logic with a limit as to how far it will stretch itself would be nice here.
  5. Architecture backtester in such a way that it's "just another exchange backend". This should make the code and general architecture simpler and more robust. It'll also enable us to have several backtester types.
  6. While I do handle order book streams, I do not store the historical data here in a DB; fix this.

Roadmap: finished

Most recently finished first:
  • Flesh out IExchange which will be used by the strategies to set proper order size and deal with exchanges that do not have dedicated TP / SL fields for their order / position objects. I.e. use a bidir map between entry order <--> tp/sl order. Separate this from exchanges that supports :linked-order-cancellation.
  • Handle the output generated by the backtester and strategies and prepare the result for efficient transmission to exchanges. Test using demo account; use fixed values for order size.
  • Unify the various market data type streams behind a common interface / protocol and update the code to not assume e.g. OHLC in so many places. Video update here.
27th april
30th april
1st may
  • Write some dummy test strategies to verify that the new backtester, trade planner and so on works (it does).
  • Add "trade planner"; wraps a base strategy expressed in high-level terms (indicator levels, signals, ++) and uses it to generate future limit entries and limit/stop-loss/take-profit -exits instead of trading using simple reactions (e.g. market orders) in the passing moment. TLDR: this makes it possible to build market making strategies.
  • Add support for order flow streams and analysis.
  • Refactor the old backtester; split it into smaller components (flexibility).
  • Add support for real order- and position objects instead of simple signals.

Future

No comments:

Post a Comment