T/工具

# T/工具

BigQuant 提供了很多工具函数,帮助大家更好的开发策略。

定义

T.plot(df, output='display', stock=None, double_precision=4,title=None, chart_type=None, x=None, y=None,candlestick=False,panes=None, options=None)

绘制DataFrame数据到可交互的图表,支持多种图表格式,用highcharts/HighStock实现DataFrame的多种方式的可交互的可视化

参数:

  • df (DataFrame|Series|dict) – 输入数据,一般是DataFrame类型,索引对应x轴,数据列用作y轴数据;如果不为DataFrame,数据将直接传给Highcharts,可参考Highcharts文档
  • stock (boolean) – 是否使用Highstock。默认为None,会根据df.index类型来判断,如果为时间类型,则使用Highstock,否则使用Highcharts
  • title (str) – 标题,也可以通过 options={‘title’: {‘text’: ‘Your Title Here’}} 设置
  • chart_type (str) – 图表类型,也可以通过 options={‘chart’: {‘type’: ‘column’}} 设置,支持所有 Highcharts图表类型
  • x (str) – x轴对应的列,默认为None,表示使用index
  • y (str list) – y轴数据列,默认为None,表示使用所有数据列
  • double_precision (float) – 浮点数输出精度,默认为4,表示4位小数
  • options (dict|function) – 图表设置,dict或者回调函数 (参数 df_options,为df转化后的highcharts输入对象),参考Highcharts文档
  • candlestick (boolean) – 是否绘制蜡烛图,需要输入数据有 open、high、low、close四列
  • panes (list) – 分栏显示,[[‘col1’, ‘col2’], [‘col3’, ‘col4’, ‘50%’], ..]

定义

T.parallel_map(run, parameters_list, max_workers=2, remote_run=False, silent=False)

并行运行任务,可以对可视化策略进行批量运行,产生策略池,并可以查看策略池中每个策略的各个模块输出结果。

参数:

  • run (function) – 运行任务函数
  • parameters_list (list) – 参数列表
  • max_workers (int) – 并行数
  • remote_run (boolean) – 任务打包到服务器运行,不在个人容器运行
  • silent (boolean) – 输出日志

使用示例:

def bigquant_run(bq_graph, inputs):
    features =['pe_ttm_0', 'shift(close_0,5)/close_0','mean(close_0,10)/close_0']

    parameters_list = []

    for feature in features:
        parameters = {'m3.features':feature}
        parameters_list.append({'parameters': parameters})

    def run(parameters):
        try:
            print(parameters)
            return g.run(parameters)
        except Exception as e:
            print('ERROR --------', e)
            return None

    results = T.parallel_map(run, parameters_list, max_workers=2, remote_run=False, silent=False)

    return results

定义

T.norm(list)

T.norm一般的量化策略在排序算法中,采取的是等权重的资金分配方式,但对于AI排序算法,排在前面的股票分配更多的资金,排在后面的股票分配更少的资金较为合理,T.norm就是解决该应用场景。

参数:

  • list (list) – 列表,列表长度代表股票池数量

使用示例:

stock_num = 3 # 假设买入排序前三只股票
weight = T.norm([1 / math.log(i + 2) for i in range(0, stock_num)])
print(weight)

输出:
[0.46927872602275644, 0.29608191096586517, 0.23463936301137822]

stock_num = 5 # 假设买入排序前三只股票
weight = T.norm([1 / math.log(i + 2) for i in range(0, stock_num)])
print(weight)

输出:
[0.33916020527361607, 0.2139862647345275, 0.16958010263680803, 0.14606834984270645, 0.13120507751234176]