请教回测中历史数据context.start_date、end_date的理解


(722tzz) #1

在大家编写的策略里,获取历史数据的时候一般都像下边这么写:

 def prepare(context):
    # 获取股票代码
    instruments = D.instruments()

    start_date = context.start_date
    end_date = context.end_date

    market_cap_data = D.history_data(instruments,context.start_date,context.end_date,
              fields=['market_cap','amount'])

我不太能够理解在回测中context.start_date、end_date应当如何理解?
如果context.start_date等于

m=M.trade.v3( 
    instruments=D.instruments(),
    start_date= '2013-01-01', 
    end_date='2017-11-08',

中的start_date、end_date,那是不是引入了未来函数?


(722tzz) #2

哦,明白了
后边用context.daily_buy_stock = history_data.groupby('date').apply(seek_symbol)
对不同交易日进行了分组


(小Q) #3

你好,看你的策略是传统量化策略。

引入未来函数是指:在当前的时间点能够获得未来的数据进行决策。

在M.start_date 函数中有两个时间的参数:start_date和end_date,这两个参数只是决定了策略回测的开始时间和结束时间,没有未来函数。

关于回测引擎的机制可以参考:BigQuant回测机制