Python量化交易——分享一个五年五倍收益,年化收益率44%的多因子选股交易策略!

本文介绍了如何使用qteasy库在Python中创建一个多因子选股策略,基于Fama-French三因子模型进行股票选择,并展示了策略的实现过程、参数配置和回测结果,显示了显著的超额收益。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python量化交易,使用qteasy测试一个多因子选股交易策略

问题介绍

今天我们尝试利用qteasy来创建一个多因子选股交易策略,看看它能否给我们带来超额收益。

qteasy是本人正在开发的一个快速量化交易工具包,完全免费使用。利用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易;不仅如此,qteasy还内嵌了tushare,可以快速建立一个本地数据仓库,实现大量金融数据的快速下载、清洗、存储和快速调用。qteasy目前最新版本为v1.0.20,并且正在不断迭代中,最新版本可以通过pip安装。

python -m pip install qteasy

要获取更多信息,请访问Github项目地址项目文档

策略思想

本策略每隔1个月定时触发,根据Fama-French三因子模型对每只股票进行回归,得到其alpha值。 假设Fama-French三因子模型可以完全解释市场,则alpha为负表明市场低估该股,因此应该买入。计算市场收益率、个股的账面市值比和市值,并对后两个进行了分类, 根据分类得到的组合分别计算其市值加权收益率、SMB和HML. 对各个股票进行回归(假设无风险收益率等于0)得到alpha值.

策略的实现

在另外两篇介绍交易策略的文章中,我们仅仅使用了qteasy的内置交易策略,但是,上面的交易策略属于复杂策略,无法通过简单的内置交易策略实现,也无法通过将多个内置策略复合起来实现,因此,我们必须用到qteasy的自定义交易策略功能,才能实现。

import qteasy as qt
qt.__version__

使用qteasy自定义交易策略

qteasy提供了三种不同的策略类,便于用户针对不同的情况创建自定义策略。

  • GeneralStg: 通用交易策略类,适用于最普遍的情形
  • FactorSorter: 因子选股类,用户只需要定义出选股因子,便可以通过对象属性实现多种选股动作
  • RuleIterator: 循环规则类,用户只要针对一支股票定义选股或择时规则,则同样的规则会被循环作用于所有的股票,而且不同股票可以定义不同的参数

qteasy中的策略自定义非常简单,只需要重写两个方法即可:

  • __init__() 在此方法中定义策略的运行参数,包括运行的频率、视窗长度、使用的数据类型、可调参数数量类型等
  • realize() 在此方法中定义策略的运行逻辑:根据数据生成交易信号

在这个例子中,我们使用

import qteasy as qt
import numpy as np

def market_value_weighted(stock_return, mv, mv_cat, bp_cat, mv_target, bp_target):
    """ 根据mv_target和bp_target计算市值加权收益率,在策略中调用此函数计算加权收益率

    """
    sel = (mv_cat == mv_target) & (bp_cat == bp_target)
    mv_total = np.nansum(mv[sel])
    mv_weight = mv / mv_total
    return_total = np.nansum(stock_return[sel] * mv_weight[sel])
    return return_total


class MultiFactors(qt.FactorSorter):
    """ 开始定义交易策略
    """
    def __init__(self, pars: tuple = (0.5, 0.3, 0.7)):
    	"""交易策略的初始化参数"""
        super().__init__(
                pars=pars,  
                par_count=3,  # 策略的可调参数有三个
                par_types=['float', 'float', 'float'],  # 参数1:大小市值分类界限,参数2:小/中bp分界线,参数3,中/大bp分界线
                par_range=[(0.01, 0.99)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值