让我们用辉瑞和摩德纳股票在这次大流行中的表现来练习。

照片:Wance Paleri来自Unsplash
"泡沫市场崩溃","加密货币克拉赫","经济衰退"......如果你是一个股票投资者,你很有可能在过去几周经常检查你的投资组合。全球股市在2022年由于许多因素而下跌:乌克兰战争,通货膨胀,油价上涨,以及利率上升等等。
这是一个完美的机会,让我们开始用Python来提高股票数据的技能。
免责声明*:这篇博文的目的只是为了展示如何计算股票的每日回报和波动率。对任何股票都没有投资建议或推广。*
内容。
1.用例
Covid-19大流行病激起了世界上的巨大变化。股票市场也不例外。由于mRNA疫苗的出现,Moderna和Pfizer已经成为家喻户晓的名字,并看到他们的收入得到了提升。
这两家公司的股票在这一时期的日回报率和波动率是多少?
这将给我们一个指示他们的风险水平。波动率越高,风险就越大。
2.所需的Python库
首先,让我们导入我们需要的库。
import pandas as pd
yfinance是一个由Ran Aroussi创建的免费和开源的Python库。你可以在这里找到关于它的更多信息。我建议使用它来开始玩股票数据。
3.用yfinance检索股票数据
这是很直接的。
- 为了检索股票数据,我需要使用辉瑞和Moderna各自的股票代码。PFE, MRNA
- 然后,我用下载的方法表示时期。
Example with Pfizer stock

用yfinance检索辉瑞股票数据的第一行
4.计算和绘制每日回报率
股票日回报率表示某只股票每天的收益或损失。我们通过用收盘价减去开盘价来得到它。
方便的是,Pandas有pct_change方法来计算每日收益的变化百分比。让我们使用它,并将其存储在一个新的列 "daily_returns "中。
让我们从辉瑞公司开始。
pfizer['daily_returns']=(pfizer['Close'].pct_change())*100
像往常一样,我更喜欢把结果画出来,这样更容易视觉化。
pfizer.dropna(inplace=True)
fig,ax=plt.subplots(figsize=(12,6))

由于Covid-19,辉瑞公司的股票振荡在2020年非常强烈,由于Covid疫苗,在2021年变得不那么明显了。我们可以看到在2021年底,与Omicron变体出现有关的每日正回报。这张图有助于我们监测每日变化的幅度,随着时间的推移。
现在让我们对Moderna做同样的事情,看看它在同一时期的每日回报图是什么样子。

震荡的幅度较高的是正数。从1月22日开始,我们观察到每天的回报更多的是在消极方面。这对应于股票价格的下降。
5.计算股票的日、月、年波动率
一只股票的波动率是其价格在一段时期内的变化情况。
**每日波动率:**为了得到它,我们计算每日收益的标准差。作为提醒,标准差有助于我们看到数据在平均值或平均数周围的分布程度。
**月度波动率:**我们假设一个月有21个交易日,所以我们把每日波动率乘以21的平方根。
年度波动率:我们假设一个日历年有252个交易日,我们把每日波动率乘以252的平方根。
下面是代码。
import math
monthly_volatility_pfe = math.sqrt(21) * daily_volatility_pfe
annual_volatility_pfe = math.sqrt(252) * daily_volatility_pfe

Moderna股票的波动率非常高:年度波动率为90%,月度波动率为26%!这表明,投资者难以衡量该公司,因为其收入目前是基于Covid-19疫苗。他们正在等待,看其潜力是否会实现。
辉瑞的年收入为31%,低于Moderna,但仍然很可观。辉瑞公司是一个巨大的制药公司,有很多的历史,并且有它的发展前景。
6.结论
获取股票数据并进行一些初步计算以评估风险是很容易的,也是可以做到的。Moderna和辉瑞公司股票的例子表明,我们在投资股票时需要多么小心。我将在今后的博文中对待其他指标。
谢谢你阅读我的文章!如果你喜欢的话,请点击关注按钮,阅读我未来的文章。
How to calculate the daily returns and volatility of a stock with Pythonwas originally published inDev Geniuson Medium, where people are continuing the conversation by highlighting and responding to this story.