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. Smart-image通过SoftReference提高性能

    文章导读: 文件介绍了常见的图片下载开源插件smart-image, 由于移动设备硬件受限,因此Android的相关app都要考虑到性能的关系, 所以很多的第三方插件都使用到了缓存cache技术,本人 ...

  2. InnoDB一棵B+树可以存放多少行数据?

    一个问题? InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万.为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构.数据组织方式说起. 我 ...

  3. 循序渐进之Spring AOP(1) - 原理

    AOP全称是Aspect Oriented Programing,通常译为面向切面编程.利用AOP可以对面向对象编程做很好的补充. 用生活中的改装车比喻,工厂用面向对象的方法制造好汽车后,车主往往有些 ...

  4. vue-cli完整地引入element-ui

    1因为该组件会依赖于jQuery,所以先安装jQuery所需依赖: 进入npm控制台,输入指令: cnpm install jquery --save-dev 然后在入口文件main.js中引入: i ...

  5. 51nod 1575 Gcd and Lcm

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1575 万年巨坑终于填掉了…… 首先是煞笔西瓜的做题历程O_O. ...

  6. bzoj:1654 [Usaco2006 Jan]The Cow Prom 奶牛舞会

    Description The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in ...

  7. 51 Nod 1791 合法括号子段【分治+字符串】

    1791 合法括号子段 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一个括号序列,现在要计算一下它有多少非空子段是合法括号序列. 合法括号序列的定义是: 1. ...

  8. [bzoj1369] [Baltic2003]Gem

    结论题...一棵树里用到的颜色数不超过logn.. f[i][j]表示以i为根的子树里,i的颜色是j的方案数. g[i][j]表示max{f[i][k]},(k!=j #include<cstd ...

  9. linux下python2升级python3,python2和python3并存

    wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz 解压:tar -xzvf Python-3.6.4.tgz cd Pytho ...

  10. 从零开始学习前端JAVASCRIPT — 2、JavaScript基础ES5

    1:ES5简介 ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准的修正. 与HTML5规范进程本质类似,ES5通过对现有JavaScript ...