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
在文檔中找到更多用法示例。
在報告錯誤或發佈到討論委員會之前,請閱讀貢獻指南,尤其是有關製作有用的錯誤報告和```對您的代碼的啟動)的部分。我們謝謝你!
有關替代python進行回測框架和相關軟件包的列表,請參見替代方案。