今天发现网站存在风险,是百度风险提示,要怎样才能把风险取消呢? 这个风险是哪里存在的呢, 百度搜索快照提示是风险模式,这个要怎么操作啊,麻烦有知道的高手吗,尽快解决一下!
顺晟科技
2021-06-16 10:43:29
442
本文将使用Python编程向您展示股票投资回报和风险的基本知识。
一、股票的收益
1.1导入CSV时间序列数据
本文将分析微软2000年以来的股票交易数据(点击我下载),是csv格式的时间序列数据。您将使用熊猫来读取csv数据,并将其存储为DataFrame格式。
#进口熊猫套装
将熊猫作为pd导入
#读取csv文件,将“日期”列解析为日期和时间格式,并将其设置为索引
stock rices=PD . read _ CSV(' MSFTPrices . CSV ',parse _ Date=[' Date '],index_col='Date ')
#按日期对数据进行排序(以确保后续收益率计算的准确性)
股票=股票。排序_值(按='日期')
#打印前5行数据
print(stock rices . head())
开高关低音量调节
日期
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
股票数据包括交易日、开盘价、更高价、更低价、收盘价、调整收盘价和成交量。其中,调整后的收盘价最为重要,它规范了股权分置、分红等公司行为,能够真实反映股票随时间的回报。因此,本文的后续计算基于调整后的收盘价。
1.2计算产量
计算产量的公式如下:
可以理解为两天的差价除以前的价格。在熊猫中。pct_change()方法用于计算回报率。
#添加一列“退货”来存储每日退货率
库存价格['退货']=库存价格['调整']。pct_change()
#检查前5行数据
print(stock rices . head())
开盘高收盘低成交量调整收益
日期
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
数据框增加了一列收益,即股票的收益。请注意,天的收益率是缺失值NaN,因为没有前的数据进行计算。
为了方便后续的计算,我们选择了列Returns,丢弃丢失的值,并将它们存储在新的变量clean_returns中。使用。dropna()方法删除缺少的值。
clean _ Returns=stock rices[' Returns ']。dropna()
画一张日收入随时间变化的图表。
#导入matplotlib绘图包中的pyplot模块
将matplotlib.pyplot导入为plt
#绘图
clean_returns.plot()
plt.show()
1.3收入的平均值
均值是最常用的统计量,它对一系列数据进行平均,并将其浓缩为一个数值,但它也丢失了数据波动性的信息。
numpy包中的mean()函数可以用来计算历史股票收益的平均值。
#导入numpy包
将numpy导入为np
#计算股票的日平均收益
mean _ return _ daily=NP . mean(clean _ returns)
打印('平均日收入:',mean_return_daily)
平均日收入:0.507807777787
通过以下公式,将日收益率换算成年化收益率(一般假设一年有252个交易日),其中日平均收益率为。
#计算年平均收入
mean _ return _ annualized=((1 mean _ return _ daily)* * 252)-1
打印('平均年化收入:',mean _ return _ normalized)
平均年化回报率:0.57981.777777777955
1.4收入分配
画收入直方图了解其分布,同时观察收入的异常值。一般收入分配两边都有两条长尾巴,投资时一般避开左尾巴的异常值,因为代表的是较大的损失;分布在右尾的离群值通常是好事,代表着更大的利润。
使用matplotlib绘图包中的hist()函数绘制直方图。
#绘制直方图
plt.hist(clean_returns,bins=75)
plt.show()
上图所示的收入是怎样的分配?是正态分布吗?我们稍后会揭晓答案。
第二,风险的度量
金融市场的风险是一种不确定性的度量,体现在收益的波动上。一般可以用以下统计数字表示:
方差或标准差
歪斜
峭度
接下来,我们将逐一计算它们。
2.1差异
方差是数据离散程度的度量。下图中,蓝色分布的方差远大于红色分布的方差,其数据更加分散。
图片来源:https://en.wikipedia.org/wiki/Standard_deviation
标准差,也称为均方差,是方差的算术平方根。投资收益标准差越高,风险越大,因为数据分布离均值越远,收益波动范围越大。
numpy包中的std()函数可以用来计算标准差,方差就是标准差的平方。
#计算标准偏差
sigma _ daily=NP . STD(clean _ returns)
打印('标准差: ',sigma_daily)
#计算差异
方差_每日=sigma _每日** 2
打印('差异: ',差异_每日)
标准差???????????
论可变性18860 . 888888888686
以上计算是日方差,可以换算成人方差。标准差乘以交易天数的平方根,得到年化标准差。年化方差是通过将年化标准差平方得到的。
#计算年化标准差
sigma _ annualized=sigma _ daily * NP . sqrt(252)
打印('年化标准差:',sigma _年化)
#计算年化方差
方差_年化=sigma _年化** 2
打印('年化方差:',方差_年化)
年化标准差:0.30000.300000000005
年化方差:0.57981.979797999995
2.2偏斜度
偏斜度是数据分布偏斜的方向和程度的度量,反映了分布的不对称性。
下面显示的曲线分别代表负偏差和正偏差。在金融领域,人们往往更有偏见,因为这意味着高利润的概率更大。
图片来源:https://en.wikipedia.org/wiki/Skewness
您可以使用scipy.stats提供的skew()函数来计算收入分配的偏斜度。
#从scipy.stats导入偏斜函数
从scipy.stats导入偏斜
#计算收入分配的偏斜度
returns _ skew ness=skew(clean _ returns)
Print('偏斜度:',返回_偏斜度)
偏斜度:0.57999999991
回头看之前画的收入分布图,乍一看似乎是对称分布,但经过偏度计算,我们知道它有轻微的正偏度。
2.3峰度
峰度代表概率密度分布曲线峰值在平均值处的特征数,反映了峰值的锐度。一般将样本的峰度与正态分布进行比较。因为正态分布的峰度为3,超过3的部分称为超额峰度。大多数财务回报都有正值峰值。
kurtosis.png
使用scipy.stats提供的峰度()函数计算分布的峰度值。
#从scipy.stats导入峰度函数
来自scipy.stats导入峰度
#计算收入分布的峰度值
超额峰度=峰度(clean_returns)
打印('增值峰度:',超额_峰度)
#计算峰度
第四矩=超额峰度3
打印('峰度:',第四时刻)
剩余峰度:49080 . 98999999999
峰度:47981.97977797999
上述峰度的计算结果表明,股票收益的峰值远高于正态分布。从下图概率密度分布的对比中也可以看出,橙色代表收入的分布,蓝色代表正态分布。
#模拟正态分布数据,其均值和标准差与本文股票收益率相同。
mu=均值_返回_每日
sigma=sigma_daily
norm=np.random.normal(mu,sigma,size=10000)
#画正态分布的概率密度分布图
plt。hist(norm,bins=100,=0.8,密度=真,标签='正态分布')
#画收入的概率密度分布图
plt.hist(clean_returns,bins=75,alpha=0.7,density=True,label='Returns ')
#添加图例描述
plt.legend()
#绘图
plt.show()
三、收入分配的正态性检验
现在让我们回到部分末尾提出的问题:
我们知道正态分布是对称的,其偏度为0,而股票收益的正偏度为0.219。正态分布的峰度为3,股票收益的峰度高达13.31。从这两个统计数据可以看出,股票收益率不是正态分布的,略微向右倾斜,有一个尖峰。
但这能让我们自信地得出结论吗?为了判断股票收益率分布的正态性,我们需要使用真实的统计检验方法,而不是简单地检查峰度或偏度。
在这里,由scipy.stats提供的shapiro()函数被夏皮罗-维尔克用来测试股票收益的分布。该函数有两个返回值,一个是t检验统计量,另一个是p值。现在你不需要知道什么是夏皮罗-维尔克检验,只需要知道如何用P值来判断数据的正态性:如果P值小于等于0.05,那么拒绝正态性假设,得出数据不是正态分布的结论。
#从scipy.stats导入shapiro
来自scipy.stats import shapiro
#夏皮罗-维尔克股票收益测试
Shapiro _ results=Shapiro(clean _ returns)
打印('夏皮罗-维尔克测试结果: ',夏皮罗_结果)
#提取p值
p_value=shapiro_results[1]
打印(' P值: ',p_value)
夏皮罗-维尔克测试结果: (0.900332072220,0.0)
p值: 0.0
计算出的P值很小,目前精度等于0,可以肯定地说,收入分布不是正态分布。
总结
本文用Python计算股票的收益和风险。我们先看股票的收益及其分布,然后计算指示风险的统计量:方差、偏度、峰度,最后检验收益分布的正态性。
此外,我们还学习了以下统计函数:
将numpy导入为np
np.mean()的平均值#
Np.std() #标准偏差
来自scipy.stats import skew,峰度,shapiro
偏斜()#偏斜度
峰度()#增值峰度
夏皮罗()#夏皮罗-维尔克正态性检验
05
2022-03
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06