backtesting.py
1.0.0
Stratégies de trading les plus backtest avec Python.
Site Web du projet + documentation
$ 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 ()Résultats:
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
Trouvez plus d'exemples d'utilisation dans la documentation.
Avant de signaler des bogues ou de publier sur le forum de discussion, veuillez lire les directives contributives, en particulier la section sur l'élaboration de rapports de bogues utiles et ``` -fencing votre code. Nous vous remercions!
Voir alternatives.md pour une liste de cadres de backtesting python alternatifs et de packages connexes.