好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

股票分析实战

沪深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),linestyle="--",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()  

可见对于股票传统的蒙特卡洛的无法准确的预测,所以必须使用更加高级的深度学习模型来学习,预测股票未来的发展走势

最后,祝有所学习,有所成长

回复【 1024 】获取学习资料

转发,好看支持一下,感谢

你的转发,就是对我最大的支持

查看更多关于股票分析实战的详细内容...

  阅读:35次