ricequant研究平台代码,用于进行训练模型的生成,训练文件保存

import pandas as pd
import numpy as np# 导入BP模型
from sklearn.neural_network import MLPClassifier
# 导入训练集分割方法
from sklearn.model_selection import train_test_split # 确定每月日期 2014-01-01~2016-01-01
dates = get_trading_dates(start_date="2014-01-01", end_date="2016-01-01")
# 每天日期---->每月月末
# 每月最后一个交易日, 按月计算收益率
month_date = []
for i in range(len(dates) -1):if dates[i].year != dates[i+1].year:month_date.append(dates[i])elif dates[i].month != dates[i+1].month:month_date.append(dates[i])#把最后一个交易日加入
month_date.append(dates[-1])stocks = index_components("000300.XSHG")all_data = pd.DataFrame()
len_date = len(month_date[:-1])
for i in range(0, len_date):date = month_date[i]date_next = Noneif i + 1 < len_date:date_next = month_date[i+1]fund = get_factor(stocks, ["pe_ratio_lyr","pb_ratio_lyr","market_cap","ev_lyr","return_on_asset_net_profit_lyr","du_return_on_equity_lyr","basic_earnings_per_share","net_profit_to_revenue_lyr","total_expense"],start_date=date,end_date=date)fund.reset_index(inplace=True)fund.sort_index(inplace=True)fund['next_month_return'] = 0if not (date_next is None):for i in range(0, fund.shape[0]):stock = fund.iloc[i]["order_book_id"]price1 = get_price(stock, start_date=date, end_date=date, fields='close')price2 = get_price(stock, start_date=date_next, end_date=date_next, fields='close')if (price1 is not None) and (price2 is not None):price1.reset_index(inplace=True)price2.reset_index(inplace=True)#fund.loc[i:i,('next_month_return')] = (float)(price2["close"] / price1["close"]) - 1 #赋值不强转就赋值不上if (float)(price2["close"] / price1["close"]) - 1 > 0.1:fund.loc[i:i,('next_month_return')] = 1# 进行每月因子数据拼接all_data = pd.concat([all_data, fund])# 把收益率为空删除
all_data = all_data.dropna()def mad(factor):"""3倍中位数去极值"""# 求出因子值的中位数med = np.median(factor)# 求出因子值与中位数的差值,进行绝对值mad = np.median(np.abs(factor - med))# 定义几倍的中位数上下限high = med + (3 * 1.4826 * mad)low = med - (3 * 1.4826 * mad)# 替换上下限以外的值factor = np.where(factor > high, high, factor)factor = np.where(factor < low, low, factor)return factordef stand(factor):"""标准化"""mean = np.mean(factor)std = np.std(factor)return (factor - mean)/std#随机打乱,并采样,index已乱
all_data = all_data.sample(frac=0.7) #训练数据
x = all_data[["pe_ratio_lyr","pb_ratio_lyr","market_cap","ev_lyr","return_on_asset_net_profit_lyr","du_return_on_equity_lyr","basic_earnings_per_share","net_profit_to_revenue_lyr","total_expense"]].copy()# 取出目标值
y = all_data[['next_month_return']].copy()# 1、特征值处理
# 去极值、标准化、中性化
for name in x.columns:x[name] = mad(x[name])x[name] = stand(x[name])#分为训练集与测试集
x_train,x_test = train_test_split(x,test_size=0.1,random_state=42)#训练集
y_train,y_test = train_test_split(y,test_size=0.1,random_state=42)#测试集# 建立 BP 模型, 采用Adam优化器,relu非线性映射函数
BP = MLPClassifier(solver='adam',activation = 'relu',max_iter = 10000,alpha = 1e-3,hidden_layer_sizes = (64,32, 32),random_state = 1)
# 进行模型训练
BP.fit(x_train.values, y_train.values.ravel())# 进行模型预测
#predict_train_labels = BP.predict(x_test)y_predict = BP.predict(x_train)#精确率
acc = np.mean([(x == y)  for x, y in zip(y_predict,y_train.values) if y==1])
accimport pickle# 保存模型
with open('model.txt', 'wb') as f:pickle.dump(BP, f)# 读取模型
with open('model.txt', 'rb') as f:model = pickle.load(f)
model.predict(x_train)

我的策略进行模型效果分析

import pickle
import pandas as pd
import numpy as np# 导入BP模型
from sklearn.neural_network import MLPClassifier
# 导入训练集分割方法
from sklearn.model_selection import train_test_split
from six import StringIO
from six import BytesIO
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):body = get_file('model.txt')context.model = pickle.load(BytesIO(body))#model.predict(x_train)context.hs300 = index_components("000300.XSHG")scheduler.run_monthly(regression_select, tradingday=1)def regression_select(context, bar_dict):fund = get_factor(context.hs300, ["pe_ratio_lyr","pb_ratio_lyr","market_cap","ev_lyr","return_on_asset_net_profit_lyr","du_return_on_equity_lyr","basic_earnings_per_share","net_profit_to_revenue_lyr","total_expense"])fund.dropna(inplace=True)fund.reset_index(inplace=True)#训练数据x = fund[["pe_ratio_lyr","pb_ratio_lyr","market_cap","ev_lyr","return_on_asset_net_profit_lyr","du_return_on_equity_lyr","basic_earnings_per_share","net_profit_to_revenue_lyr","total_expense"]].copy()# 1、特征值处理# 去极值、标准化、中性化for name in x.columns:x[name] = mad(x[name])x[name] = stand(x[name])y = context.model.predict(x)stock_return = dict(zip(fund["order_book_id"], y))# 对字典进行排序score = sorted(stock_return.items(), key=lambda x: x[1], reverse=True)[:20]# 取出score的股票代码context.stocklist = [x[0] for x in score]rebalance(context)def rebalance(context):# 卖出for stock in context.portfolio.positions.keys():if context.portfolio.positions[stock].quantity > 0:if stock not in context.stocklist:order_target_percent(stock, 0)weight = 1.0 / len(context.stocklist)# 买入for stock in context.stocklist:order_target_percent(stock, weight)def rebalance(context):# 卖出for stock in context.portfolio.positions.keys():if context.portfolio.positions[stock].quantity > 0:if stock not in context.stocklist:order_target_percent(stock, 0)weight = 1.0 / len(context.stocklist)# 买入for stock in context.stocklist:order_target_percent(stock, weight)# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):pass# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):pass# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):passdef mad(factor):"""3倍中位数去极值"""# 求出因子值的中位数med = np.median(factor)# 求出因子值与中位数的差值,进行绝对值mad = np.median(np.abs(factor - med))# 定义几倍的中位数上下限high = med + (3 * 1.4826 * mad)low = med - (3 * 1.4826 * mad)# 替换上下限以外的值factor = np.where(factor > high, high, factor)factor = np.where(factor < low, low, factor)return factordef stand(factor):"""标准化"""mean = np.mean(factor)std = np.std(factor)return (factor - mean)/std

交易效果图

 通过此量化交易策略,获得了超出市场一倍的超额收益。

基于ricequant神经网络量化交易相关推荐

  1. python 量化交易_基于Python的量化交易工具清单(上)

    -- Python量化工具清单 -- 以下内容来源于Wilson Freitas的Github项目"Awesome Quant".原文中包含了丰富的语言类别,但是后续介绍主要针对P ...

  2. R语言神经网络量化交易模型

    上篇是逻辑回归模型,这次我们用神经网络模型.再算一遍,试试看 # 载入示例股票library(quantmod) getSymbols("^DJI", src = "ya ...

  3. 基于人性的量化交易:期货的反向跟单交易软件系统

    一. 反向跟单的概念 一.财智汇反向跟单系统简介 一款不用客户手动操作,利用逆向思维跟踪小白亏货操作的自动交易软件. 转载于:https://my.oschina.net/u/617911/blog/ ...

  4. 基于Informer的股价预测(量化交易综述)

    摘要 股票市场是金融市场中不可或缺的组成部分.准确预测股票趋势对于投资者和市场参与者具有重要意义,因为它们可以指导投资决策.优化投资组合以及降低金融风险.而且可以提升国家国际地位以及金融风险控制能力, ...

  5. 基于人工智能的期权量化交易

    基于人工智能的期权量化交易 基于人工智能的期权量化交易 基于人工智能的期权量化交易 该文基于人工智能AI的深度强化学习,进行股票期权的量化投资策略研究及回测评估.作者建立了人工智能学习及交易系统.基于 ...

  6. python量化投资必背代码-基于python的开源量化交易,量化投资架构

    原标题:基于python的开源量化交易,量化投资架构 github地址:https://github.com/bbfamily/abu abu能够帮助用户自动完善策略,主动分析策略产生的交易行为,智能 ...

  7. python 量化交易 框架 开源_Hikyuu首页、文档和下载 - 基于 C++/Python 的开源量化交易研究框架 - OSCHINA - 中文开源技术交流社区...

    Hikyuu Quant Framework是一款基于C++/Python的开源量化交易研究框架,用于策略分析及回测.其核心思想基于当前成熟的系统化交易方法,将整个系统化交易抽象为由市场环境判断策略. ...

  8. python量化交易开源框架_hikyuu: 基于C++/Python的开源量化交易研究框架

    Hikyuu Quant Framework是一款基于C++/Python的开源量化交易研究框架,用于策略分析及回测(仅受限于数据,如有数据也可用于期货等).其核心思想基于当前成熟的系统化交易方法,将 ...

  9. python统计套利_清华编程高手尹成带你基于算法实践python量化交易

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

  10. python量化交易书籍推荐知乎_GitHub - XingkaiLiang/vnpy: 基于python的开源量化交易平台开发框架...

    vn.py - By Traders, For Traders. 简介 vn.py是基于Python的开源量化交易程序开发框架,起源于国内私募的自主量化交易系统.2015年初项目启动时只是单纯的交易A ...

最新文章

  1. 4.1 陷入不归路的调试-机器学习笔记-斯坦福吴恩达教授
  2. WordPress的cookie处理
  3. Logistic regression Newton’s method
  4. 解决VMWare虚拟机IP变成127.0.0.1和选择固定IP段
  5. 让ECSHOP模板支持转smarty时间戳
  6. 自学python需要安装什么-自学python用什么系统好
  7. GridView 分页导航
  8. 【电脑】VirtualBox 安装 Win98 写网页
  9. android 互传文件,堪比隔空投送!iPhone和安卓、PC互传文件的3种方法,建议收藏...
  10. 苹果8a1660是什么版本_苹果a1780是什么版本
  11. CUDA的旋转R ROI Align的OPENCL实现1(原理理解)
  12. Java的8 大基本类型的包装类和美女选妃案例的两种写法
  13. 简述MFC程序生与死
  14. Linux虚拟机遇到的一些问题
  15. IGWO-SVM:改良的灰狼优化算法改进支持向量机。 采用三种改进思路:两种Logistic和Tent混沌映射和采用DIH策略
  16. 2017南宁(重温经典)
  17. 毫米波雷达技术应用,飞睿科技人体存在感应检测模块
  18. 致远OA ajax.do 任意文件上传 (CNVD-2021-01627) 漏洞复现
  19. 打开远程会议模式新篇章,华为云会议让沟通更高效!
  20. 立大仁义,必有大伪诈,立大慈悲,必有大魔

热门文章

  1. vfp python_2018年VisualFoxPro
  2. 显示器测试软件 绿色,DisPlayX-显示器测试工具
  3. 全新的SharePoint 2019
  4. 软件著作权的申请超详细图文
  5. 防火墙系列---思科防火墙 ASA
  6. 收集了 1000 个 iOS 常用的库。原文:https://github.com/iamdaiyuan/ios_top_1000
  7. Chromium OS Autotest 客户端测试
  8. Busybox中httpd、ftpd、telnetd、tftpd、ntpd的用法
  9. 目前常见软件保护技术概述
  10. 使用gui来初始化参数matlab,MATLAB GUI参数传递方式