股票分析
需求:股票分析
- 使用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.uj5u.com/houduan/540126.html
標籤:其他
上一篇:斐波那契數列(二)
