用python分析股票收益影响因素的方法_用Python分析股票的收益和风险
本文将用Python编程,带你了解股票投资收益和风险的基本知识。
一、股票的收益
1.1 导入CSV时序数据
本文将分析微软2000年以来的股票交易数据(点我下载哦),它是一个 csv 格式的时间序列数据。你将使用 pandas 读取 csv 数据,并存储为DataFrame格式。
# 导入pandas包
import pandas as pd
# 读取csv文件,并将‘Date’列解析为日期时间格式,并设为索引
StockPrices = pd.read_csv('MSFTPrices.csv', parse_dates=['Date'], index_col='Date')
# 将数据按日期这一列排序(保证后续计算收益率的正确性)
StockPrices = StockPrices.sort_values(by='Date')
# 打印数据的前5行
print(StockPrices.head())
Open High Low Close Volume Adjusted
Date
2000-01-03 88.777 89.722 84.712 58.28125 53228400 38.527809
2000-01-04 85.893 88.588 84.901 56.31250 54119000 37.226345
2000-01-05 84.050 88.021 82.726 56.90625 64059600 37.618851
2000-01-06 84.853 86.130 81.970 55.00000 54976600 36.358688
2000-01-07 82.159 84.901 81.166 55.71875 62013600 36.833828
该股票数据包括了交易日期、开盘价、最高价、最低价、收盘价、调整后的收盘价以及成交量。其中调整后的收盘价最为重要,它对股票分割、股息和其他公司行为进行了标准化,能真实地反映股票随时间的回报。所以本文后续的计算都是基于调整后的收盘价(Adjusted)这一列数据。
1.2 计算收益率
收益率的计算公式如下:
这里可理解为两天的价格差除以前一天的价格。在 pandas 中,使用 .pct_change() 方法来计算收益率。
# 增加一列'Returns', 存储每日的收益率
StockPrices['Returns'] = StockPrices['Adjusted'].pct_change()
# 检查前5行数据
print(StockPrices.head())
Open High Low Close Volume Adjusted Returns
Date
2000-01-03 88.777 89.722 84.712 58.28125 53228400 38.527809 NaN
2000-01-04 85.893 88.588 84.901 56.31250 54119000 37.226345 -0.033780
2000-01-05 84.050 88.021 82.726 56.90625 64059600 37.618851 0.010544
2000-01-06 84.853 86.130 81.970 55.00000 54976600 36.358688 -0.033498
2000-01-07 82.159 84.901 81.166 55.71875 62013600 36.833828 0.013068
数据框增加了 Returns 一列,即股票的收益。注意第一天的收益率是缺失值 NaN,因为没有前一天的数据用于计算。
为了后续计算方便,我们选取 Returns 这一列,并将缺失值丢弃,存储在新的变量 clean_returns 中。使用 .dropna() 方法来删除缺失值。
clean_returns = StockPrices['Returns'].dropna()
绘制每日收益随时间变化的图。
# 导入matplotlib绘图包中的pyplot模块
import matplotlib.pyplot as plt
#绘图
clean_returns.plot()
plt.show()
1.3 收益的均值
均值是最常用的统计量,它将一串数据平均后浓缩为一个数值,但同时也丢失了数据波动性的信息。
可使用 numpy 包中的 mean() 函数计算股票历史收益的均值。
# 导入numpy包
import numpy as np
# 计算股票的日平均收益
mean_return_daily = np.mean(clean_returns)
print("日平均收益:", mean_return_daily)
日平均收益: 0.00037777546435757725
通过以下公式,将日收益率转换为年化收益率(一般假设一年252个交易日),其中
是日平均收益率。
# 计算平均年化收益
mean_return_annualized = ((1 + mean_return_daily)**252) - 1
print("平均年化收益:", mean_return_annualized)
平均年化收益: 0.09985839482858783
1.4 收益的分布
绘制收益的直方图可了解其分布情况,同时也能观察到收益中的异常值。一般在收益分布的两侧有两条长长的尾巴,在投资时一般会尽量避免左侧尾巴上的异常值,因为他们代表了较大的亏损;而分布在右侧尾巴上的异常值通常是件好事,它代表较大的盈利。
使用 matplotlib 绘图包中的 hist()函数绘制直方图。
# 绘制直方图
plt.hist(clean_returns, bins=75)
plt.show()
上图所示的收益是个怎样的分布呢?是正态分布吗?我们将在后续揭晓答案。
二、风险的衡量
金融市场的风险是对不确定性的度量,反应在收益的波动上。一般可用以下统计量来表示:
方差或标准差
偏度
峰度
接下来我们将逐个计算它们。
2.1 方差
方差是对数据离散程度的度量。下图中蓝色分布比红色分布的方差大得多,其数据也更加分散。
用python分析股票收益影响因素的方法_用Python分析股票的收益和风险相关推荐
- python语言的两种注释方法_【Python】python注释的方法
不管使用哪一种语言编程,学会注释以及写好注释是特别特别重要的一点!详细的注释,不仅对自己日后的回归有益,对后来之人尽快上手业务更是有益. python里面三种注释方法: 一.单行注释 # 常被用作单行 ...
- python运行启动报错解决方法_解决python运行启动报错问题
解决python运行启动报错问题 问题一: python启动报错api-ms-win-crt-process-l1-1-0.dll丢失 解决: 下载api-ms-win-crt-process-l1- ...
- python实现逻辑回归三种方法_纯Python实现逻辑回归
前几天使用后sklearn实现了逻辑回归,这里用纯python实现逻辑回归. 首先,我们定义一个sigmoid函数 def sigmoid(inX): #sigmoid函数 return 1.0/(1 ...
- python缩进的用途和使用方法_关于Python缩进,我们该了解哪些?
Python是一门独特的语言,它的代码块是通过缩进(Indentation)来标记的(大部分语言都是使用花括号作为代码块的标记),具有相同缩进的多行代码属于同一个代码块.如果代码莫名其妙的乱缩进,Py ...
- 利用python读取txt文档的方法_利用Python读取txt文档的方法讲解
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python中format函数用法简书_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...
Python和PyCharm的安装:学会Python和PyCharm的安装方法 变量和字符串:学会使用变量和字符串的基本用法 函数与控制语句:学会Python循环.判断语句.循环语句和函数的使用 Py ...
- python分析数据差异的方法_用Python的两种方法进行方差分析
在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的.比如在化工生产中,有温度.压力.剂量.反应时间等因素.每一因素的改变都有可能影响产品的数量和质量. ...
- python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...
注意: 1. 本行业案例课程为Python 3 数据分析系列课程的行业案例部分,学员请务必先观看课程介绍免费视频,确认已学习本课程所需Python分析技能. 2. 本课程的核心目的是协助学员学习具体业 ...
- python中字符串类型的encode()方法_第五章 Python字符串常用方法详解
5.1 Python字符串拼接(包含字符串拼接数字) 在 Python中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为: strname = "str1" ...
- python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法
由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配 ...
最新文章
- C++_STL——stack
- 背景透明的 Dialog
- 2018华工计算机应用基础作业,计算机应用基础平时作业2019
- (六)ElasticSearch 6.1.1聚合查询
- Python学习笔记:生成器(Generator)
- carbon 一天的开始 结束_来自一线:银行柜员的一天
- UwpDesktop!WPF也能开发Surface Dial
- 迈信ep100交流伺服 含原理图、PCB图、C源代码等生产资 料。
- url重写(urlrewrite.xml)
- 怎么用计算机算钱,亚马逊fba费用计算器要怎么使用?
- oeasy教您玩转python - 008 - # ascii码表
- 提高团队协作效率就靠它们了!
- Vue学习笔记02——Vue路由
- pycharm快速注释快捷键
- vim输入i无法进入编辑模式
- 团队融洽之拓展器械拓展训练
- 推荐几个比较有名的博客?
- Python图像处理库PIL中图像格式转换(一)
- could not find included file 'pods/target support files/pods-runner/pods-runner.debug.xcconfig 什么问题
- 平安城市与智能交通系统建设方案