python 股票数据分析析都有什么

计算机软件/web开发

,这个是开源的,不潒Tushare需要积分才可以用,比如获取实时行情数据

除了股票数据你还可以获取期货,数字货币,反正数据蛮多的.具体的你可以自行查看文档.

俗话说不要将所有的鸡蛋放在同┅个篮子里在投资股票的时候我们也会多买几只以抵抗风险。本文将带领着你使用Python来分析多只股票投资时的收益和风险,并找到最优嘚投资组合方案这是上一篇文章

一、股票数据的在线获取

我们打算用以下9家大公司的股票构建投资组合,并用2017年的历史数据进行回溯测試

在具体分析前,还是先导入将要用到的Python包

我们使用上面导入的 quandl 包从网络获取相应的股票数据,并将每日调整后的收盘价存入数据框 StockPrices 變量中具体获取方法可参见一文。

# 创建空的DataFrame变量用于存储股票数据
# 设置股票数据的开始和结束的时间
# 创建股票代码的列表
# 使用循环,挨个获取每只股票的数据并存储调整后的收盘价
 

这里用行来记录每一天的数据,用列记录每只股票的收盘价然后计算每天的收益率,將数据存储在数据框 StockReturns 变量中收益率的具体计算方法可参见文章。

# 计算每日收益率并丢弃缺失值

至此,我们已经准备好了用于分析的数據 StockReturns 它记录了9只股票2017年每天的收益率。如果你想跳过以上步骤直接开始分析的话也可以下载我为你准备好的数据(),再用以下代码读取

# 从CSV文件读取数据

二、投资组合的收益计算

我们选了9只股票,可资金怎么分配呢哪只买多些,哪只买少些这就需要对它们设置相应嘚权重,下面我们采用三种权重分配的方案来计算不同组合下的投资收益。

2.1 给定权重的投资组合

第一种方案是预先设置一组权重如下所示,注意所有股票权重的和为1

我们将每只股票的收益,乘上其对应的权重得到加权后的股票收益;再对所有股票加权后的收益求和,得到该组合投资的收益

# 设置组合权重,存储为numpy数组类型
# 将收益率数据拷贝到新的变量 stock_return 中这是为了后续调用的方便
# 计算加权的股票收益
# 计算投资组合的收益
# 绘制组合收益随时间变化的图

以上绘制了该组合投资收益随时间变化的图,显得有些凌乱因为画的是每天的收益。如果把每天的收益进行累积可以绘制如下常见的收益曲线。

# 计算累积的组合收益并绘图

因为后面我们会不断绘制这样的累积收益曲線,所以将绘制的代码写成函数 cumulative_returns_plot()方便后续调用。

# 累积收益曲线绘制函数

2.2 等权重的投资组合

第二种方案是平均分配每只股票的权重使它們都相等。这是最简单的投资方法可作为其他投资组合的参考基准。计算方法和上面一致只需更改存储权重的数组。

# 设置投资组合中股票的数目
# 平均分配每一项的权重
# 计算等权重组合的收益

上图中蓝色曲线代表第一种方案的累积收益橙色曲线代表等权重组合的累积收益,它们俩比较接近说明第一种方案设置的权重并没有多少优势,我们还需要寻找更好的投资组合

1.3 市值加权的投资组合

第三种法案是栲虑了公司的市值,按市值的占比来分配权重因此市值高的公司对应的权重就更大,当这些大公司的股票表现良好时该投资组合的表現也更好。众所周知的标普500指数就是按照市值进行加权计算的

以下列出了这9家公司2017年1月前的市值(单位:10亿美元)。

# 计算市值加权的组匼收益

上图中绿色曲线代表市值加权的组合投资这里它的表现明显优于前两种方案。

相关矩阵用于估算多只股票收益之间的线性关系鈳使用pandas数据框内建的 .corr() 方法来计算。

矩阵中每个一元素都是其对应股票的取值从-1到1,正数代表正相关反之负数代表负相关。我们观察到矩阵的对角线永远是1因为自己和自己当然是完全相关的。另外相关矩阵也是对称的即上三角和下三角呈镜像对称。

为了便于观察可鉯将数值的相关矩阵用热图的形式展现出来。以下采用了 seaborn 包来绘制热图

相关系数只反了股票之间的线性关系,但并不能告诉我们股票的波动情况而则包含这一信息。可使用pandas数据框内建的 .cov() 方法来计算协方差矩阵

3.3 投资组合的标准差

投资组合的风险可以用标准差来衡量,只偠知道组合权重和协方差矩阵就可以通过以下公式进行计算。

在NumPy中使用.T属性对数组进行,np.dot()函数用于计算两个数组的

# 计算投资组合的標准差

四、寻找最优的投资组合

掌握了收益和风险(标准差)的计算方法后,接下来要考虑的是:应该选择怎样的组合权重才是最好的呢是让收益最大吗?还是风险最小我们需要综合权衡风险和收益这两个因素。

诺贝尔经济学奖得主马科维茨(Markowitz)提出的被广泛用于组合選择和资产配置中该理论中的均值-方差分析法和有效边界模型可用于寻找最优的投资组合。

我们采用蒙特卡洛模拟来进行分析也就是隨机生成一组权重,计算该组合下的收益和标准差重复这一过程许多次(比如1万次),将每一种组合的收益和标准差绘制成散点图

# 设置空的numpy数组,用于存储每次模拟得到的权重、收益率和标准差 # 设置随机数种子这里是为了结果可重复 # 循环模拟10000次随机的投资组合 # 生成9个隨机数,并归一化得到一组随机的权重数据 # 计算年化平均收益率 # 计算年化的标准差,也称为波动率 # 将上面生成的权重和计算得到的收益率、标准差存入数组random_p中

投资的本质是在风险和收益之间做出选择,上图正是刻画了这两个要素其中每一个点都代表着一种投资组合的凊况,横坐标是代表风险的标准差纵坐标是收益率。

Markowitz投资组合理论认为理性的投资者总是在给定风险水平下对期望收益进行最大化,戓者是在给定收益水平下对期望风险做最小化反映在图中也就是红色曲线所示的有效边界,只有在有效边界上的点才是最有效的投资组匼

现在我们知道,理性的投资者都会选择有效边界上的投资组合可具体选择哪个点呢?我们接着往下看

一种策略是选择最低的风险,且在该风险水平下收益最高的组合称为最小风险组合(GMV portfolio)。

让我们找到风险最小的组合并绘制在代表收益-风险的散点图中。

# 找到标准差最小数据的索引值
# 在收益-风险散点图中突出风险最小的点

绘制风险最小组合(GMV)的累积收益率曲线并和等权重组合(EV)、市值加权嘚组合(MCap)进行比较。图中绿色曲线代表风险最小组合它的收益率低于另外两种组合,这也符合人们对于风险小的投资收益相对较低的認知

# 提取最小波动组合对应的权重, 并转换成Numpy数组
# 计算GMV投资组合收益

其实我们更想在收益和风险之间找到平衡点,夏普比率这个变量能帮峩做出更好的决策它计算的是每承受一单位的风险所产生的超额回报。更多关于夏普比率的计算可参考一文

我们首先来计算上述蒙特鉲洛模拟的组合所对应的夏普比率,并将之作为第三个变量绘制在收益-风险的散点图中这里采用颜色这一视觉线索来表征夏普比率。

# 设置无风险回报率为0
# 计算每项资产的夏普比率
# 绘制收益-标准差的散点图并用颜色描绘夏普比率

我们发现散点图上沿的组合具有较高的夏普仳率。接着再找到夏普比率最大的组合将其绘制在收益-风险的散点图中。

# 找到夏普比率最大数据对应的索引值
# 在收益-风险散点图中突出夏普比率最大的点

最后绘制夏普最优组合(MSR)的累积收益曲线(下图中的红色曲线)发现它的收益远远高于其他组合。当然我们用的昰历史数据,至于能否在未来获得同样好的表现还有待考量。

# 提取最大夏普比率组合对应的权重并转化为numpy数组
# 计算MSR组合的收益

  • 今天在群里,小王说她买的基金这几天都在跌跌到心惊胆战的。 小杜说她1000元定投半年赚了3000元,打算过年拿...

  • Python 现在是最流行和使用最广泛的编程語言之一业界许多编程语言都已经被它超越了,名列前茅它之所以在开发人...

  • 今天学习的是第六章连接。其基本概念就是把两张相关的表按照某一个或某一组键连接起来例如学生期末考试各个科目的成绩表...

  • 实盘账户情况 账户一 今日定投20元 账户二 今日定投200元 特别说明 1.本账戶是真金白银(不是虚拟游戏)的实...

  • 去年买了债券基金,我的收益都快8%但其实债券基金的投资方法很简单,都不需要定投 首先,债券基金的风险主...

我要回帖

更多关于 python 股票数据分析 的文章

 

随机推荐