同花顺Supermind量化交易 风险控制建模-CAPM模型的应用

本文介绍了如何运用资本资产定价模型(CAPM)构建量化交易策略。通过回测历史行情,选取创业板指数成分股,计算股票的α值,选择被低估的股票进行投资。策略实现包括获取数据、线性回归计算α、按α排序并选取股票。回测结果显示,策略在2021年至2022年间的表现。

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

提起资本资产定价模型,大家可能都有学习过,那么本篇内容主要向大家讲述资本资产定价模型的实际应用,我们将其构建成量化策略,并在历史行情中回测。

import pandas as pd
import numpy as np
from scipy import stats
# 初始化函数,全局只运行一次
def init(context):
    g.n = 20 #设置最大持仓数量为20只股票
    g.longday = 60 #设置数据长度
    run_monthly(handle_bar,date_rule=1)
    #将handle_bar交易函数设置为定时运行:每个月第一个交易日
    context.stock = []#储存上期的股票池
    g.settock='399006.SZ'
    set_benchmark(g.settock)

## 开盘时运行函数
def handle_bar(context, bar_dict):
    #执行选股函数:CAPM(),并将结果导入,该股票列表是需要买入的个股。
    needstock_list = CAPM()
    #获取上期持仓个股
    holdstock_list = list(context.stock)
    #确定本期需要卖出的个股
    sell_list = list(set(holdstock_list)-set(needstock_list))
    #执行卖出操作,运用for循环,逐个操作。
    for s in sell_list:
        order_target(s,0)
    #确定本期需要买入的个股,其余即为继续持仓的个股
    buy_list=[]
    for i in needstock_list:
        if i in holdstock_list:
            pass
        else:
            buy_list.append(i)
    #确定可用资金,平分分配至需买入的个股
    n=len(buy_list)
    cash=context.portfolio.available_cash/n
    #执行买入操作
    for s in range(0,n,1):
        stock=list(buy_list)[s]
        order_target_percent(stock,0.1)
    #操作完毕,将选股结果放到上期股票池储存变量中,以备下次使用。
    context.stock = frozenset(needstock_list)

#=========选股函数===========
def CAPM():
    date=get_last_datetime().strftime('%Y%m%d')
    stock_list=stock(date)
    ret=get_price(stock_list, None, date, '1d', ['quote_rate'], False,  'pre', g.longday, is_panel=1)['quote_rate']
    ret=(ret/100-0.04/252)*100
    ret_jz=get_price('000300.SH', None, date, '1d', ['quote_rate'], False,  'pre', g.longday, is_panel=1)['quote_rate']
    ret['ret_jz']=(ret_jz/100-0.04/252)*100
    #进行线性回归
    y=list(ret['ret_jz'])
    df=pd.DataFrame(columns=['alpha'])
    for i in ret.columns:
        x = list(ret[i])
        beta, stockalpha, r_value, p_value, slope_std_error
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值