回测框架里面的买入操作有部分股票未买入
由bqecjrmk创建,最终由bqecjrmk 被浏览 20 用户
代码如下:
def m_handle_data_bigquant_run(context, data):
# 每5个交易日调仓一次
if context.trading_day_index % context.holding_days != 0:
return
# 获取当前日期
current_date = data.current_dt.strftime("%Y-%m-%d")
print(f'日期:{current_date}')
# 获取当日数据
current_day_data = context.data[context.data["date"] == current_date]
#检测股票数量是否过少
if len(current_day_data)<20:
print(f'备选股票少于20支,日期{current_date}')
# 取前10只
current_day_data = current_day_data.iloc[context.cut_size:context.target_hold_count+context.cut_size]
# 获取当日目标持有股票
target_hold_instruments = set(current_day_data["instrument"])
print(f'目标股票:{target_hold_instruments}')
# 获取当前已持有股票
current_hold_instruments = set(context.get_account_positions().keys())
print(f'持仓股票:{current_hold_instruments}')
# 获取要卖的股票
sell_set = current_hold_instruments - target_hold_instruments
# 获取要买的股票
buy_set = target_hold_instruments - current_hold_instruments
print(f'buy_set:{buy_set}')
print(f'sell_set:{sell_set}\n')
# 卖出不在目标持有列表中的股票
for instrument in sell_set:
context.order_target_percent(instrument, 0)
# 买入目标持有列表中的股票
for instrument in buy_set:
context.order_target_percent(instrument, context.target_percent_per_instrument)
问题如下:
上一轮的buy_set 里面有002336,那么下一周期的持仓股票里面应该就有002336,实际却没有