首页 > 其他分享 >量化交易:多因子选股结合布林带择时

量化交易:多因子选股结合布林带择时

时间:2024-05-20 19:19:06浏览次数:24  
标签:林带 股票 list 择时 context 排名 选股 多因子

哈喽,大家好,我是木头左!

多因子选股策略是一种基于多个财务指标来筛选股票的方法。这种策略认为,通过综合考虑多个因素,可以更全面地评估一家公司的价值和盈利潜力。 感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共同交流!

策略的基本原理

在本策略中,我们选择了市值、利润、现金流和负债四个指标来计算股票的排名。市值反映了公司的规模,利润代表了公司的盈利能力,现金流显示了公司的流动性,而负债则揭示了公司的财务风险。

股票池的构建

我们的目标是选出排名靠前的二十只股票,构建我们的股票池。具体步骤如下:

  • 数据获取:收集所有股票的市值、利润、现金流和负债数据。
  • 指标标准化:对每个指标进行标准化处理,消除不同量纲的影响。
  • 权重分配:为每个指标分配权重,市值40%,利润30%,现金流20%,负债10%。
  • 综合评分:根据权重计算每只股票的综合得分。
  • 排名筛选:选择得分最高的前二十只股票。

布林带择时:把握买卖的最佳时机

布林带是一种基于价格波动性来构建交易区间的技术分析工具。它可以帮助我们识别市场的过度买入或卖出状态,从而找到买卖的时机。

策略的基本原理

布林带由中轨(MB)、上轨(UB)和下轨(LB)组成,其中:

  • 中轨(MB):通常是20日的移动平均线。
  • 上轨(UB):中轨加上两倍的标准差。
  • 下轨(LB):中轨减去两倍的标准差。

买卖时机的判断

在本策略中,我们制定了以下规则:

  • 卖出规则:当持有股票,且股价穿过布林带中轨时,卖出股票。
  • 买入规则:当不持有股票,且股价穿过布林带上界时,买入股票。

聚宽平台上的Python实现

market_open(context) 函数被设计为每月开盘时运行一次,根据上一交易日的因子值进行调仓。

def market_open(context):
    # 卖出当前持有的所有股票,进行资金的重新分配
    bulk_sell(context)
    # 清空当前的持仓列表,准备重新选股
    context.own_list = []
    # 获取沪深300指数成分股作为潜在的股票池
    universe = get_index_stocks('000300.XSHG')

多因子数据获取与处理

  • 使用 get_fundamentals 函数获取股票池中股票的市值、市盈率(PE)、净利润同比增长率和净资产收益率(ROE)等财务指标。
  • 选择沪深300指数(‘000300.XSHG’)作为股票池,即 universe = get_index_stocks(‘000300.XSHG’)。
df = get_fundamentals(query(
    valuation.code, valuation.market_cap, valuation.pe_ratio, 
    indicator.inc_net_profit_year_on_year, indicator.roe
).filter(
    valuation.code.in_(universe), valuation.pe_ratio > 0, 
    indicator.inc_net_profit_year_on_year > 0
))
# 设置股票代码为索引,以便于后续处理
df.set_index(['code'], inplace=True)

因子加权与排名

  • 对市盈率进行升序排名,对净利润同比增长率和净资产收益率进行降序排名,然后将这些排名相加得到最终的因子值。
  • 排名(rank)是一种去量纲的方法,使得不同单位的因子可以相加。
# 对市盈率进行升序排名,对净利润同比增长率和净资产收益率进行降序排名
final_factor = df['pe_ratio'].rank(ascending=True) + \
                df['inc_net_profit_year_on_year'].rank(ascending=False) + \
                df['roe'].rank(ascending=False)

持仓股票列表的确定

根据最终的因子值,选取排名前20的股票作为目标持仓。

# 选取排名前20的股票作为目标持仓
stock_list = final_factor.sort_values(ascending=True)[:20].index.tolist()
# 更新上下文的持仓列表
context.list = stock_list

布林带择时策略

开盘时运行布林带择时策略,boll(context) 布林带的实现参考量化交易:布林带突破策略的python实现

def market_open_bolling(context):
    # 计算每只股票平均可使用的资金
    context.cash = context.portfolio.cash / len(context.list)
    for symbol in context.list:  # 遍历股票池
        context.symbol = symbol  # 设置当前股票
        # 调用布林带择时函数(未提供实现)
        boll(context)

这段代码首先构建了一个包含前二十只高盈利潜力股票的股票池,然后使用布林带择时来决定买卖时机。在每个交易日开始前,它会根据最新的财务数据更新股票池,并调整仓位。在交易时段内,它会实时监控股票价格,根据布林带的变化来执行买卖操作。回测结果如下:

结语

多因子选股结合布林带择时的量化交易策略,是一种综合了基本面分析和技术分析的方法,所有的选股和择时都可以结合起来,用效果更佳。 市场有风险,交易需谨慎。 感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共同交流!

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

标签:林带,股票,list,择时,context,排名,选股,多因子
From: https://www.cnblogs.com/bigleft/p/18202647

相关文章

  • el-date-picker选择时间只能选择到分
    说明要求el-date-picker选择日期时间时,只允许选择到分,并且分的step=5,即只能选择0、5、10、15、...实现要点通过value-format="yyyy-MM-ddHH:mm"format="yyyy-MM-ddHH:mm"控制只选择到分通过:disabled-minutes="disabledMinutes"禁用某些分钟,并且通过css样式将这些......
  • 量化交易:财务选股RSRS择时的策略
    哈喽,大家好,我是木头左!引言本文将介绍一种结合财务指标选股和RSRS(Risk-AdjustedReturntoStrengthRatio)择时的策略,旨在帮助投资者在复杂的市场环境中做出更明智的决策。感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共同交流!策略原理财务指标选股财务指标选股是一种......
  • 2024-05-05 通达信选股 双黄连
     黄金阴:=O>REF(C,1)ANDC<OANDV<REF(V,1)*SL2;黄金阳:=C>OANDO<REF(C,1)ANDV<REF(V,1)*SL1ANDC<REF(C,1);COUNT(黄金阳,1)>=1ANDCOUNT(黄金阴,5)>=1;-------------------------------------------------------------------------------------......
  • Python量化交易系统实战--设计交易策略:选股策略
     作者:麦克煎蛋  出处:https://www.cnblogs.com/mazhiyong/转载请保留这段声明,谢谢! 这一节主要是了解基于“动量因子”的选股策略。动量因子指的是股票在一段周期内的涨跌幅度,其本质是追涨杀跌。而选股策略,指的是基于这个因子的表现进行股票筛选,以及买入、卖出的操作。该......
  • Python量化交易系统实战--设计交易策略:择时策略
     作者:麦克煎蛋  出处:https://www.cnblogs.com/mazhiyong/转载请保留这段声明,谢谢! 一、双均线策略1、什么是均线2、双均线策略  3、生成交易信号简单的根据金叉和死叉生成交易信号:defma_strategy(data,short_window=5,long_window=20):"""双均线策......
  • 通达信条件预警使用教程(引用选股公式盘中实时监控)
    步骤汇总:第1步:设置预警范围第2步:设置选股公式(预警公式)第3步:运行效果以下是详细步骤:第一步:设置预警范围 单击通达信右下角条件预警图标,单击设置,设置已有公式,过程如下:  注意事项:预警对电脑配置要求高,低配置的电脑不宜监控太多目标,建议只监控备选,此处我选择的是我之前......
  • 搜索的技巧VS选股
    今天在补充论文的文献部分,发现只有作者和年份如李晨(2003),本以为利用这两个数据查找引用的文献会很麻烦,没想到在百度学术上直接搜索李晨(2003)就出来了对应的文章。令我没想到的是,我本以为百度学术上搜索会和百度搜索与一样搜出一大堆无关的东西,或者叫李晨的写的文章很多,给我搜出......
  • 怎样选出绩优股?绩优股选股公式+人工复选(十步排雷)
    原始知识来源: https://xueqiu.com/9561240987/170507893 根据知识内容,自写指标,初选ROE优质企业。F10查看ROE: 十步排雷:排雷第1步:非金融行业要排除掉资产负债比率超过50%的或超过行业平均水平的,或者加权净资产收益率逐年降低,资产负债比率逐年走高的。为什么金融行业需要区......
  • MySQL如何选择时间类型
    日常业务中经常需要记录时间,如订单生成时间、记录保存时间、更新时间等。如何选择MySQL表的时间字段类型呢?一句话,看业务,具体是看业务是否会跨时区。MySQL的日期类型可以用于记录日期的格式有:Datatype实例备注DATE'0000-00-00'日期(年月日)TIME'00:00:00'......
  • 通达信骑牛找马选股指标公式源码附图
    {通达信骑牛找马选股指标公式源码附图}VAR1:=35;VAR2:=45;VAR3:=REF(CLOSE,1);VAR4:=SMA(MAX(CLOSE-VAR3,0),7,1)/SMA(Abs(CLOSE-VAR3),7,1)*100;VAR5:=SMA(MAX(CLOSE-VAR3,0),7,1)/SMA(ABS(CLOSE-VAR3),7,1)*100;牛股:=SMA(MAX(CLOSE-VAR3,0),7,1)/SMA(ABS(CLOSE-VAR3),......