backtesting.py
1.0.0
Estrategias de comercio de prueba de retroceso con Python.
Sitio web del proyecto + documentación
$ pip install backtesting
from backtesting import Backtest , Strategy
from backtesting . lib import crossover
from backtesting . test import SMA , GOOG
class SmaCross ( Strategy ):
def init ( self ):
price = self . data . Close
self . ma1 = self . I ( SMA , price , 10 )
self . ma2 = self . I ( SMA , price , 20 )
def next ( self ):
if crossover ( self . ma1 , self . ma2 ):
self . buy ()
elif crossover ( self . ma2 , self . ma1 ):
self . sell ()
bt = Backtest ( GOOG , SmaCross , commission = .002 ,
exclusive_orders = True )
stats = bt . run ()
bt . plot ()Resultados en:
Start 2004-08-19 00:00:00
End 2013-03-01 00:00:00
Duration 3116 days 00:00:00
Exposure Time [%] 94.27
Equity Final [$] 68935.12
Equity Peak [$] 68991.22
Return [%] 589.35
Buy & Hold Return [%] 703.46
Return (Ann.) [%] 25.42
Volatility (Ann.) [%] 38.43
Sharpe Ratio 0.66
Sortino Ratio 1.30
Calmar Ratio 0.77
Max. Drawdown [%] -33.08
Avg. Drawdown [%] -5.58
Max. Drawdown Duration 688 days 00:00:00
Avg. Drawdown Duration 41 days 00:00:00
# Trades 93
Win Rate [%] 53.76
Best Trade [%] 57.12
Worst Trade [%] -16.63
Avg. Trade [%] 1.96
Max. Trade Duration 121 days 00:00:00
Avg. Trade Duration 32 days 00:00:00
Profit Factor 2.13
Expectancy [%] 6.91
SQN 1.78
Kelly Criterion 0.6134
_strategy SmaCross(n1=10, n2=20)
_equity_curve Equ...
_trades Size EntryB...
dtype: object
Encuentre más ejemplos de uso en la documentación.
Antes de informar errores o publicar en el tablero de discusión, lea las pautas de contribución, particularmente la sección sobre la elaboración de informes de errores útiles y ``` -Cancelando su código. ¡Te agradecemos!
Consulte alternativas.md para una lista de marcos de prueba de retención de Python alternativos y paquetes relacionados.