BigQuant使用文档

多因子选股策略-股票日频_new

由qxiao创建,最终由qxiao 被浏览 118 用户

策略介绍

多因子选股策略是一种简单而又广泛使用的技术分析工具,主要用于识别市场趋势的变化和生成交易信号。

主要用到以下几个因子:

pb
rank(pb)
rank(roe_avg_lf)
rank(roe_avg_ttm) 
rank(net_profit_qoq_lf)
rank(roe_avg_lf)+rank(net_profit_qoq_lf)-rank(pb) AS my_rank
roe_avg_lf
roe_avg_ttm
close
adjust_factor

策略流程

  1. 筛选条件:

    c_pct_rank(total_market_cap) > 0.20
    c_pct_rank(pe_ttm) < 0.40
    pe_ttm > 0 
    
  2. 策略回测:开盘买入,收盘卖出,回测时间为2014-01-01至2016-10-10

策略实现

输入特征模块

  • 表达式特征:

    pb rank(pb) rank(roe_avg_lf) rank(roe_avg_ttm) rank(net_profit_qoq_lf) rank(roe_avg_lf)+rank(net_profit_qoq_lf)-rank(pb) AS my_rank roe_avg_lf roe_avg_ttm close adjust_factor

  • 表达式过滤条件:

    c_pct_rank(total_market_cap) > 0.20

    c_pct_rank(pe_ttm) < 0.40

    pe_ttm > 0

\

数据抽取模块

  • 将数据抽取出来,在这当中设置起始时间为2022-01-01,结束时间为2024-04-26

BigTrader模块

  • m4”BigTrader“模块中,实现交易逻辑,依据发出信号进行买卖。
  • K线处理函数
def bigquant_run(context, data):
    import pandas as pd

    # 下一个交易日不是调仓日,则不生成信号
    if not context.rebalance_period.is_signal_date(data.current_dt.date()):
        return

    # 从传入的数据 context.data 中读取今天的信号数据
    today_df = context.data[context.data["date"] == data.current_dt.strftime("%Y-%m-%d")]
    target_instruments = set(today_df["instrument"])

    # 获取当前已持有股票
    holding_instruments = set(context.get_account_positions().keys())

    # 卖出不在目标持有列表中的股票
    for instrument in holding_instruments - target_instruments:
        context.order_target_percent(instrument, 0)
    # 买入目标持有列表中的股票
    for i, x in today_df.iterrows():
        # 处理 null 或者 decimal.Decimal 类型等
        position = 0.0 if pd.isnull(x.position) else float(x.position)
        context.order_target_percent(x.instrument, position)

https://bigquant.com/codesharev2/a73176f7-bcd3-49bc-82f1-8e68f0669f71

\

标签

多因子选股交易信号
{link}