Numpy应用-股价分析实战

news2024/9/27 2:48:33

股价统计分析

数据样本
image.png
股价常用指标
极差
越高说明波动越明显
股价近期最高价的最大值和最小值的差价
成交量加权平均价格
英文名VWAP(Volume-Weighted Average Price,成交量加权平均价格)是一个非常重要的经济学量,代表着金融资产的“平均”价格
收益率
简单收益率,相邻两个价格之间的变化率
对数收益率,指所有价格取对数后两两之间的差值
波动率
越高说明波动越明显
波动率是对价格变动的一种衡量
年波动率
对数波动率的标准差除以其均值,再除以交易日倒数的平方根,通常交易日取250天
月波动率
对数收益率的标准差除以其均值,再乘以交易月的平方根通常交易月取12月

读取指定列

""" 读取指定列
        numpy.loadtxt需要传入4个关键字参数:
        1.fname是文件名,数据类型为字符串str;
        2.delimiter是分隔符,数据类型为字符串str;
        3.usecols是读取的列数,数据类型为元组tuple, 其中元素个数有多少个,则选出多少列;
        4.unpack是是否解包,数据类型为布尔bool。
    #"""
    def testReadFile(self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price,volumn = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2,6),
            unpack=True
        )
        print(end_price)
        print(volumn)

image.png
#计算最大值与最小值

def testMaxAndMin(self):
    file_name = r"D:\lhjytest\demo.csv"
    high_price,low_price = np.loadtxt(
        fname=file_name,
        delimiter=',',
        usecols=(4,5),
        unpack=True
    )
    print("max_price = {}".format(high_price.max()))
    print("min_price = {}".format(low_price.min()))

image.png
计算极差

# 计算股价近期最高价的最大值和最小值的差值 和 计算股价近期最低价的最大值和最小值的差值
def testPtp(self):
    file_name = r"D:\lhjytest\demo.csv"
    high_price, low_price = np.loadtxt(
        fname=file_name,
        delimiter=',',
        usecols=(4, 5),
        unpack=True
    )
    print("max - min of high price : {}".format(np.ptp(high_price)))
    print("max - min of low price : {}".format(np.ptp(low_price)))

image.png
计算成交量加权平均价格

    # 成交量加权平均价格,英文名VWAP(Volume-Weighted Average Price,成交量加权平均价格)是一个非常重要的经济学量,代表着金融资产的“平均”价格
    def testAVG(self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price, volumn = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2, 6),
            unpack=True
        )
        print("avg_price = {}".format(np.average(end_price)))
        print("VWAP = {}".format(np.average(end_price,weights=volumn)))

image.png
计算中位数

    # 收盘价的中位数
    def testMedian(self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price, volumn = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2, 6),
            unpack=True
        )
        print("median = {}".format(np.median(end_price)))

image.png
计算方差

    # 收盘价的方差
    def testVar(self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price, volumn = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2, 6),
            unpack=True
        )
        print("var = {}".format(np.var(end_price)))
        print("var = {}".format(end_price.var()))

image.png
计算股票收益率、年波动率及月波动率

# 波动率是对价格变动的一种度量,历史波动率可以根据历史价格数据计算得出。计算历史波动率时,需要用到对数收益率
    # 年波动率等于对数收益率的标准差除以其均值,再乘以交易日的平方根,通常交易日取250天
    # 月波动率等于对数收益率的标准差除以其均值,再乘以交易月的平方根。通常交易月取12月
    def testVolatility (self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price, volumn = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2, 6),
            unpack=True
        )

        log_return = np.diff(np.log(end_price))

        annual_volatility = log_return.std() / log_return.mean() * np.sqrt(250)

        monthly_volatility = log_return.std() / log_return.mean() * np.sqrt(12)

        print("log_return = {}".format(log_return))
        print("annual_volatility = {}".format(annual_volatility))
        print("monthly_volatility = {}".format(monthly_volatility))

image.png

股价均线

卷积
卷积可用于描述过去作用对当前的影响。卷积是时空响应的叠加,可用作计算“滑动平均”

简单移动均线

一般用于分析时间序列上的股价趋势计算股价与等权重的指示函数的卷积
生成权重-卷积运算-均线可视化

指数移动均线

历史数据的权重以指数速度衰减计算股价与权重衰减的指示函数的卷积
权重初始化-权重衰减-卷积运算-均线可视化

class TestNumpyMA(TestCase):
# 简单移动均线
    def testSMA(self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2),
            unpack=True
        )
        print(end_price)
        # 生成权重
        N = 5
        weights = np.ones(N) / N
        print(weights)
        # 卷积运算
        sma = np.convolve(weights,end_price)[N-1:-N+1]
        print(sma)
        # 均线可视化
        plt.plot(sma,linewidth=5)
        plt.show()


    def testEXP(self):
        x = np.arange(5)
        y = np.arange(10)
        print("x", x)  # exp 函数可以计算出每个数组元素的指数
        print("y", y)
        # 指数衰减
        print("""Exp x : {}""".format(np.exp(x)))
        print("""Exp y : {}""".format(np.exp(y)))
        print("""Linespace : {}""".format(np.linspace(-1,0,5)))



    def testEMA(self):
        file_name = r"D:\lhjytest\demo.csv"
        end_price = np.loadtxt(
            fname=file_name,
            delimiter=',',
            usecols=(2),
            unpack=True
        )
        print(end_price)
        N = 5
        # 权重衰减
        weighs = np.exp(np.linspace(-1,0,N))
        # 归一化
        weighs /= weighs.sum()
        print(weighs)
        # 卷积运算
        ema = np.convolve(weighs,end_price)[N-1:-N+1]
        print(ema)
    	# 均线可视化
        t = np.arange(N-1,len(end_price))
        plt.plot(t,end_price[N-1:],lw=1.0)
        plt.plot(t,ema,lw=2.0)
        plt.show()


image.png
image.png
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1414640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vcruntime140.dll丢失问题全面分析,解决vcruntime140.dll丢失的办法

当vcruntime140.dll文件缺失时,系统会显示错误信息来提示用户。这些错误信息可能会包含类似于"vcruntime140.dll未找到"或"找不到vcruntime140.dll"等字样。通常出现这样的字样那就是导致应用程序通常无法正常启动或执行相关功能。那么出现这样…

【排序4】探秘归并排序:提高程序效率的必备技巧

😊归并排序 🎊1、基本思想🎊2、代码示例🎊3、非递归实现🎊4、归并排序的性能分析🎊5、归并排序的优缺点🎊6、归并排序的应用场景🎊7、总结 🎊1、基本思想 归并排序&…

ssh异常报错:Did not receive identification string from

一、问题描述 某次外出在异地工作场所xshell炼乳远程服务器时,报错:Connection closed by foreign host. D,服务器查看secure日志或sshd服务状态会显示:id not receive identification string from client_ip; 二、分析处理 1&a…

J9数字论:什么是公链、联盟链、私有链?它们之间区别在哪?

公有链是任何人都能参与读取、交易、写入的区块链,完全去中心化,账本信息公开透明,不受任何机构控制。公有链一般都需要挖矿来达成共识,因此带来了交易延时高、成本高和效率低等缺点。公有链的典型代表有比特币、以太坊、EOS等。私…

Vite学习指南

那本课程都适合哪些人群呢? 想要学习前端工程化,在新项目中投入使用 Vite 构建工具的朋友 Webpack 转战到 Vite 的小伙伴 前端架构师们,可以充实自己的工具箱 当然如果你没有项目相关开发经验,也可以从本课程中受益&#xff0…

你应该知道的GNU C语句表达式

许多写C语言的同道们或许都知道C语言中的表达式和语句,一般常见的语句都是在表达式后跟分号做结尾。例如, a 10 /*赋值表达式*/a 10; /*赋值语句*/当然语句不止有这一种,暂不过多引入。 我们都知道有些表达式是有其值的,例如上…

查询redis路径,清除redis缓存

查询redis路径 1、执行ps -ef | grep redis 命令,结果如下(记住PID) 2、执行ps -u 系统用户名,进一步确定进程id, 我这里的系统用户名是root,执行ps -u root,结果如下: 结合1的操作结果图可知…

taro3 + vue3 + ts 跨平台体验记录

taro3 vue3 ts 跨平台体验记录,根据进度不定期更新。 目标平台包含:H5、微信小程序、APP。开发环境:windows 安装cli【官方安装文档】 npm install -g tarojs/cli常用命令 // 查看taro版本 npm info tarojs/cli创建demo项目 taro init…

个体诊所电子处方系统设计,社区门诊处方开单管理系统软件教程

个体诊所电子处方系统设计,社区门诊处方开单管理系统软件教程 一、前言 以下软件程序操作教程以 佳易王诊所电子处方管理系统软件V17.3为例说明 如图,在基本信息设置里,可以设置处方配方模板,这样在开电子处方的时候可以一键导入…

C++中map和set的使用

(图片来源于网络) 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶…

插槽(64-67)

文章目录 插槽1.插槽 - 默认插槽(组件内可以定制一处结构)2.插槽 - 后备内容(默认值)3.插槽 - 具名插槽(组件内可以定制多处结构)4.作用域插槽(插槽的一个传参语法) 插槽 插槽分类:默认插槽和具名插槽 1.插槽 - 默认插槽(组件内可以定制一处结构) 作用…

JavaEE-微服务-Vuex

Vuex 2.1 什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 Vuex在组件之间共享数据。 2.2 使用 vue cli 构建项目 2.3 入门案例 2.3.1 定义数据 export default new Vuex.Store({state: { // 状态区域(定义变量区域)user: ,toke…

table用position: sticky固定多层表头,滑动滚动条border边框透明解决方法

问题:我们发现,只要设置了border边框,这个位置滑动有内容经过就会出现如图的情况。 解决的方法:用outline(轮廓)替代border,以达到我们想要的样式。 table thead tr {border: none;outline-color: #fff;ou…

[SWPUCTF 2018]SimplePHP1

打开环境 有查看文件跟上传文件,查看文件里面显示没有文件url貌似可以文件读取 上传文件里面可以上传文件。 先看一下可不可以文件读取 /etc/passwd不能读取,源码提示flag在f1ag.php 看看能不能读取当前的文件, 先把代码摘下来 file.php …

Ubuntu 22.04 apt 安装 ros1 ros Noetic Ninjemys

众所周知 ros2还有很多功能没有移植,而ros1官方不再支持 ubuntu 20.04 之后的版本。另一方面Ubuntu 22.04 更新了很多对新硬件的驱动,有更好的兼容性和体验,这就变的很纠结。 如果想在 22.04 使用最新版本的 ros noetic 只有自己编译一个办法…

盘古信息IMS OS 数垒制造操作系统+ 产品及生态部正式营运

启新址吉祥如意,登高楼再谱新篇。2024年1月22日,广东盘古信息科技股份有限公司新办公楼层正式投入使用并举行了揭牌仪式,以崭新的面貌、奋进的姿态开启全新篇章。 盘古信息总部位于东莞市南信产业园,现根据公司战略发展需求、赋能…

java金额数字转中文

java金额数字转中文 运行结果: 会进行金额的四舍五入。 工具类源代码: /*** 金额数字转为中文*/ public class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER {"零", "壹", "贰",…

机器学习第一个项目-----鸢尾花数据集加载及报错解决

项目步骤 如刚开始做,从 “项目开始” 看; 如遇到问题从 “问题” 开始看; 问题 报错如下 ModuleNotFoundError: No module named sklearn解决过程 查看官网,感觉可能是python版本和skilearn版本不匹配,更新一下p…

Django模型(一)

一、介绍 模型,就是python中的类对应数据库中的表 1.1、ORM ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写 ORM 把数据库映射成对象 1.2、示例 1.2.1、模型 from django.db import models…

逻辑推理,形式逻辑:且关系,或关系,前加非后不变,箭头和或的转化

国考省考行测:逻辑推理,形式逻辑:且关系考点 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧&#xf…