示例#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()
#!/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
                    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)