# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import pandas  as  pd
import numpy as  np
from  sklearn.linear_model import LinearRegression  # 线性回归算法正规方程求解# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):# 在context中保存全局变量# 股票池初始化# 沪深300--在沪市和深市中表现较好的300支股票context.hs300 = index_components("000300.XSHG")weight = np.array([0.02953221, -0.04920124, -0.10791485, 0.00801783, -0.03613599, 0.1310877, -0.03030564, 0.40286239,-0.30166898])context.weight = np.mat(weight).Tcontext.stock_num = 20scheduler.run_monthly(mylineRegression, tradingday=1)  # 每月运行一次,每月第一天运行#调用下面的mylneRegression函数,框架封装好def three_sigma(data):"""进行3sigma离群值处理:param data: 传入的数据
#   :return: 拉回离群值之后的data"""up = data.mean() + 3 * data.std()low = data.mean() - 3 * data.std()# 超过上限用上限代替np.where(data > up, up, data)np.where(data < low, low, data)return datadef stand_sca(data):"""#标准差标准化数据:param data: c传入的数据:return: 标准化之后的数据"""# mean()#均值;std()#标准差data = (data - data.mean()) / data.std()return data#数组和DataFrame的主要区别是DataFrame有索引def deal_with_data(data):"""数据处理"""# 1、缺失值处理data.dropna(axis=0, how='any', inplace=True)# 2、去极值# data=three_sigma(data)# #3、标准化# data=stand_sca(data)for column in data.columns:# 2、去极值data.loc[:, column] = three_sigma(data.loc[:, column])market_cap = data.loc[:, 'market_cap']# #3、标准化data.loc[:, column] == stand_sca(data.loc[:, column])# 市值中性化# if  column=市值因子#   continueif column == 'market_cap':continuelr = LinearRegression()x = market_capy = data.loc[:, column]# 训练模型lr.fit(x.values.reshape(-1, 1), y)# 进行预测y_predict = lr.predict(x.values.reshape(-1, 1))# 相减data.loc[:, column] = y - y_predictreturn datadef tiaocang(context, stock_list):"""进行股票买卖"""# 查询仓位for tmp in context.portfolio.positions.keys():if tmp not in stock_list:# 卖出,全部卖出order_target_percent(tmp, 0)# 买入# 平均买for tmp in stock_list:order_target_percent(tmp, 1 / len(stock_list))def mylineRegression(context, bar_dict):"""每月需要处理的功能"""# 1、获取财务数据# 构建queryq = query(fundamentals.eod_derivative_indicator.pe_ratio, fundamentals.eod_derivative_indicator.pb_ratio,fundamentals.eod_derivative_indicator.market_cap, fundamentals.financial_indicator.ev,fundamentals.financial_indicator.return_on_asset_net_profit,fundamentals.financial_indicator.du_return_on_equity, fundamentals.financial_indicator.earnings_per_share,fundamentals.income_statement.revenue, fundamentals.income_statement.total_expense).filter(fundamentals.stockcode.in_(context.hs300))fund = get_fundamentals(q)# 获取到财务数据# print(fund.T)context.factor_data = fund.T# 数据处理context.factor_data = deal_with_data(context.factor_data)# print(context.factor_data.shape)# 构建因子与下期收益之间的线性回归# factor_data  * w =下期收益"""context.factor_data.loc[:, 'return'] = np.dot(context.factor_data, context.weight)# 要拿到收益较高的股票代码--进行买卖stock_list = context.factor_data.loc[:, 'return'].sort_values(ascending=False)[:context.stock_num].indexprint(stock_list)# 进行买卖tiaocang(context, stock_list)# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):# 可以获取账户资金或者在每天交易之前做一些操作pass# print(context.hs300)# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):# 开始编写你的主要的算法逻辑pass# bar_dict[order_book_id] 可以拿到某个证券的bar信息# context.portfolio 可以拿到现在的投资组合信息# 使用order_shares(id_or_ins, amount)方法进行落单#产生交易信号、进行订单创建# TODO: 开始编写你的算法吧!# order_shares(context.s1, 1000)# print('handle_bar')# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):# 每日结束时做一些操作pass# print('after_trading')

结果:

米匡框架实现量化交易炒股相关推荐

  1. python量化交易的框架_python量化交易框架easyquant试用体会

    在github上发现一个python写的,看上去简单实用的量化交易框架easyquant,作者是在他写的easytrader上实现了自动读取行情和交易登入,初步试验了雪球登入,效果还不错. 安装这个框 ...

  2. 《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

    点击:QTYX最新版本使用指南[文字版] 点击:QTYX最新版本使用指南[视频版] 点击: QTYX历史版本更新说明 赠送"回测框架"的目的 为了帮助读者再建立一座从书本知识到实战 ...

  3. 量化交易如何进行回测+模拟+实盘?包括哪些回测框架?

    大家在进行实盘交易前,必须对量化交易策略进行回测和模拟,以确定策略是否有效,并进行改进和优化.作为一般人而言,你能想到的,一般都有人做过了.回测框架也如此.当前小白看到的主要有如下五个回测框架: 1. ...

  4. 知识星球《玩转股票量化交易》之Backtrader量化框架的使用说明

    量化交易是一个多技术综合的项目,学习完书籍<Python股票量化交易从入门到实践>我们再次升级学习的内容--知识星球<玩转股票量化交易> 在星球中我们会深入分享包括Python ...

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

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

  6. python用途适合做什么生意-PureQuant数字货币量化交易程序化交易python量化开源框架...

    什么是量化交易 量化交易起源于上世纪七十年代的股票市场,是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式.量化交易从庞大的历史数据中海选能够带来超额收益的多种"大概率& ...

  7. Pyalgotrade量化交易回测框架

    现在就开始干活了.先要测试一下pyalgotrade回测数据对不对.我找了个参照标准:在聚宽上开通了个账号,按入门教程写了个策略:2016-2018年每个交易日买入100股平安银行(000001),回 ...

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

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

  9. python量化回测框架_股票量化交易回测框架pyalgotrade源码阅读(一)

    PyAlgoTrade是什么呢? 一个股票量化交易的策略回测框架. 而作者的说明如下. To make it easy to backtest stock trading strategies. 简单 ...

最新文章

  1. D3D11中的硬件反锯齿 SSAA/MSAA/EQAA/CSAA(3)
  2. 2015-12-15 关于就近日期
  3. b站上java和python视频可以吗_b站有哪些好的java视频?
  4. 2022年全球及中国面粉混合物行业发展态势与消费需求前景调查报告
  5. 【java】ssh the connection is not authenticated
  6. DeFi 协议 Benchmark Protocol 启动第二阶段流动性挖矿计划 The Press
  7. Java开发工具Jcreator使用技巧总结
  8. java acr122 读取数据_acr122读写器软件下载
  9. 3篇SCI定A类博士!直聘副教授七级!有偿70㎡住房+30万安家费+25万科启
  10. 使用u盘量产工具修复写保护的u盘
  11. 银行柜员网申计算机水平要求高吗,银行笔试通过率:看你网申如何?
  12. 组织分解结构(Organizational Breakdown Structure OBS)
  13. 萌娃投票程序php+mysql,PHP+MySql+jQuery实现的顶和踩投票功能
  14. (九) 正则表达式——文本处理(用s///替换、split与join函数、列表上下文中的m//、非贪婪量词、文件更新等)
  15. iosxib 设置图片_iOS从Xib中设置样式
  16. Arcgis利用dem数据生成等高线
  17. spacedesk安装失败2503/2502错误
  18. java生成二值图,如何创建java poi条形图,结合两个条形值,如给定的图像?
  19. Eth 2.0 会成为第一个从 PoW转PoS 的公链吗?丨SheKnows第五期
  20. 对话bot语音输入交互竞品调研

热门文章

  1. 【人工智能导论】遗传算法求解TSP问题(含源码github)
  2. 【Java虚拟机】Java虚拟机深度讲解、VisualVM工具、JVM调优
  3. Zookeeper API 学习与使用
  4. JVM详解之:汇编角度理解本地变量的生命周期
  5. Leet Code OJ 237. Delete Node in a Linked List [Difficulty: Easy]
  6. rabbitMQ教程 spring整合rabbitMQ代码实例
  7. Netty之Channel源代码分析
  8. 18.fields_capabilities_api
  9. @RequestParam 注解的使用——Spring系列知识学习笔记
  10. 【双100%解法】剑指 Offer 22. 链表中倒数第k个节点