使用Python轻松计算股票的Beta系数

本文包含用Python计算股票beta系数并对其进行排序存入Excel的完整详细流程

一、Beta系数介绍
β系数也称为贝塔系数(Beta coefficient),是一种风险指数,用来衡量个别股票或股票基金相对于整个股市的价格波动情况。β系数是一种评估证券系统性风险的工具,用以度量一种证券或一个投资证券组合相对总体市场的波动性,在股票、基金等投资术语中常见。
贝塔系数是统计学上的概念,它所反映的是某一投资对象相对于大盘的表现情况。其绝对值越大,显示其收益变化幅度相对于大盘的变化幅度越大;绝对值越小,显示其变化幅度相对于大盘越小。如果是负值,则显示其变化的方向与大盘的变化方向相反;大盘涨的时候它跌,大盘跌的时候它涨。由于我们投资于投资基金是为了取得专家理财的服务,以取得优于被动投资于大盘的表现情况,这一指标可以作为考察基金经理降低投资波动性风险的能力。

二、Beta系数计算公式

其中,rm为该股票所在市场整体的涨跌幅,ra为该支股票自身的涨跌幅,Cov(ra,rm)为两者的协方差。
分母部分则为该支股票自身涨跌幅的标准差。

三、协方差的意义和计算公式
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
所以协方差的计算公式可以由方差的计算公式来推出。
方差计算公式为:

由此推知协方差计算公式为:

由于Python中并没有直接计算协方差的公式,所以我们可以对协方差公式进行一定的转化。
我们可以发现X,Y的协方差恰好等于X,Y的标准差的乘积,而Python当中正好有直接计算标准差的方法。

四、代码实现(完整代码在最后)
首先,为了抓取股票的数据,我们需要先引入一个非常好用的免费的tushare库(详细操作步骤参见我上一篇文章)
官网网址:https://tushare.pro/register?reg=427001

import tushare as ts
ts.set_token('你在官网个人中心中拿到的token')
pro = ts.pro_api()

抓取所有股票的基本信息并设定基本的输入参数:

stock_info = pro.stock_basic()
startdate: str = input('请输入开始日期\n')
enddate: str = input('请输入结束日期\n')

抓取上证指数和深证指数的数据

SH_code = '000001.SH'
SZ_code = '399300.SZ'
SH = pro.index_daily(ts_code=SH_code,start_date=startdate,end_date=enddate)
SZ = pro.index_daily(ts_code=SH_code,start_date=startdate,end_date=enddate)

分别计算它们涨跌幅的标准差和方差

SH_std = SH.std()
SH_var = SH.var()
SZ_std = SZ.std()
SZ_var = SZ.var()

遍历所有股票并提取出每只股票的日线行情

for i in range(0,len(stock_info)):if i > 0 and i % 120 == 0:time.sleep(60)code = stock_info.at[i,'ts_code']change = pro.daily(ts_code=code,start_date=startdate,end_date=enddate)

提取出每只股票涨跌幅的标准差,根据它们的股票代码判断它们所在的市场,然后运用beta系数的公式计算出每只股票的beta系数

if change.empty == False:std = change.std()change_std = std.pct_chgif code[7:] == 'SH':cov = SH_std.pct_chg * change_stdbeta = cov / SH_var.pct_chgelif code[7:] == 'SZ':cov = SZ_std.pct_chg * change_stdbeta = cov / SZ_var.pct_chgbeta_value[stock_info.at[i,'ts_code']] = (beta,stock_info.at[i,'name'])else:continue

这里需要注意一点,由于个别股票的日线行情有可能提取不到,所以这里需要加一个if进行判断

最后对beta系数进行从高到低排序,存入excel表中

rank = sorted(beta_value.items(),key=lambda x:x[1],reverse=True)
for i in range(0,len(rank)):rank_code.append(rank[i][0])rank_name.append(rank[i][1][1])rank_beta.append(rank[i][1][0])
data={'股票代码':rank_code,'股票名称':rank_name,'beta':rank_beta,
}
df = DataFrame(data)
df.to_excel('贝塔系数.xlsx')

完整代码如下:

import tushare as ts
from pandas import DataFrame
import time
ts.set_token('你的token')
pro = ts.pro_api()
stock_info = pro.stock_basic()
startdate: str = input('请输入开始日期\n')
enddate: str = input('请输入结束日期\n')
SH_code = '000001.SH'
SZ_code = '399300.SZ'
SH = pro.index_daily(ts_code=SH_code,start_date=startdate,end_date=enddate)
#print(SH)
SH_std = SH.std()
SH_var = SH.var()
#print(SH_std.pct_chg)
SZ = pro.index_daily(ts_code=SH_code,start_date=startdate,end_date=enddate)
SZ_std = SZ.std()
SZ_var = SZ.var()
beta_value = {}
rank=[]
rank_code=[]
rank_beta=[]
rank_name=[]
for i in range(0,len(stock_info)):if i > 0 and i % 120 == 0:time.sleep(60)code = stock_info.at[i,'ts_code']change = pro.daily(ts_code=code,start_date=startdate,end_date=enddate)if change.empty == False:std = change.std()change_std = std.pct_chgif code[7:] == 'SH':cov = SH_std.pct_chg * change_stdbeta = cov / SH_var.pct_chgelif code[7:] == 'SZ':cov = SZ_std.pct_chg * change_stdbeta = cov / SZ_var.pct_chgbeta_value[stock_info.at[i,'ts_code']] = (beta,stock_info.at[i,'name'])else:continue
rank = sorted(beta_value.items(),key=lambda x:x[1],reverse=True)
print(rank)
for i in range(0,len(rank)):rank_code.append(rank[i][0])rank_name.append(rank[i][1][1])rank_beta.append(rank[i][1][0])
data={'股票代码':rank_code,'股票名称':rank_name,'beta':rank_beta,
}
df = DataFrame(data)
df.to_excel('贝塔系数.xlsx')

如何用Python快速计算股票的Beta系数并排序存入Excel表中相关推荐

  1. Python爬虫学习之爬取豆瓣音乐Top250存入Excel表格中

    前言 目标网站:https://music.douban.com/top250 任务: 爬取豆瓣音乐Top250的歌曲名 爬取豆瓣音乐Top250的歌曲对应的表演者.发行时间和音乐流派(分别对应下图斜 ...

  2. Python快速计算函数耗时timeit

    文章目录 问题描述 解决方案 魔法命令 `%%timeit` timeit 模块 参考文献 问题描述 Python 快速计算函数耗时 import timedef f():time.sleep(2) ...

  3. 如何用Python快速画一只可爱的小猪佩奇

    如何用Python快速画一只可爱的佩奇 代码搬运工: Monster12138/Peppa-Pig: 使用python turtle库画一只小猪佩奇 https://github.com/Monste ...

  4. python 矩阵运算 for循环_如何用 Python 科学计算中的矩阵替代循环

    展开全部 因为在Mathematica中使用循环确实是低效的.32313133353236313431303231363533e78988e69d8331333361313961..... 深层次的原 ...

  5. 名词解释 算法的有限性_欲借助 FFT 算法快速计算两有限长序列的线性卷积,则过程中要调用 ( ) 次 FFT 算法_学小易找答案...

    [单选题]计算 N=2 L ( L 为整数)点的按时间抽取基 -2FFT 需要 ( ) 级蝶形运算 [单选题]Les étudiants chinois, une fois arrivés en Fr ...

  6. 如何在Excel表中快速提取想要的数据

    如何在Excel表中快速提取数据 目录 如何在Excel表中快速提取数据 1.例如:需要提取右侧表格中蔬菜二月计划与销售数量 2.在白菜计划数量的单元格中输入函数公式=VLOOKUP("*& ...

  7. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  8. code的bootstrap如何有提示 vs_如何用DataFocus对Excel表中数据进行分析?

    常见的数据分析方法有 结构分析.对比分析.平均分析和交叉分析等等.那么,如何用DataFocus进行数据分析?如何对Excel表中数据进行分析呢?接下来,我们先简单看下对Excel表中数据进行结构分析 ...

  9. 两个年月日怎么相减_(excle可以计算日期差值吗)excel表中,两个日期相减如何得出相差年月...

    如何使用excel函数计算两个日期参数的差值 "使用excel函数计算两期参数的差值"的操骤是: 1.以Excel 2016为例,打开Excel工作表: 2.由已知条件可知,需要根 ...

  10. python怎么导入sql数据库,##使用python将excel表中数据导入sql server数据库

    如何用python将excel数据导入到postgresql数据库中 把excel表格另存为csv文件 python将exce文件含有多个sheet同时l导入sqlserver数据库 需要使用xlrd ...

最新文章

  1. Python两数之和,并返回下标
  2. 总体经济拉动新引擎-农业大健康·张咏:疫情后谋定乡村振兴
  3. ABAP从数据库中删除行
  4. tf.truncated_normal
  5. 操作系统01_进程和线程管理
  6. Flink专题-Source
  7. 【卡法电子商务】-常用手机屏幕尺寸 ★★★★★
  8. SpringBoot Mybatisplus 多数据源使用
  9. cocos2d JS 源生js实现each方法
  10. 批量插入测试数据的存储过程
  11. poj3580:SuperMemo(块状链表/Splay)
  12. MMO 游戏中使用多核
  13. Gos —— 搭建基础环境
  14. usb4java android,桌面java应用程序通过USB复制和传输android数据
  15. JavaCV音视频开发宝典:JavaCV实现mp3音频直播FM在线电台服务,无需流媒体服务,浏览器原生audio标签直接播放mp3,支持rtsp/rtmp/flv/hls/本地音视频源直接转码到mp3
  16. 测绘资质对企业单位的作用和影响
  17. Spring注解解析及工作原理、自定义注解
  18. 基于FPGA的波、幅、频、相可调DDS信号发生器的设计
  19. 均值滤波器类型_图像处理基础(3):均值滤波器及其变种
  20. 201619101025刘洋

热门文章

  1. 工业企业成本费用的核算方法
  2. 产品读书《用户力:需求驱动的产品、运营与商业模式》
  3. Windows 10微软应用商店打不开问题解决方案
  4. 千锋云计算毕业设计论文:论文设计任务书
  5. EAUML日拱一卒-活动图::活动分区
  6. 关心国事-21世纪经济报道:周鸿祎人治雅虎中国
  7. git commit 规范不对导致报错subject may not be empty [subject-empty]type may not be empty [type-empty]
  8. 服务案例|TAS系统安全深度威胁发现案例
  9. Final Cut Pro X无法导入自家的MOV格式,解决方法。
  10. java.net.ConnectException no available server