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')

image-20221216172254999

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

image-20221216173406886

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

image-20221216173514734

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

image-20221216173714708

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

image-20221216173905815

捕获上涨和下跌的日期

#输出该股票所有收盘比开盘上涨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的行数据 

image-20221216174402720

#输出该股票所有开盘比前日收盘跌幅超过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

image-20221216175338656

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

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

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

image-20221216180447063

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

#买入股票花费的总金额
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

image-20221216181105304

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python模拟股票的数据分析 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • mysql面试小结

    MySQL 1. 索引 1.1 什么是索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 更通俗的说,索引就相当于目录。为了方便查找书中的内容,…

    MySQL 2023年4月18日
    00
  • matplotlib画图基础知识

    matplotlib plt.plot()绘制线性图 绘制单条线形图 绘制多条线形图 设置坐标系的比例plt.figure(figsize=(a,b)) 设置图例legend() 设置轴的标识 图例保存 fig = plt.figure() plt.plot(x,y) figure.savefig() import matplotlib.pyplot as …

    2023年4月2日
    00
  • 爬虫学习1——request使用

    爬虫 什么是爬虫: – 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。 爬虫究竟是合法还是违法的? 在法律中是不被禁止 具有违法风险 善意爬虫 恶意爬虫 爬虫带来的风险可以体现在如下2方面:- 爬虫干扰了被访问网站的正常运营- 爬虫抓取了收到法律保护的特定类型的数据或信息 如何在使用编写爬虫的过程中避免进入局子的厄运呢? – 时常的优化自己…

    2023年3月31日
    00
  • django编写cookie

    cookie HTTP协议是一个无状态协议,即每一个请求都是独立的!无法记录前一次请求的状态,但HTTP会使用cookie值进行跟踪会话。在WEB开发当中,使用session来完成会话跟踪,session底层依赖于cookie技术。 其实cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的co…

    2023年4月2日
    00
  • 数据分析之pandas的使用

    pandas 为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据! 什么是pandas? 首先先来认识pandas中的两个常用…

    2023年4月2日
    00
  • django_响应对象

    Django_响应对象 响应对象 响应对象有三种形式: HttpResponse() render() Redirect() (1) HttpResponse() django服务器接收到客户端发来的请求之后,会将提交上来的数据封装成一个HttpResponse对象传给视图函数。视图函数在处理完相关逻辑之后,也需要一个返回响应给浏览器。而这个响应方式,我们必…

    2023年4月2日
    00
  • CSRF和token以及用django实现

    csrf CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,具有很大的危害性。具体来讲,可以这样理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的…

    2023年4月2日
    00
  • django学习__1

    Django python网络编程回顾 之前我们介绍过web应用程序和http协议,简单了解过web开发的概念。Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息 处理本次HTTP请求,即完成本次请求的业务逻辑处理 构造并返回处理结果——HTTP响应 import socket server = socket.socket() server.b…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部