您的位置:首页 > 其它

股票分析实战

2019-08-30 08:18 78 查看

本文转载自毛利学Python,详情可以扫描下方二维码:

深300股票指数由中证指数公司编制的沪深300指数于2005年4月8日正式发布。沪深300指数以2004年12月31日为基日,基日点位1000点·沪深300指数是由上海和深圳证券市场中选取300只A股作为样本,其中沪市有179只,深市121只样本选择标准为规模大,流动性好的股票。沪深300指数样本覆盖了沪深市场六成左右的市值,具有良好的市场代表性。作为一种商品。

读取股票

tushare包的get_k_data()函数来获取股票交易数据

#先引入后面可能用到的包(package)
import pandas as pd  
import numpy as np
import matplotlib.pyplot as plt
#正常显示画图时出现的中文
import matplotlib as mpl
#使用微软雅黑字体
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
import seaborn as sns  
import tushare as ts
%matplotlib inline    
# 沪深300:hs300
data=ts.get_k_data(code='hs300',ktype='D',
  autype='qfq', start='2005-04-08') 
#code:股票代码,个股主要使用代码,如‘600000’
#ktype:'D':日数据;‘m’:月数据,‘Y’:年数据
#autype:复权选择,默认‘qfq’前复权
#start:起始时间
#end:默认当前时间
data.head(5)

收盘价的走势

# 将date设置索引
data.index = pd.to_datetime(data['date'])
#画出沪深300收盘价的走势
data['close'].plot(figsize=(12,6))
plt.title('沪深300上市到现在走势图')
plt.xlabel('日期')
plt.show()

股票描述

data.describe()
从上述结果可以看出,沪深300从2005年4月8日至现在(最后交易日是当前运行时间),一共有3484个样本,均值为2928点,标准差为987(波动还是比较大的),最大值是5862点。

每日成交量

#再查看下每日成交量 
#2006年市场容量小,交易量比较小,我们从2007年开始看
data.loc["2005-4-08":]["volume"].plot(figsize=(12,6))
plt.title('沪深300 从2005年到2019年日成交量图')
plt.xlabel('日期')
plt.show()

上图的成交量反映了一个2007到2008年的大牛市人类可能不怎么认识股票,如此火爆竟然没人买,是我就马上下注了,可以少奋斗人生,2015到2016也涨得不错,果然是购买的人暴了。感兴趣的朋友可以结合货币供给、实体经济指标、等数据一起分析。

#沪深300日收益率
# pct_change() 等价于 (data["close"] / data["close"].shift(1)) - 1
data["日收益率"] = data["close"].pct_change()
data["日收益率"].loc['2005-4-8':].plot(figsize=(12,8),line,marker="o",color="g")
plt.xlabel('日期')
plt.ylabel('收益率')
plt.title('2005-2019年沪深300日收益率')
plt.show()

移动平均线

#动设置20,52,252日均线
#移动平均线:
ma_day = [20,52,252] # 月,季,年
# 因为银行一年周末不上班,使用一年就上班大约253天
for ma in ma_day:
    column_name = "%s日均线" %(str(ma))
    # 如果不存在就nan
    data[column_name] = data["close"].rolling(ma).mean()
#画出2006年以来收盘价和均线图
data.loc['2006-4-8':][["close","20日均线","52日均线","252日均线"]].plot(figsize=(12,6))
plt.title('沪深300走势图')
plt.xlabel('日期')
plt.show()

蒙特卡洛模拟股票

from scipy.stats import norm
# 蒙特卡洛模拟股票
# 对数收益率
log_returns = np.log(1 + data["close"].pct_change())
# 对数收益率平均值
u = log_returns.mean()
# 对数收益率方差
var = log_returns.var()
# 布朗运动的漂移(过去的收益率)
drift = u - (0.5 * var)
# 对数收益率标准差
stdev = log_returns.std()
# 一年交易252(预测一年)
t_intervals = 252
# 迭代10次 
iterations = 10
# 重点 每天的回报 历史的收益率
daily_returns = np.exp(drift + stdev * norm.ppf(np.random.rand(t_intervals, iterations)))
daily_returns.shape # (252, 10)
# 将最后一天作为开始
S0 = data["close"].iloc[-1]
# 创建(252,10)的零矩阵
price_list = np.zeros_like(daily_returns)
# 将S0 赋予 price_list[0]
price_list[0] = S0
#在范围(1,t_间隔)内创建一个循环,该循环将日价格(t-1)与日回报值(t)的乘积重新分配给时间t中的价格。
for t in range(1, t_intervals):
    price_list[t] = price_list[t - 1] * daily_returns[t]
plt.figure(figsize=(10,6))
plt.plot(price_list)
plt.show()
可见对于股票传统的蒙特卡洛的无法准确的预测,所以必须使用更加高级的深度学习模型来学习,预测股票未来的发展走势

◆ ◆ ◆  ◆ ◆

长按二维码关注我们

数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: