Git Product home page Git Product logo

backtesting_ms's Introduction

backtesting-ms

fetches asset data - pandas

calculate indicators

TA = vbt.IndicatorFactory.from_pandas_ta(indicator)  
TA.run(**dict_indicators)

loop over strategies

run stategy

vbt.Portfolio.from_signals(
    asset data close, 
    asset data entries, 
    asset data exit, 
    cash)

fetches asset data

in/out samples (rolling)

simulate holding -> sharpe ratio

in-sharpe (simulate all params) best_index (in-sharpe) performance[performance.groupby('split_idx').idxmax()].index best_params -> fast, and slow: vbt.MA.run entries = fast_ma.ma_above(slow_ma) #, crossover=True) exits = fast_ma.ma_below(slow_ma) #, crossover=True) pf = vbt.Portfolio.from_signals sharpe_ratio

out-sharpe (simulate all params) best_index (out-sharpe)

DynamicBT: A wrapper for Backtesting.py

This wrapper is an enhancement of the Python library backtesting.py, which is very popular for backtesting of trading strategies.

Will extract this as a seperate repo, and deploy to PyPi as a library

Issues addressed:

  • backtesting.py relies on hardcoding of strategy configuration, such as upper and lower bands, and also the optimisation criteria, etc., meaning much code has to be written to define strategies.
  • The default strategies, and many circulated online, are not going to find alpha (an opportunity to exploit market inefficiency); because they are utilised by too many traders.

Solution:

  • The wrapper assembles strategy details according to content of either a config file, or a database. (WIP: This can then be edited via a UI.)
  • There is a factory to fetch the strategy class.
  • Walkforward testing of all strategies.
  • Strategies, with optimisation functionality, are required that compare data sources of world events, including news events and social media sentiment, to market movements to find patterns that reflect correlation. market_sentiment_ms
  • Optimsiation can be ehanced with machine learning stonk-value-forecasting-model

Backtesting some popular technical indicators

Image Details
Strats strategies folder: Typical technical indicators, such as Average Direction Movemement, Bollinger Bands, Donchian, EMA, MAC, MACD, Mean Reversion, Momentum, RSI, SMA, Stochastic, etc., and combinations of these.

Bollinger Bands

Bollinger chart

SMA (Simple Moving Average)

SMA chart

Sample stategy

  • 10-day SMA below 30-day SMA.
  • 10-day and 30-day SMA above 50-day SMA.
  • 10-day, 30-day, and 50-day SMA below 200-day SMA.

MACD (Moving Average Convergence/Divergence)

Purpose: Entry/exit points; trend confirmation; and risk management.

MACD chart

The MACD indicator is derived from two exponential moving averages (EMAs) — the 12-day EMA and the 26-day EMA. The formula for MACD is as follows:

MACDLine=12−dayEMA−26−dayEMA

A signal line, often a 9-day EMA, is plotted on top of the MACD line. This signal line serves as a trigger for buy or sell signals.

SignalLine=9−dayEMA

The MACD histogram, the visual representation of the difference between the MACD line and the signal line, provides insights into the strength and direction of the trend.

MACDHistogram=MACDLine−SignalLine

2 conditions:

  • MACD above the MACD signal.
  • MACD greater than 0.

backtesting_ms's People

Contributors

mathematicuslucian avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.