import pandas as pd
import akshare as ak
import numpy as np
import talib
from datetime import datetime, timedelta
import time

获取股票数据

from_date = '2010-01-01'
from_date = datetime.strptime(from_date,"%Y-%m-%d")
day_nums = 1
current_dt = time.strftime("%Y-%m-%d", time.localtime())
current_dt = datetime.strptime(current_dt, '%Y-%m-%d')
previous_date = current_dt - timedelta(days=day_nums)
data = ak.stock_zh_a_daily(symbol='sz000001',start_date = from_date,end_date =  previous_date)
df = data
df.index=pd.to_datetime(df.date)
cols=['Open', 'High', 'Low', 'Close']
dataset=df[['open','high','low','close']]
dataset=dataset.rename(columns=dict(zip(dataset.columns,cols)))
dataset.head()

01 数据预处理

dataset['H-L'] = dataset['High'] - dataset['Low']
dataset['O-C'] = dataset['Close'] - dataset['Open']
dataset['3day MA'] = dataset['Close'].shift(1).rolling(window = 3).mean()
dataset['10day MA'] = dataset['Close'].shift(1).rolling(window = 10).mean()
dataset['30day MA'] = dataset['Close'].shift(1).rolling(window = 30).mean()
dataset['Std_dev']= dataset['Close'].rolling(5).std()
dataset['RSI'] = talib.RSI(dataset['Close'].values, timeperiod = 9)
dataset['Williams %R'] = talib.WILLR(dataset['High'].values, dataset['Low'].values, dataset['Close'].values, 7)dataset['Price_Rise'] = np.where(dataset['Close'].shift(-1) > dataset['Close'], 1, 0)
#删除缺失值
dataset = dataset.dropna()
#查看最后五列数据
dataset.tail()X = dataset.iloc[:, 4:-1]
y = dataset.iloc[:, -1]split = int(len(dataset)*0.8)
X_train, X_test, y_train, y_test = X[:split], X[split:], y[:split], y[split:]from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

02 构建神经网络

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
classifier = Sequential()classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu', input_dim = X.shape[1]))classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))classifier.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics = ['accuracy'])classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)

03 预测股票走势

y_pred = classifier.predict(X_test)
y_pred = (y_pred > 0.5)dataset['y_pred'] = np.NaN
dataset.iloc[(len(dataset) - len(y_pred)):,-1:] = y_pred
trade_dataset = dataset.dropna()

04 计算策略收益

import warnings
warnings.filterwarnings('ignore')
trade_dataset['Tomorrows Returns'] = 0.
trade_dataset['Tomorrows Returns'] = np.log(trade_dataset['Close']/trade_dataset['Close'].shift(1))
trade_dataset['Tomorrows Returns'] = trade_dataset['Tomorrows Returns'].shift(-1)trade_dataset['Strategy Returns'] = 0.
trade_dataset['Strategy Returns'] = np.where(trade_dataset['y_pred'] == True, trade_dataset['Tomorrows Returns'], - trade_dataset['Tomorrows Returns'])trade_dataset['Strategy Returns'] = 0.
trade_dataset['Strategy Returns'] = np.where(trade_dataset['y_pred'] == True, trade_dataset['Tomorrows Returns'], - trade_dataset['Tomorrows Returns'])trade_dataset['Cumulative Market Returns'] = np.cumsum(trade_dataset['Tomorrows Returns'])
trade_dataset['Cumulative Strategy Returns'] = np.cumsum(trade_dataset['Strategy Returns'])

05 收益可视化

import matplotlib.pyplot as plt
trade_dataset[['Cumulative Market Returns','Cumulative Strategy Returns']].plot(figsize=(14,8));

机器学习预测+akshare相关推荐

  1. 计算机书籍-机器学习预测分析

    书名:Python机器学习 预测分析核心算法 作者:[美] Michael Bowles(鲍尔斯) 出版社:人民邮电出版社 品牌:异步图书

  2. 机器学习预测农民是否可以得到贷款

    通过最佳实践帮助您实现上述案例效果 Step1:数据导入MaxCompute 1.1 创建需要上传的本地数据 贷款预测表:(今年申请贷款者) 字段名 含义 类型 描述 id 数据唯一标识符 strin ...

  3. ML之预测:玩转2018世界杯—采用机器学习预测小组赛、十六比赛、四决赛、半决赛、决赛以及世界杯总冠军的各个队伍

    ML之预测:玩转2018世界杯-采用机器学习预测小组赛.十六比赛.四决赛.半决赛.决赛以及世界杯总冠军的各个队伍 导读       机器学习预测.玩转2018世界杯-采用机器学习预测小组赛.十六比赛. ...

  4. 使用机器学习预测天气_使用机器学习的二手车价格预测

    使用机器学习预测天气 You can reach all Python scripts relative to this on my GitHub page. If you are intereste ...

  5. 知乎 开源机器学习_使用开源数据和机器学习预测海洋温度

    知乎 开源机器学习 In this tutorial, we're going to show you how to take open source data from the National O ...

  6. 使用机器学习预测天气_如何使用机器学习预测着陆

    使用机器学习预测天气 Based on every NFL play from 2009–2017 根据2009-2017年每场NFL比赛 Ah, yes. The times, they are c ...

  7. 使用机器学习预测天气_如何使用机器学习根据文章标题预测喜欢和分享

    使用机器学习预测天气 by Flavio H. Freitas Flavio H.Freitas着 如何使用机器学习根据文章标题预测喜欢和分享 (How to predict likes and sh ...

  8. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  9. 《Python机器学习——预测分析核心算法》——2.4 基于因素变量的实数值预测:鲍鱼的年龄...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.4节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

最新文章

  1. Linux下配置SSL (转)
  2. 手机网页 右边的空白区
  3. hdu 2025:查找最大元素(水题,顺序查找)
  4. 聊城高级财经计算机应用升学,聊城高级财经职业学校成功承办省级职业技能大赛赛项...
  5. Servlet--HttpServletRequest一些不常用的方法
  6. [USACO1.1]贪婪的送礼者Greedy Gift Givers
  7. 基于python的查重系统_答案在这!如何快速的通过论文查重检测?
  8. 第三章选择结构(一)
  9. mysql 结果集 超大_使用MySQL流式传输大型结果集
  10. [C/C++] gdb 调试
  11. 两台windows笔记本创建家庭组实现文件共享
  12. 分布式锁是啥?对比下redis和zk两种分布式锁的优劣?
  13. Mac录制屏幕转GIF
  14. PDF不能编辑怎么办?捷速PDF编辑器快速编辑!
  15. linux中apache无法启动,Apache无法启动
  16. 几何分布及其期望与方差
  17. 表示学习(Representation Learning)
  18. 简单代理事件工具(百搜技术)
  19. 主板aspm关闭_主板ASpm功能是什么模式
  20. python中如何打印阶梯_python 阶梯图

热门文章

  1. 通过解析URL实现通过Wifi的用户查找
  2. SpringBoot 启动报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no emb
  3. 云计算三大主流阵营的竞争与合作
  4. 程序员的半衰期只有15年?
  5. FFMpeg分析详细分析
  6. 基于IP的H.264关键技术
  7. 解决:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘ip‘ at row 1
  8. mybatis3 中 @Provider 的使用方式
  9. F12 界面:请求响应内容 Preview 和 Response 不一致、接口返回数据和 jsp 解析到的内容不一致
  10. kettle变量(param命名参数)