本文将用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分析股票的收益和风险相关推荐

  1. python语言的两种注释方法_【Python】python注释的方法

    不管使用哪一种语言编程,学会注释以及写好注释是特别特别重要的一点!详细的注释,不仅对自己日后的回归有益,对后来之人尽快上手业务更是有益. python里面三种注释方法: 一.单行注释 # 常被用作单行 ...

  2. python运行启动报错解决方法_解决python运行启动报错问题

    解决python运行启动报错问题 问题一: python启动报错api-ms-win-crt-process-l1-1-0.dll丢失 解决: 下载api-ms-win-crt-process-l1- ...

  3. python实现逻辑回归三种方法_纯Python实现逻辑回归

    前几天使用后sklearn实现了逻辑回归,这里用纯python实现逻辑回归. 首先,我们定义一个sigmoid函数 def sigmoid(inX): #sigmoid函数 return 1.0/(1 ...

  4. python缩进的用途和使用方法_关于Python缩进,我们该了解哪些?

    Python是一门独特的语言,它的代码块是通过缩进(Indentation)来标记的(大部分语言都是使用花括号作为代码块的标记),具有相同缩进的多行代码属于同一个代码块.如果代码莫名其妙的乱缩进,Py ...

  5. 利用python读取txt文档的方法_利用Python读取txt文档的方法讲解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. python中format函数用法简书_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...

    Python和PyCharm的安装:学会Python和PyCharm的安装方法 变量和字符串:学会使用变量和字符串的基本用法 函数与控制语句:学会Python循环.判断语句.循环语句和函数的使用 Py ...

  7. python分析数据差异的方法_用Python的两种方法进行方差分析

    在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的.比如在化工生产中,有温度.压力.剂量.反应时间等因素.每一因素的改变都有可能影响产品的数量和质量. ...

  8. python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...

    注意: 1. 本行业案例课程为Python 3 数据分析系列课程的行业案例部分,学员请务必先观看课程介绍免费视频,确认已学习本课程所需Python分析技能. 2. 本课程的核心目的是协助学员学习具体业 ...

  9. python中字符串类型的encode()方法_第五章 Python字符串常用方法详解

    5.1 Python字符串拼接(包含字符串拼接数字) 在 Python中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为: strname = "str1" ...

  10. python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法

    由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配 ...

最新文章

  1. C++_STL——stack
  2. 背景透明的 Dialog
  3. 2018华工计算机应用基础作业,计算机应用基础平时作业2019
  4. (六)ElasticSearch 6.1.1聚合查询
  5. Python学习笔记:生成器(Generator)
  6. carbon 一天的开始 结束_来自一线:银行柜员的一天
  7. UwpDesktop!WPF也能开发Surface Dial
  8. 迈信ep100交流伺服 含原理图、PCB图、C源代码等生产资 料。
  9. url重写(urlrewrite.xml)
  10. 怎么用计算机算钱,亚马逊fba费用计算器要怎么使用?
  11. oeasy教您玩转python - 008 - # ascii码表
  12. 提高团队协作效率就靠它们了!
  13. Vue学习笔记02——Vue路由
  14. pycharm快速注释快捷键
  15. vim输入i无法进入编辑模式
  16. 团队融洽之拓展器械拓展训练
  17. 推荐几个比较有名的博客?
  18. Python图像处理库PIL中图像格式转换(一)
  19. could not find included file 'pods/target support files/pods-runner/pods-runner.debug.xcconfig 什么问题
  20. 平安城市与智能交通系统建设方案

热门文章

  1. 第十届国家级大学生创新训练项目——3D打印技术在建筑构部件生产中的应用
  2. 北京林业大学本科毕业论文答辩和论文选题PPT模板
  3. 线性代数高斯课堂笔记2
  4. python判定串口已连接_python的串口连接
  5. 健康管理软件 PHP,健康管理信息系统
  6. python艺术分形数_Python分形盒计数-分形维数
  7. hadoop原理巧用到异地机房双活
  8. Java微信小程序发送服务通知
  9. 湘源里面关于缩放的问题
  10. 大气压计BMP280+BME280+BMP180 在ESP8266 (RTOS3.2)上初调的兼容驱动