股票分析
需求:股票分析
- 使用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\')
#将互联网上获取的股票数据存储到本地
df.to_csv(\'./jiaomei.csv\')#调用to_xxx方法将df中的数据写入到本地进行存储
#将本地存储的数据读入到df,自动添加了索引
df = pd.read_csv(\'jiaomei.csv\')
df.head()
#删除df中指定的一列
df.drop(labels=\'Unnamed: 0\',axis=1,inplace=True) #删除每一行的labels列
#查看每一列的数据类型
df.info()
#将date列转为时间序列类型
df[\'date\'] = pd.to_datetime(df[\'date\'])
#将date列作为源数据的行索引
df.set_index(\'date\',inplace=True)
捕获上涨和下跌的日期
#输出该股票所有收盘比开盘上涨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的行数据
#输出该股票所有开盘比前日收盘跌幅超过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
- 需求:假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
- 分析:
- 时间节点:2010-2020
- 一手股票:100支股票
- 买:
- 一个完整的年需要买入1200支股票
- 卖:
- 一个完整的年需要卖出1200支股票
- 买卖股票的单价:
- 开盘价
new_df = df[\'2010-01\':\'2020-02\']
买股票需要找到每个月的第一个交易日的行数据
#买股票:找每个月的第一个交易日对应的行数据(捕获到开盘价)==》每月的第一行数据
#根据月份从原始数据中提取指定的数据
#每月第一个交易日对应的行数据
df_monthly = new_df.resample(\'M\').first()#数据的重新取样
可以看到这里的索引出现的偏差,但是后面的数据是没有问题的
#买入股票花费的总金额
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
#卖出股票到手的钱
resv = df_yearly[\'open\'].sum()*1200
81811.19999999998
#最后手中剩余的股票需要估量其价值计算到总收益中
#使用昨天的收盘价作为剩余股票的单价
last_monry = 200*new_df[\'close\'][-1]
#计算总收益
resv+last_monry-cost
-10965.300000000032 亏了,,,,,
本文来自博客园,作者:ivanlee717,转载请注明原文链接:https://www.cnblogs.com/ivanlee717/p/16988064.html
来源:https://www.cnblogs.com/ivanlee717/p/16988064.html
本站部分图文来源于网络,如有侵权请联系删除。