コード例 #1
0
 def test_simulate(self):
     csv_dir = './tests/datasets/'
     symbol_list = [
         'BTC_ETC',
     ]
     initial_capital = 1000.0
     heartbeat = 0.0
     start_date = datetime(2017, 4, 21, 0, 0, 1)
     backtest = Backtest(csv_dir,
                         symbol_list,
                         initial_capital,
                         heartbeat,
                         start_date,
                         HistoricCSVDataHandler,
                         SimulatedExecutionHandler,
                         NaivePortfolio,
                         BuyAndHoldStrategy,
                         fields=['open', 'high', 'low', 'close'],
                         ticks_limit=2000)
     backtest.simulate_trading()
     backtest.portfolio.create_equity_curve_dataframe()
     stats = backtest.portfolio.output_summary_stats()
     self.assertEqual(stats, [('Total Return', '-0.00%'),
                              ('Sharpe Ratio', '-17.72'),
                              ('Max Drawdown', '0.00%'),
                              ('Drawdown Duration', '2000')])
コード例 #2
0
def main():
    csv_dir = os.getcwd()
    symbol_list = ['AAPL']
    initial_capital = 100000.0
    hearbeat = 0.0
    start_date = datetime.datetime(1990, 1, 1, 0, 0, 0)

    backtest = Backtest(csv_dir, symbol_list, initial_capital, hearbeat,
                        start_date, HistoricCSVDataHandler,
                        SimulatedExecutionHandler, Portfolio,
                        MovingAverageCrossStrategy)

    backtest.simulate_trading()
コード例 #3
0
                    strategy_id = 1

                    if short_sma > long_sma and self.bought[symbol] == "OUT":
                        sig_dir = 'LONG'
                        signal = SignalEvent(strategy_id, symbol, dt, sig_dir,
                                             strength)
                        self.events.put(signal)
                        self.bought[symbol] = 'LONG'

                    elif short_sma < long_sma and self.bought[symbol] == "LONG":
                        sig_dir = 'EXIT'
                        signal = SignalEvent(strategy_id, symbol, dt, sig_dir,
                                             strength)
                        self.events.put(signal)
                        self.bought[symbol] = 'OUT'


if __name__ == "__main__":
    csv_dir = REPLACE_WITH_YOUR_CSV_DIR_HERE
    symbol_list = ['AAPL']
    initial_capital = 100000.0
    start_date = datetime.datetime(1990, 1, 1, 0, 0, 0)
    heartbeat = 0.0

    backtest = Backtest(csv_dir, symbol_list, initial_capital, heartbeat,
                        start_date, HistoricCSVDataHandler,
                        SimulatedExecutionHandler, Portfolio,
                        MovingAverageCrossStrategy)

    backtest.simulate_trading()
コード例 #4
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

# intraday_mr_backtest
from sys import path
import os
path.append(os.getcwd() + '/../engine')
path.append(os.getcwd() + '/../')
import datetime

from backtest import Backtest
from data import HistoricCSVDataHandler
from execution import SimulatedExecutionHandler
from portfolio import Portfolio
from intraday_ols_mr import IntradayOLSMRStrategy

if __name__ == "__main__":
    csv_dir = os.getcwd() + '/../csv'
    symbol_list = ['HOM14','NGM14']
    initial_capital = 100000.0
    heartbeat = 0.0
    start_date = datetime.datetime(2006,1,3)
    
    backtest = Backtest(
              csv_dir, symbol_list, initial_capital, heartbeat, start_date, 
              HistoricCSVDataHandler , SimulatedExecutionHandler, 
              Portfolio, IntradayOLSMRStrategy,
              #periods , header_format = "yahoo", max_iters = None
              )
    backtest.simulate_trading()
コード例 #5
0
from strategy import Strategy, MovingAverageCrossStrategy
from event import SignalEvent
from backtest import Backtest
from data import SQLDataHandler
from execution import SimulatedExecutionHandler
from portfolio import Portfolio

from datetime import datetime as dt

if __name__ == "__main__":
    csv_dir = './'
    symbol_list = ['601988','601985']
    initial_capital = 1000000.0
    heartbeat = 0.0
    start_date = dt(2010, 2,20, 0, 0, 0)
    end_date = dt.now()
    backtest = Backtest(csv_dir=csv_dir, symbol_list=symbol_list, initial_capital=initial_capital, heartbeat=heartbeat, startdate=start_date, enddate=end_date, data_handler=HistoricCSVDataHandler, execution_handler=SimulatedExecutionHandler, portfolio=Portfolio, strategy=MovingAverageCrossStrategy, window=[30,90])
    backtest.simulate_trading(frequency=252)
    
コード例 #6
0
ファイル: average_momentum.py プロジェクト: casdu-zhk/jsalpha
                    self.events.put(order)
                    self.bought[symbol] = "SHORT"

                elif self.bought[symbol] == "SHORT" and past_return > 0:  # 空头翻转
                    # 先平仓
                    order = OrderEvent(symbol, "EXIT")
                    self.events.put(order)
                    self.bought[symbol] = "OUT"

                    # 再开仓做多
                    order = OrderEvent(symbol, "ALLBUY")
                    self.events.put(order)
                    self.bought[symbol] = "LONG"


if __name__ == "__main__":
    csv_dir = '../csv/'
    start_date = '2005-01-01'
    end_date = '2017-01-20'
    symbol_list = ['000300.SH']
    fetch_from_wind(csv_dir, symbol_list, start_date, end_date)
    initial_capital = 100000.0
    start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d")
    heartbeat = 0.0

    backtest = Backtest(csv_dir, symbol_list, initial_capital, heartbeat,
                        start_date, HistoricCSVDataHandler, Portfolio,
                        Average_Momentum)

    backtest.simulate_trading(plot=True)