Code Monkey home page Code Monkey logo

Comments (3)

femtotrader avatar femtotrader commented on September 27, 2024

So in examples/... . py

we will have

def run(config, testing):
    ...
    results = backtest.simulate_trading(testing=testing)
    return results

from qstrader.

femtotrader avatar femtotrader commented on September 27, 2024

Here is how a test for a strategy could be written

    def test_sp500tr_buy_and_hold_backtest(self):
        """
        Test sp500tr_buy_and_hold
        Bar 0, at 2010-01-04 00:00:00
        Bar 1628, at 2016-06-22 00:00:00
        """
        results = examples.sp500tr_buy_and_hold_backtest.run(self.config, testing=self.testing)
        for (key, expected) in [
            ('sharpe', 0.5969),
            ('max_drawdown_pct', 5.0308),
            ('max_drawdown', 30174.01)
        ]:
            value = float(results[key])
            self.assertAlmostEqual(expected, value)
        for (key, expected) in [
                ('equity_returns', {'min': -1.6027, 'max': 1.2553, 'first': 0.0000, 'last': -0.0580}),
                ('drawdowns', {'min': 0.0, 'max': 30174.01, 'first': 0.0, 'last': 4537.02}),
                ('equity', {'min': 488958.0, 'max': 599782.01, 'first': 500000.0, 'last': 595244.99})
            ]:
            values = results[key]
            self.assertAlmostEqual(float(min(values)), expected['min'])
            self.assertAlmostEqual(float(max(values)), expected['max'])
            self.assertAlmostEqual(float(values.iloc[0]), expected['first'])
            self.assertAlmostEqual(float(values.iloc[-1]), expected['last'])

we probably don't need such tests for every strategy but one like this could avoid regression

For others strategies we can only test sharpe

    def test_mac_backtest(self):
        """
        Test mac_backtest
        """
        results = examples.mac_backtest.main(self.config, testing=self.testing)
        self.assertAlmostEqual(float(results['sharpe']), 0.6018)


    def test_strategy_backtest(self):
        """
        Test strategy_backtest
        """
        results = examples.strategy_backtest.main(self.config, testing=self.testing)
        self.assertAlmostEqual(float(results['sharpe']), -7.5299)

from qstrader.

femtotrader avatar femtotrader commented on September 27, 2024

Closed by bffc1a1

from qstrader.

Related Issues (20)

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.