def task_backtest(): symbol = ["000001", "603993"] bars = bindata.BackTestData(bindata.raw) # Apply our current strategy on the chosen stock pool rfs = CurrentStrategy(symbol, bars) # specify constraints, here is the default one cons = Constraint() # specify a naive optimizer opt = NaiveOptimizer(cons) function_list = {} exec generate_signals in function_list # Create a portfolio portfolio = MarketOnClosePortfolio(symbol, bars, rfs, opt, initial_capital=1000000.0) exec generate_signals in function_list portfolio.strategy.sig_generator = function_list["generate_signals"] # Backtest our portfolio and store result in book book = portfolio.backtest_portfolio_external() ret = book.nav_to_json() print ret return json.dumps(ret)
def task_backtest(gearman_worker, gearman_job): symbol = ['000001', '603993'] bars = bindata.BackTestData(bindata.raw) # Apply our current strategy on the chosen stock pool rfs = CurrentStrategy(symbol, bars) # specify constraints, here is the default one cons = Constraint() # specify a naive optimizer opt = NaiveOptimizer(cons) data = json.loads(gearman_job.data) function_list = {} signal_generator = compile(data["code"], '', 'exec') exec signal_generator in function_list # Create a portfolio portfolio = MarketOnClosePortfolio(symbol, bars, rfs, \ opt, initial_capital=1000000.0) portfolio.strategy.sig_generator = function_list["generate_signals"] # Backtest our portfolio and store result in book book = portfolio.backtest_portfolio(worker=gearman_worker, job=gearman_job) ret = book.nav_to_json() return json.dumps(ret)
def task_backtest(): symbol = ['000001', '603993'] bars = bindata.BackTestData(bindata.raw) # Apply our current strategy on the chosen stock pool rfs = CurrentStrategy(symbol, bars) # specify constraints, here is the default one cons = Constraint() # specify a naive optimizer opt = NaiveOptimizer(cons) function_list = {} exec generate_signals in function_list # Create a portfolio portfolio = MarketOnClosePortfolio(symbol, bars, rfs, opt, \ initial_capital=1000000.0) exec generate_signals in function_list portfolio.strategy.sig_generator = function_list["generate_signals"] # Backtest our portfolio and store result in book book = portfolio.backtest_portfolio_external() ret = book.nav_to_json() print ret return json.dumps(ret)
# dff = pandas.DataFrame(df) # dff.plot(x='Date', y='Open') # print(df['Open']) # plt.plot(df['Date'], df['Close'], linestyle='-', linewidth=1) # plt.plot(df['Date'], df['Open'], linestyle='-', linewidth=1) # plt.legend(['Close', 'Open'], loc='upper left') # mac = MovingAverageCrossStrategy(df, short_window=100, long_window=400) signals = mac.generate_signals() print(signals) portfolio = MarketOnClosePortfolio(df, signals, initial_capital=10000) print(portfolio) \ # mavg = Series(df).rolling(window=40, center=False).mean() # mavg = pd.rolling_mean(df['Close'], 40) # mavg.plot(label='mavg') # plt.legend() # mavg = pd.rolling_mean(df['Close'], 40) # print(mavg[-10:]) # This line is necessary for the plot to appear in a Jupyter notebook # % matplotlib inline # Control the default size of figures in this Jupyter notebook # % pylab inline # pylab.rcParams['figure.figsize'] = (15, 9) # Change the size of plots