python模拟股票的数据分析

股票分析

需求:股票分析

  • 使用tushare包获取某股票的历史行情数据。
  • 输出该股票所有收盘比开盘上涨3%以上的日期。
  • 输出该股票所有开盘比前日收盘跌幅超过2%的日期。
  • 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
import tushare as ts
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
#获取某只股票的历史行情数据
#code:字符串形式的股票代码
df = ts.get_k_data(code='000893',start='2000-01-27')

python模拟股票的数据分析
#将互联网上获取的股票数据存储到本地
df.to_csv('./jiaomei.csv')#调用to_xxx方法将df中的数据写入到本地进行存储

python模拟股票的数据分析
#将本地存储的数据读入到df,自动添加了索引
df = pd.read_csv('jiaomei.csv')
df.head()

python模拟股票的数据分析
#删除df中指定的一列
df.drop(labels='Unnamed: 0',axis=1,inplace=True) #删除每一行的labels列
#查看每一列的数据类型
df.info()

python模拟股票的数据分析
#将date列转为时间序列类型
df['date'] = pd.to_datetime(df['date'])
#将date列作为源数据的行索引
df.set_index('date',inplace=True)

python模拟股票的数据分析

捕获上涨和下跌的日期

#输出该股票所有收盘比开盘上涨3%以上的日期
#伪代码:(收盘-开盘)/开盘 > 0.03
(df['open'] - df['close']) / df['open'] > 0.03

#在分析的过程中如果产生了boolean值则下一步马上将布尔值作为源数据的行索引
 #如果布尔值作为df的行索引,则可以取出true对应的行数据,忽略false对应的行数据
df.loc[(df['open'] - df['close']) / df['open'] > 0.03] #获取了True对应的行数据(满足需求的行数据)

df.loc[(df['open'] - df['close']) / df['open'] > 0.03].index #df的行数据

python模拟股票的数据分析
#输出该股票所有开盘比前日收盘跌幅超过2%的日期
#伪代码:(开盘-前日收盘)/前日收盘 < -0.02
(df['open'] - df['close'].shift(1))/df['close'].shift(1) < -0.02  #shift[1]表示下移一行
#将布尔值作为源数据的行索引取出True对应的行数据
df.loc[(df['open'] - df['close'].shift(1))/df['close'].shift(1) < -0.02]

df.loc[(df['open'] - df['close'].shift(1))/df['close'].shift(1) < -0.02].index

python模拟股票的数据分析
  • 需求:假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
  • 分析:
  • 时间节点:2010-2020
  • 一手股票:100支股票
  • 买:
    • 一个完整的年需要买入1200支股票
  • 卖:
    • 一个完整的年需要卖出1200支股票
  • 买卖股票的单价:
    • 开盘价
new_df = df['2010-01':'2020-02']

买股票需要找到每个月的第一个交易日的行数据

#买股票:找每个月的第一个交易日对应的行数据(捕获到开盘价)==》每月的第一行数据
#根据月份从原始数据中提取指定的数据
#每月第一个交易日对应的行数据
df_monthly = new_df.resample('M').first()#数据的重新取样

python模拟股票的数据分析

可以看到这里的索引出现的偏差,但是后面的数据是没有问题的

#买入股票花费的总金额
cost = df_monthly['open'].sum()*100
93359.50000000001
#卖出股票到手的钱
#特殊情况:2020年买入的股票卖不出去
new_df.resample('A').last()
#将2020年最后一行切出去
df_yearly = new_df.resample('A').last()[:-1]
df_yearly

python模拟股票的数据分析
#卖出股票到手的钱
resv = df_yearly['open'].sum()*1200
81811.19999999998
#最后手中剩余的股票需要估量其价值计算到总收益中
#使用昨天的收盘价作为剩余股票的单价
last_monry = 200*new_df['close'][-1]
#计算总收益
resv+last_monry-cost
-10965.300000000032 亏了,,,,,

Original: https://www.cnblogs.com/ivanlee717/p/16988064.html
Author: ivanlee717
Title: python模拟股票的数据分析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/808101/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Datawhale pandas 打卡03 索引

    文章目录 内容介绍 索引器 * 表的列索引 loc索引器 iloc索引器 query方法 随机抽样 多级索引 * 多级索引以及表的结构 多级索引的相关属性 多层索引中的loc In…

    Python 2023年8月8日
    042
  • 基于Python实现的文章整合搜索引擎网站(Scrapy+Django+MySQL)

    目 录摘 要… 11 概述… 62 技术选型… 62.1 Scrapy-Redis 分布式爬虫 … 62.1.1 Redis&#82…

    Python 2023年10月2日
    045
  • 面向对象高级–反射、内置方法和元类

    1.反射 python是一门动态语言,而反射机制被视为动态语言的关键! 反射机制指的是:在程序的运行过程中,动态的获取程序的信息和对象的功能! ‘动态’:指…

    Python 2023年10月31日
    037
  • GDAL安装教程-conda环境-无sudo-python

    干货 创建conda环境后,将anaconda给出的建议分支都尝试一下。https://anaconda.org/conda-forge/gdal To install this …

    Python 2023年9月8日
    057
  • 基于旋转高频注入法的永磁同步电机无位置传感器控制

    基于旋转高频注入法的永磁同步电机无位置传感器控制 一、原理解说 PMSM 无位置传感器控制主要分为两类:一种是在中高速范围内利用反电动势和电角速度的关系,通过计算反电动势获取转子位…

    Python 2023年9月16日
    048
  • python爬虫框架——scrapy(3) scrapy中间件

    此文主要是按照上一篇的介绍能够定制爬虫项目中间件,scrapy框架里面的代码和基本和上一篇的相同,这里进行一一介绍。这是scrapy框架的流程图(scrapy原理,安装方法都在上一…

    Python 2023年10月5日
    048
  • 初学开发框架—-Django(1)创建django项目

    所有的操作都是在pycharm上实现的,没有用过的自行百度安装教程进行下载安装 创建pycharm虚拟开发环境(包括安装django第三方库) 创建新的pychrm项目,File-…

    Python 2023年8月5日
    047
  • MySQL必知必会笔记——查询的基础知识

    查询基础知识 第七章 数据过滤 组合where子句 MySQL允许给出多个WHERE子句。这些子 句可以两种方式使用:以AND子句的方式或OR子句的方式使用。 AND操作符 可使用…

    Python 2023年6月9日
    037
  • KubeEdge SIG AI发布首个分布式协同AI Benchmark调研

    摘要:AI Benchmark旨在衡量AI模型的性能和效能。 人工智能技术已经在我们生活中的方方面面为我们提供服务,尤其是在图像、视频、语音、推荐系统等方面带来了突破性成果。AI …

    Python 2023年10月18日
    056
  • Python删除高维数组中全部维度为1的维度numpy.squeeze()

    【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 Python删除高维数组中 全部维度为1的维度 numpy.squeez…

    Python 2023年8月2日
    047
  • Flask学习笔记: app = Flask(__name__) (上)

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年8月9日
    065
  • Conda常用命令

    目录 应用场景说明 一、创建虚拟环境 二、激活/使用/进入某个虚拟环境 三、退出当前环境 四、复制某个虚拟环境 五、删除某个环境 六、查看当前所有环境 七、查看当前虚拟环境下的所有…

    Python 2023年9月7日
    049
  • 接口Mock测试结合postman运用

    目录 一、接口Mock测试 1.1 基本概念 1.2实现方式 二、Moco框架 2.1 Moco介绍 2.1.1 环境搭建 2.1.2 Moco运行 2.2常用参数配置 2.2.1…

    Python 2023年8月9日
    069
  • 网站都变成灰色了,它是怎么实现的?

    大家好,我是二哥呀。 想必大家都感受到了,很多网站、APP 在昨天都变灰了。 先来感受一下变灰后的效果。 这种灰色的效果怎么实现的呢?如何做到图片、文字、按钮都变灰的效果呢? 方案…

    Python 2023年8月3日
    084
  • 调整Matplotlib子图的大小

    前段时间就遇到了这个问题,一直忘了写,今晚夜深人静总结一波~ 问题 我相信,看到这篇博客的人,你肯定已经会使用Matplotlib中的pyplot画图。 比如下面这种图 你也应该会…

    Python 2023年8月31日
    048
  • [Pandas] 数据迭代

    df 1.迭代Series Series本身是一个可迭代的对象,可直接对Series使用for语句来遍历它的值 import pandas as pd df = pd.DataFr…

    Python 2023年8月17日
    048
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球