back_test_date_start = (datetime.datetime.strptime(date_seq_start, '%Y-%m-%d')).strftime('%Y%m%d') back_test_date_end = (datetime.datetime.strptime(date_seq_end, "%Y-%m-%d")).strftime('%Y%m%d') df = pro.trade_cal(exchange_id='', is_open=1, start_date=back_test_date_start, end_date=back_test_date_end) date_temp = list(df.iloc[:, 1]) date_seq = [(datetime.datetime.strptime(x, "%Y%m%d")).strftime('%Y-%m-%d') for x in date_temp] print(date_seq) #开始模拟交易 index = 1 day_index = 0 for i in range(1,len(date_seq)): day_index += 1 # 每日推进式建模,并获取对下一个交易日的预测结果 for stock in stock_pool: try: ans2 = ev.model_eva(stock,date_seq[i],90,365) # print('Date : ' + str(date_seq[i]) + ' Update : ' + str(stock)) except Exception as ex: print(ex) continue # 每5个交易日更新一次配仓比例 if divmod(day_index+4,5)[1] == 0: portfolio_pool = stock_pool if len(portfolio_pool) < 5: print('Less than 5 stocks for portfolio!! state_dt : ' + str(date_seq[i])) continue pf_src = pf.get_portfolio(portfolio_pool,date_seq[i-1],year) # 取最佳收益方向的资产组合 risk = pf_src[1][0] weight = pf_src[1][1] Filter.filter_main(portfolio_pool,date_seq[i],date_seq[i-1],weight)
def daily_trade(trade_date): for stock in Utils.stock_pool: try: ans2 = ev.model_eva(stock, trade_date, 90, 365) except Exception as ex: print('ERROR:', ex)