IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python_scipy使用 -> 正文阅读

[人工智能]python_scipy使用

目录

1.?比较股票对数收益率

2.?检验QQQ股价的线性趋势

3.?对去除趋势后的信号进行滤波处理

数据:


1.?比较股票对数收益率

import numpy as np
import pandas as pd
from scipy import stats
from scipy import signal
from scipy import fftpack
from statsmodels.stats.stattools import jarque_bera
import matplotlib.pyplot as plt
%matplotlib inline
# 1. 比较股票对数收益率
'''
1. 比较DIA和SPY收盘价的对数收益率
2. 在两只股票对数收益率的差值上应用Jarque-Bera正态性检验
'''
dia_df = pd.read_csv('DIA.csv',encoding='utf-8')
spy_df = pd.read_csv('SPY.csv',encoding='utf-8')
dia_df = dia_df.iloc[-252:]
spy_df = spy_df.iloc[-252:]
spy = np.diff(np.log(spy_df['Close']))
dia = np.diff(np.log(dia_df['Close']))

# 均值检验可以检查两组不同的样本是否有相同的均值。返回值有两个,其中第二个为p-value,取值范围为0~1
# 结果为 Ttest_indResult(statistic=0.23703418134398255, pvalue=0.8127273567868357)
# 有81%的概率两组样本对数收益率的均值相同
print('Means comparison',stats.ttest_ind(spy,dia))

# Kolmogorov-Smirnov检验可以判断两组样本同分布的可能性。返回值有两个,第二个为p-value
# 结果为 KstestResult(statistic=0.06772908366533864, pvalue=0.613452591221265)
# 有61%的概率两组样本的分布相同
print('Kolmogorov-Smirnov test',stats.ks_2samp(spy,dia))

# 两只股票对数收益率差值Jarque-Bera正态性检验(检验使用方法:如果结果比0大很多,说明不符合正态分布)
# 结果为 Jarque Beta test 2.9045533682935356e-05  数值很小,说明符合正态分布
print('Jarque Beta test',jarque_bera(spy-dia)[1])

plt.hist(spy,histtype='step',lw=1,label='SPY')
plt.hist(dia,histtype='step',lw=2,label='DIA')
plt.hist(spy-dia,histtype='step',lw=3,label='Delta')
plt.legend()

?

2.?检验QQQ股价的线性趋势

# 2. 检验QQQ股价的线性趋势
qqq_df = pd.read_csv('QQQ.csv',encoding='utf-8')
qqq_df = qqq_df.iloc[-252:]
qqq = qqq_df['Close']
# 去除信号中的线性趋势
y = signal.detrend(qqq)
fig = plt.figure()
ax = fig.add_subplot(111)
# 绘制股价数据以及将去除趋势后的信号从原始数据中减去所得到的潜在趋势
plt.plot(qqq,'o',qqq-y,'-')

?

3.?对去除趋势后的信号进行滤波处理

# 3. 对去除趋势后的信号进行滤波处理
'''
傅里叶变换是处理信号的常用工具。傅里叶变换是一种从时域到频域的变换,也就是将周期信号线性分解为不同频率的正弦函数和余弦函数
'''
# 应用傅里叶变换,得到信号的频谱
amps = np.abs(fftpack.fftshift(fftpack.rfft(y)))
# 滤除噪声。如果某一频率分量的大小低于最强分量的10%,则将其滤除
amps[amps<0.1*amps.max()]=0
# 将滤波后的信号变换回时域,并和去除趋势后的信号一起绘制出来
fig = plt.figure()
fig.subplots_adjust(hspace=.3)
ax = fig.add_subplot(211)
plt.plot(y,'o',label='detrended')
plt.plot(-fftpack.irfft(fftpack.ifftshift(amps)),label='filtered')
plt.legend()
# 绘制滤波后的频谱
ax2 = fig.add_subplot(212)
N = len(qqq)
plt.plot(np.linspace(-N/2,N/2,N),amps,label='transformed')
plt.legend()

数据:

链接:https://pan.baidu.com/s/1EzRTwbb2hq9wOjOu5WbvRQ?
提取码:zuq3?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:13:20  更:2022-03-03 16:19:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:34:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码