数据分析--动量策略vs反转策略(选股)

动量策略:

  如果某只股票在前一段时期表现较好,那么下一段时期该股票扔将有良好表现。

反转策略:

  如果某只股票在前一段时期表现不好,那么下一段时期该股票将会反转,即表现变好。

动量策略&反转策略

  计算股票池中所有股票在前一段时间的收益率

  选择收益率最大(最小)的N只股票调仓,动量策略选最大,反转策略选最小

 

from jqdata import *

def initialize(context):
    set_benchmark('000300.XSHG')
    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')
    
    
    
    g.N = 10 
    g.benchmark = '000300.XSHG'
    run_monthly(handle, 1)
    
def handle(context):
    
    stocks = get_index_stocks(g.benchmark)
    
    df_close = history(30, field='close', security_list=list(stocks)).T
    
    df_close['ret'] = (df_close.iloc[:,-1]-df_close.iloc[:,0])/df_close.iloc[:,0]
    sorted_stocks = df_close.sort_values('ret', ascending=False).index
    
    to_hold = sorted_stocks[:g.N]

    for stock in context.portfolio.positions:
        if stock not in to_hold:
            order_target_value(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)
动量策略

把里面的“sorted_stocks = df_close.sort_values('ret', ascending=False).index” False 改为True就是反转策略

 

posted on 2019-06-02 19:21 要一直走下去 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/staff/p/10963985.html

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值