多因子选股策略-股票日频_new
由qxiao创建,最终由qxiao 被浏览 145 用户
策略介绍
多因子选股策略是一种简单而又广泛使用的技术分析工具,主要用于识别市场趋势的变化和生成交易信号。
主要用到以下几个因子:
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
-
策略回测:开盘买入,收盘卖出,回测时间为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
\