backtesting.py
1.0.0
Стратегии бэк -теста с Python.
Веб -сайт проекта + документация
$ 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 ()Результаты:
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
Найдите больше примеров использования в документации.
Прежде чем сообщать об ошибках или публиковать в дискуссионной доске, пожалуйста, прочитайте руководящие принципы, в частности, раздел о создании полезных отчетов об ошибках и ``` -Высоте вашего кода. Мы благодарим вас!
См. Альтернативы.md для списка альтернативных рамок бэтона Python и сопутствующих пакетов.