Warning: file_exists(): open_basedir restriction in effect. File(/www/wwwroot/com.xiximiao.oa/com.cmstop/public/www/wp-content/db.php) is not within the allowed path(s): (/www/wwwroot/com.xiximiao.oa/com.cmstop/public/www/:/tmp/:/proc/:/var/log/nginx/:/www/wwwroot/com.xiximiao.oa/com.cmstop/public/:/www/wwwroot/com.xiximiao.oa/com.cmstop/vendor/:/www/wwwroot/com.xiximiao.oa/com.cmstop/ppk/) in /www/wwwroot/com.xiximiao.oa/com.cmstop/public/www/wp-includes/load.php on line 707
2373 多因子财务质量轮动策略 稳健回撤小,无未来函数 43393 » 轻知量化 QMT、PTrade、聚宽策略分享交流平台

2373 多因子财务质量轮动策略 稳健回撤小,无未来函数 43393

本策略为多因子财务质量轮动策略,核心逻辑如下:
  1. 财务健康筛选体系
  • 第一层过滤:剔除上市不满 3 年、ST/*ST / 退市、涨跌停及停牌股票
  • 资产负债率筛选:保留负债率最低的 70% 股票(total_liability/total_assets)
  • 资产质量筛选:剔除不良资产比率(应收 / 商誉 / 存货等)处于前 10% 和后 10% 的股票
  • 运营效率筛选:选取优质资产周转率(营业收入 / 优质资产)前 75% 的股票

 

  1. 盈利能力动量筛选
  • 计算过去 4 个季度 ROA(资产收益率)相对均值的增长幅度
  • 选取 ROA 改善幅度最大的前 20% 股票
  • 最终按市净率 (0.7<PB<3) 升序排列选取前 10 支

 

  1. 仓位管理机制
  • 固定持有 10 支股票,每月倒数第 4 个交易日调仓
  • 等仓位分配(每支占可用资金 10%)
  • 严格卖出不符合条件的持仓
  • 保留现金管理工具(货币基金 511880)
  1. 风险控制
  • 通过多维度财务指标分散风险
  • 持仓分散避免单一个股风险
  • 排除高负债、高商誉等风险因子
  • 市净率双重过滤控制估值风险

策略代码

# 稳健趋势策略,回测小,无未来函数

import jqdata
from jqlib.technical_analysis  import *
from jqdata import *
import warnings

# 初始化函数
def initialize(context):
    # 滑点高(不设置滑点的话用默认的0.00246)
    set_slippage(FixedSlippage(0.02))
    # 国证A指数作为基准  
    set_benchmark('399317.XSHE') 
    # 用真实价格交易
    set_option('use_real_price', True)
    set_option("avoid_future_data", True)
    # 过滤order中低于error级别的日志
    log.set_level('order', 'error')
    warnings.filterwarnings("ignore")

    # 选股参数
    g.stock_num = 10 # 持仓数
    g.position = 1 # 仓位
    g.bond = '511880.XSHG'
    # 手续费
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0005, close_commission=0.0005, min_commission=5), type='stock')
     
    # 设置交易时间
    #run_weekly(my_trade, weekday=4, time='9:45', reference_security='000852.XSHG')
    run_monthly(my_trade, monthday=-4, time='11:30', reference_security='000852.XSHG')



# 开盘时运行函数
def my_trade(context):
    # 获取选股列表并过滤掉:st,st*,退市,涨停,跌停,停牌
    check_out_list = get_stock_list(context)
    log.info('今日自选股:%s' % check_out_list)
    adjust_position(context, check_out_list)


# 2-2 选股模块
# 选出资产负债率后20%且大于0,优质资产周转率前20%,roa改善最多的股票列表

get_stock_list选股模块解锁后查看:

def adjust_position(context, buy_stocks):
    #order_value(g.bond,context.portfolio.available_cash)
    for stock in context.portfolio.positions:
        if stock not in buy_stocks:
            order_target(stock, 0)
        
    #
    position_count = len(context.portfolio.positions)
    if g.stock_num > position_count:
        value = context.portfolio.cash * g.position / (g.stock_num - position_count)
        for stock in buy_stocks:
            if stock not in context.portfolio.positions:
                order_target_value(stock, value)
                if len(context.portfolio.positions) == g.stock_num:
                    break
                
                
2025-02-23
⚠️
本站资源大多来自网络,仅供网友学习交流,未经作者或上传书面授权,请勿作他用。
站长 vx: xiangyin615 或者 留言反馈 ,我们将尽快处理。
Notice: When you of the legal rights be violate, please stir to vx: xiangyin615
个人中心
购物车
优惠劵
搜索