[QUANTAXIS量化分析]三因素模型

本文介绍了基于QUANTAXIS的三因素模型策略,选用财务因子EPS、成交量因子和反转因子,通过权重加和选择高评分股票进行持仓。策略实现在2017-2018年间,选取市盈率0-20的股票,每日对因子进行排序,操作10只或20只股票。文章提及代码中EPS获取时间过长的问题,提出改进思路。
摘要由CSDN通过智能技术生成
基本原理
  • 三因素模型表达式:

    E(Rit) − Rft = βi[E(Rmt − Rft] + siE(SMBt) + hiE(HMIt)
  • 根据一篇文章,选择三个因子作测试:
    • 财务因子:EPS
    • 成交量因子:log(30日日均交易量/昨日交易量)
    • 反转因子:(ma10-ma5)/ma5
    • 综合选取这三个因子,0.3,0.4,0.3的权值加和,选取较高的股票并持仓。综合选取这三个因子,0.3,0.4,0.3的权值加和,选取较高的股票并持仓。
策略实现
  • 初始资金100万,20万无明显效果差异,时间段为2017-01-01~2018-01-01.
  • 选取市盈率0~20之间的股票,每日对三因子加和进行排序
  • 每天进行判断,选取三因子加和排名前n的股票,若已持股,继续买入,未持股则买入,已持股中有不在排名前n中的,卖出。
  • (每日操作10只股票)运行截图(忽略曲线名):
    10
  • (每日操作20只股票)运行截图(忽略曲线名):
    20
遇到的问题及改进:
  • 采用的三个因子或许还能有其他财务因子进行代表
  • 本次代码中取得EPS的时间有些过长,有点想法,等我后面改进(已改进,不必每只股票每天的eps都获取一次)
代码如下:
# coding: utf-8
# @author: lin
# @date: 2018/11/20

import QUANTAXIS as QA
import datetime
import pandas as pd
import time
import math
import matplotlib.pyplot as plt
import numpy as np

pd.set_option('max_colwidth', 5000)
pd.set_option('display.max_columns', 5000)
pd.set_option('display.max_rows', 5000)


class ThreePara:
    def __init__(self, start_time, stop_time, n_stock=10, stock_init_cash=1000000, n_days_before=1):
        self.Account = QA.QA_Account()  # 初始化账户
        self.Account.reset_assets(stock_init_cash)  # 初始化账户
        self.Account.account_cookie = 'three_para'
        self.Broker = QA.QA_BacktestBroker()
        self.time_quantum_list = ['-12-31', '-09-30', '-06-30', '-03-31']
        self.start_time = start_time
        self.stop_time = stop_time
        self.n_days_before = n_days_before
        self.stock_pool = []
        self.data = None
 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值