Herramientas de backtesting

Avatar de Usuario
Dalamar
Site Admin
Mensajes: 8741
Registrado: 09 May 2012 01:38

Herramientas de backtesting

Mensajepor Dalamar » 12 Ago 2017 05:04

Voy a comenzar con algo productivo y sencillito, que nos puede dar resultados rapidamente, BackTrader + PyFolio.

Voy a descargar unos cuantos historicos de WIKI de Quandl y con eso ya podemos hacer unos cuantos experimentos!

Ver: https://github.com/leonth/bulk-download-quandl

Código: Seleccionar todo

    from datetime import datetime
    import backtrader as bt
    from backtrader.analyzers import (SQN, AnnualReturn, TimeReturn, SharpeRatio,
                                  TradeAnalyzer)
   
    class SmaCross(bt.SignalStrategy):
        params = (('pfast', 50), ('pslow', 200),)
                   
        def __init__(self):
            sma1, sma2 = bt.ind.SMA(period=self.p.pfast), bt.ind.SMA(period=self.p.pslow)
            self.signal_add(bt.SIGNAL_LONG, bt.ind.CrossOver(sma1, sma2))
                   
        def stop(self):
            print('Final Cash: %.2f' % self.stats.broker.value[0])
           
    cerebro = bt.Cerebro()
   
    data = bt.feeds.QuandlCSV(dataname='quandl_WIKI\WIKI.KO.csv')
    cerebro.adddata(data)
   
    cerebro.addstrategy(SmaCross)
    cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')
   
    cerebro.addanalyzer(TradeAnalyzer)

    results = cerebro.run()
    cerebro.plot()


BackTrader_Pyfolio_1.JPG


Código: Seleccionar todo

strat = results[0]
pyfoliozer = strat.analyzers.getbyname('pyfolio')

returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()

print('-- RETURNS')
print(returns)
print('-- POSITIONS')
print(positions)
print('-- TRANSACTIONS')
print(transactions)
print('-- GROSS LEVERAGE')
print(gross_lev)


BackTrader_Pyfolio_2.JPG
¿Te ha gustado este hilo? Compartelo en las redes sociales para que se sume mas gente a la conversacion!

Volver a “Backtesting”

cron

Ingresar