0. 第一个量化策略

# 初始化函数,设定基准等等
def initialize(context):
set_benchmark('000300.XSHG')
g.security = get_index_stocks('000300.XSHG') # 股票池
set_option('use_real_price', True)
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
log.set_level('order','warning') def handle_data(context, data): # 一般情况下先卖后买 tobuy = []
for stock in g.security:
p = get_current_data()[stock].day_open
amount = context.portfolio.positions[stock].total_amount
cost = context.portfolio.positions[stock].avg_cost
if amount > 0 and p >= cost * 1.25:
order_target(stock, 0) # 止盈
if amount > 0 and p <= cost * 0.9:
order_target(stock, 0) # 止损 if p <= 10.0 and amount == 0:
tobuy.append(stock) if len(tobuy)>0:
cash_per_stock = context.portfolio.available_cash / len(tobuy)
for stock in tobuy:
order_value(stock, cash_per_stock) 1. 双均线策略 def initialize(context):
set_benchmark('600519.XSHG')
set_option('use_real_price', True)
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock') g.security = ['600519.XSHG']
g.p1 = 5
g.p2 = 30 def handle_data(context, data):
for stock in g.security:
# 金叉:如果5日均线大于10日均线并且不持仓
# 死叉:如果5日均线小于10日均线并且持仓
df = attribute_history(stock, g.p2)
ma10 = df['close'].mean()
ma5 = df['close'][-5:].mean() if ma10 > ma5 and stock in context.portfolio.positions:
# 死叉
order_target(stock, 0) if ma10 < ma5 and stock not in context.portfolio.positions:
# 金叉
order_value(stock, context.portfolio.available_cash * 0.8)
# record(ma5=ma5, ma10=ma10) 2. 因子选股 def initialize(context):
set_benchmark('000002.XSHG')
set_option('use_real_price', True)
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
g.security = get_index_stocks('000002.XSHG') g.q = query(valuation).filter(valuation.code.in_(g.security))
g.N = 20 run_monthly(handle, 1) def handle(context):
df = get_fundamentals(g.q)[['code', 'market_cap']]
df = df.sort('market_cap').iloc[:g.N,:] to_hold = df['code'].values for stock in context.portfolio.positions:
if stock not in to_hold:
order_target(stock, 0) to_buy = [stock for stock in to_hold if stock not in context.portfolio.positions] if len(to_buy) > 0:
cash_per_stock = context.portfolio.available_cash / len(to_buy)
for stock in to_buy:
order_value(stock, cash_per_stock) 3. 多因子选股 def initialize(context):
set_benchmark('000002.XSHG')
set_option('use_real_price', True)
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
g.security = get_index_stocks('000002.XSHG') g.q = query(valuation, indicator).filter(valuation.code.in_(g.security))
g.N = 20 run_monthly(handle, 1) def handle(context):
df = get_fundamentals(g.q)[['code', 'market_cap', 'roe']]
df['market_cap'] = (df['market_cap'] - df['market_cap'].min()) / (df['market_cap'].max()-df['market_cap'].min())
df['roe'] = (df['roe'] - df['roe'].min()) / (df['roe'].max()-df['roe'].min())
df['score'] = df['roe']-df['market_cap'] df = df.sort('score').iloc[-g.N:,:] to_hold = df['code'].values for stock in context.portfolio.positions:
if stock not in to_hold:
order_target(stock, 0) to_buy = [stock for stock in to_hold if stock not in context.portfolio.positions] if len(to_buy) > 0:
cash_per_stock = context.portfolio.available_cash / len(to_buy)
for stock in to_buy:
order_value(stock, cash_per_stock) 4. 均值回归 import jqdata
import math
import numpy as np
import pandas as pd def initialize(context):
set_option('use_real_price', True)
set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
set_benchmark('000002.XSHG') g.security = get_index_stocks('000002.XSHG') g.ma_days = 30
g.stock_num = 10 run_monthly(handle, 1) def handle(context): sr = pd.Series(index=g.security)
for stock in sr.index:
ma = attribute_history(stock, g.ma_days)['close'].mean()
p = get_current_data()[stock].day_open
ratio = (ma-p)/ma
sr[stock] = ratio
tohold = sr.nlargest(g.stock_num).index.values
# print(tohold) # to_hold = # for stock in context.portfolio.positions:
if stock not in tohold:
order_target_value(stock, 0) tobuy = [stock for stock in tohold if stock not in context.portfolio.positions] if len(tobuy)>0:
cash = context.portfolio.available_cash
cash_every_stock = cash / len(tobuy) for stock in tobuy:
order_value(stock, cash_every_stock)

python之在线平台与量化投资的更多相关文章

  1. Python金融应用编程(数据分析、定价与量化投资)

    近年来,金融领域的量化分析越来越受到理论界与实务界的重视,量化分析的技术也取得了较大的进展,成为备受关注的一个热点领域.所谓金融量化,就是将金融分析理论与计算机编程技术相结合,更为有效的利用现代计算技 ...

  2. 量化投资与Python

    目录: 一.量化投资第三方相关模块 NumPy:数组批量计算 Pandas:表计算与数据分析 Matplotlib:图表绘制 二.IPython的介绍 IPython:和Python一样 三.如何使用 ...

  3. Python量化投资知识总结贴

    Ricequant 量化社区的初衷让各位爱好量化的人士可以碰撞思维,在分享和争辩中学习到有用且实战的量化知识.有赖于各位在社区中贡献满满的干货以及有质量的讨论,从编程入门教学到技术指标再到多因子选股. ...

  4. 1、量化投资—为什么选择Python?

    Python在量化领域的现状 就跟Java在web领域无可撼动的地位一样,Python也已经在金融量化投资领域占据了重要位置,从各个业务链条都能找到相应的框架实现. 在量化投资(证券和比特币)开源项目 ...

  5. 《Python与量化投资:从基础到实战》PDF高清完整版-PDF|网盘下载附提取码

    本书主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘.信号构建.策略构建.回测.策略分析等.本书也是利用Python进行数据分析的指南,有大量的关于数据处理分析的应用,并将重 ...

  6. Python与金融量化分析----金融与量化投资

    一:金融了解 金融:就是对现有资源进行重新的整合之后,进行价值和利润的等效流通. 金融工具: 股票 期货 黄金 外汇 基金 ............. 股票: 股票是股份公司发给出资人多的一种凭证,股 ...

  7. python书籍推荐:量化投资:以Python为工具

    所属网站分类: 资源下载 > python电子书 作者:mimi 链接:http://www.pythonheidong.com/blog/article/451/ 来源:python黑洞网 内 ...

  8. 推荐学习《Python与量化投资从基础到实战》PDF及代码+《量化投资以Python为工具》PDF及代码

    利用python分析量化投资问题是现在研究的热点,推荐两份资料用于学习 <Python与量化投资:从基础到实战>主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘. ...

  9. 量化投资学习笔记07——python知识补漏

    看<量化投资:以python为工具>这本书,第一部分是python的基础知识.这一部分略读了,只看我还不知道或不熟的. 定义复数 x = complex(2, 5) #2+5j 也可以直接 ...

随机推荐

  1. CSS基础知识(颜色、伪类、盒子模型)

    6.设置颜色单位 L    普通英文单词 {color : 属性值red;} 此方法简单,便捷.但设置的颜色在不同浏览器中,可能显示的颜色出现差异 * 三原色 - 红.绿.蓝 L   颜色的八进制方式 ...

  2. WebGL光照阴影映射

      原文地址:WebGL光照阴影映射   经过前面的学习,webgl的基本功能都已经掌握了,我们不仅掌握了着色器的编写,图形的绘制,矩阵的变换,添加光照,还通过对webgl的基础api封装,编写出了便 ...

  3. Django的生命周期图解

    下边的图就是一次完整的django生命周期,从客户端输入url,经过wsgi模块处理,得到符合HTTP协议的字符串,走中间件,假如中间件return None,继续往下走到urls......; 假如 ...

  4. Elastic FileBeat 快速入门

    背景 用过ELK(Elasticsearch, Logstash, Kibana)的人应该都面临过同样的问题,Logstash虽然功能强大:支持许多的input/output plugin.强大的fi ...

  5. HDU2063-过山车-匈牙利算法

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. 用gcc编译c语言程序以及其编译过程

    对于初学c语言编程的我们来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对c语言的理解很重要!!! 1.预编译 --> 2.编译 --> 3.汇编 --> 4.链接- ...

  7. Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果

    为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 ...

  8. Hive HQL学习

    HQL学习   1.hive的数据类型 2.hive_DDL 2.1创建.删除.修改.使用数据库     Default数据库,默认的,优先级相对于其他数据库是最高的   2.2重点:创建表_内部表_ ...

  9. PageRank_网页排名_MapReduceJava代码实现思路

    PageRank 1.    概念 2.    原理   3.    java代码实现思路   1.定义收敛标准     每次算出新的pr-oldpr=差值 ,所有页面的差值累加 ,除以pagecou ...

  10. Tomcat配置虚拟路径访问容器外的硬盘资源

    问题: 如果tomcat中上传了很多的图片,会导致tomcat启动的时候会慢,所以应该把图片上传到tomcat容器外部 那么,问题来了: tomcat出于安全考虑,禁止了直接访问外部硬盘资源. 解决: ...