繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

利用机器学习获取股票的alpha,beta系数

作者/jjdsad 2019-05-10 02:16 0 来源: FX168财经网人物频道

资本资产定价模型(CAPM)

投资的收益可以由收益中的非风险部分、受整个市场影响的部分,以及误差部分三者之和组成,通过资本资产定价模型(CAPM)可以得出α和β,然后确定某金融商品的风险程度:

y?i=α β(x?i) c

其中,y为某种金融商品预期收益率;截距α为收益中非系统风险部分,是超额收益;斜率β为是系统风险部分;c为误差项,即残余收益(随机因素产生的剩余收益);x为整个市场的预期总体收益率;i为无风险收益。

alpha,beta系数

CAPM模型中的α,β即为alpha,beta系数:

  • alpha系数是指一个人在操作某一投资中所获得的超出指数或基准回报的那部分收益,表示大盘不变时个股的涨跌幅度,表示一定程度的固定收益。
  • beta系数是用以度量一项资产系统风险的指针,是用来衡量一种证券或一个投资组合相对总体市场的波动性(volatility)的一种风险评估工具。

利用机器学习获取股票的alpha,beta系数

本文利用JQData的本地sdk和python的sklearn包,实现了获取任意时间段内的任意一组股票相对于任意一种指数的alpha,beta系数的方法,并封装成一个函数。代码如下:

from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
from jqdatasdk import *


'''
函数参数:
    stock_code:股票代码,可以是str类型的某个代码,也可以是str类型的代码列表
    index:指数代码,str类型
    start_date, end_date:起止时间,str类型,例如:'2019-4-25'
    i:无风险年化收益率,float类型,例如:3%的年化要写成0.03
返回值:dataframe,行索引是股票代码,列索引是alpha,beta
'''
def ab(stock_code, index, start_date, end_date, i):
    if type(stock_code) == str:
        return ab([stock_code], index, start_date, end_date, i)
    else:
        # 将年化收益率转化为日收益率,一年按250个交易日计算
        i = pow(i 1, 1/250) - 1
        # 获取股票和指数的close,pre_close
        auth(id, password) # 登录JQData,可自行修改id, password
        stock_daily = get_price(stock_code, start_date=start_date, end_date=end_date, frequency='daily', fields=['close', 'pre_close'])
        index_daily = get_price(index, start_date=start_date, end_date=end_date, frequency='daily', fields=['close', 'pre_close'])

        # 构造指数的收益率
        x = np.array((index_daily['close'] - index_daily['pre_close'])/index_daily['pre_close'] - i)
        x = x.reshape(len(x), 1)

        # alpha,beta结果数组
        ab_list = []
        for stock in stock_code:
            # 构造股票的收益率
            pre_close_series = stock_daily['pre_close'][stock]
            close_series = stock_daily['close'][stock]
            y = np.array((close_series-pre_close_series)/pre_close_series - i)
            y = y.reshape(len(y), 1)

            # 线性回归
            line_reg = LinearRegression()
            # 训练数据集,训练完成后,参数会保存在对象line_reg中
            line_reg.fit(x, y)
            # line_reg.intercept_为截距,就是w0,line_reg.coef_为其他参数,coef的全拼为coefficient
            ab_list.append([line_reg.intercept_[0], line_reg.coef_[0][0]])

        return pd.DataFrame(data=ab_list, index=stock_code, columns=['alpha', 'beta'])

测试代码:

stock_code = ['000001.XSHE', '000002.XSHE', '000001.XSHG']
# stock_code = '000001.XSHE'
print(ab(stock_code, '000001.XSHG', '2018-1-1', '2018-12-31', 0.03))

结果:

                    alpha      beta
000001.XSHE  2.601443e-04  1.265507
000002.XSHE  1.025757e-03  1.431330
000001.XSHG  8.673617e-19  1.000000

附:

关于JQData: JQData

关于sklearn包:sklearn

关于LinearRegression:LinearRegression

分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2144文章4145粉丝45

    暂无个人简介信息

  • 梁孟梵

    人气2152文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 指导老师

    人气1856文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2296文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 刘钥钥1

    人气2016文章3119粉丝34

    专业从事现货黄金、现货白银模似实盘操作分析指导

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2320文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4728文章8329粉丝118

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...