经典量化模型分享之【alpha对冲策略】(附源码)



  • 针对不同的品种、特性各位自行修改研究。加密币可以使用cctx接口配合。

    MBA 档案

    在期指市场上做空,在股票市场上构建拟合300指数的成份股,赚取其中的价差,这种被动型的套利就是贝塔套利。那么在如今贝塔套利空间越来越小的状况下,我们还有什么好方法吗?这就是更主动的、也更考验操作者判断能力的阿尔法套利。
      阿尔法套利也称阿尔法策略,是指指数期货与具有阿尔法值的证券产品之间进行反向对冲套利,也就是做多具有阿尔法值的证券产品,做空指数期货,实现回避系统性风险下的超越市场指数的阿尔法收益。为实现阿尔法套利,选择或构建证券产品是关键。
      首先,兼具折价率与超额收益阿尔法的证券产品是进行阿尔法套利交易的首选,包括具有折价率,并能超越市场指数的认购权证,封闭式基金等。其次,具有超额收益阿尔法的证券产品是进行阿尔法套利交易的次选,主要包括开放式股票基金、股票、行业指数产品。
      它在套利中属于典型的高收益、高风险套利方式。此种套利仅适合有能力挑选出具有稳定阿尔法证券产品的投资者,投资者在做阿尔法套利的时候应该与市场驱动因子监测体系结合起来分析。

    阿尔法套利就是高于经β调整后的预期收益率的超额收益率,其最初是由William Sharpe在1964年其著作《投资组合理论与资本市场》中首次提出,并指出投资者在市场中交易面临系统性风险和非系统性风险,公式表达如下:

      E(Rp)=Rf+β×(Rm-Rf) 
    

    其中**β=Cov(Ri,Rm)/Var(Rm),E(Rp)**表示投资组合的期望收益率,Rf为无风险报酬率,E(Rm)表示市场组合期望收益率,β为某一组合的系统风险系数。CAPM模型主要表示单个证券或投资组合同系统风险收益率之间的关系,也即是单个投资组合的收益率等于无风险收益率与风险溢价之和。
      资本资产定价模型(CAMP)认为,在有效的市场里,只有承担系统风险才可以得到一定的收益补偿,非系统风险无法获得补偿,所以一种证券的预期收益主要由其β值决定。β值越高的证券,预期收益就越高,β值越低的证券,预期收益就越低。
      经验表明,由于新兴市场的有效性较弱,专业投资者容易在这种市场利用专业管理、积极操作、资金规模等优势获得较高的阿尔法收益,从而跑赢大市。

    基础源码

    # coding=utf-8
    from __future__ import print_function, absolute_import, unicode_literals
    from gm.api import *
    
    '''
    本策略每隔1个月定时触发计算SHSE.000300成份股的过去的EV/EBITDA并选取EV/EBITDA大于0的股票
    随后平掉排名EV/EBITDA不在最小的30的股票持仓并等权购买EV/EBITDA最小排名在前30的股票
    并用相应的CFFEX.IF对应的真实合约等额对冲
    回测数据为:SHSE.000300和他们的成份股和CFFEX.IF对应的真实合约
    回测时间为:2017-07-01 08:00:00到2017-10-01 16:00:00
    '''
    
    
    def init(context):
        # 每月第一个交易日09:40:00的定时执行algo任务
        schedule(schedule_func=algo, date_rule='1m', time_rule='09:40:00')
    
        # 设置开仓在股票和期货的资金百分比(期货在后面自动进行杠杆相关的调整)
        context.percentage_stock = 0.4
        context.percentage_futures = 0.4
    
    
    def algo(context):
        # 获取当前时刻
        now = context.now
        # 获取上一个交易日
        last_day = get_previous_trading_date(exchange='SHSE', date=now)
        # 获取沪深300成份股
        stock300 = get_history_constituents(index='SHSE.000300', start_date=last_day,
                                                    end_date=last_day)[0]['constituents'].keys()
        # 获取上一个工作日的CFFEX.IF对应的合约
        index_futures = get_continuous_contracts(csymbol='CFFEX.IF', start_date=last_day, end_date=last_day)[-1]['symbol']
        # 获取当天有交易的股票
        not_suspended_info = get_history_instruments(symbols=stock300, start_date=now, end_date=now)
        not_suspended_symbols = [item['symbol'] for item in not_suspended_info if not item['is_suspended']]
        # 获取成份股EV/EBITDA大于0并为最小的30个
        fin = get_fundamentals(table='tq_sk_finindic', symbols=not_suspended_symbols,
                               start_date=now, end_date=now, fields='EVEBITDA',
                               filter='EVEBITDA>0', order_by='EVEBITDA', limit=30, df=True)
        fin.index = fin.symbol
        # 获取当前仓位
        positions = context.account().positions()
        # 平不在标的池或不为当前股指期货主力合约对应真实合约的标的
        for position in positions:
            symbol = position['symbol']
            sec_type = get_instrumentinfos(symbols=symbol)[0]['sec_type']
            # 若类型为期货且不在标的池则平仓
            if sec_type == SEC_TYPE_FUTURE and symbol != index_futures:
                order_target_percent(symbol=symbol, percent=0, order_type=OrderType_Market,
                                     position_side=PositionSide_Short)
                print('市价单平不在标的池的', symbol)
            elif symbol not in fin.index:
                order_target_percent(symbol=symbol, percent=0, order_type=OrderType_Market,
                                     position_side=PositionSide_Long)
                print('市价单平不在标的池的', symbol)
    
        # 获取股票的权重
        percent = context.percentage_stock / len(fin.index)
        # 买在标的池中的股票
        for symbol in fin.index:
            order_target_percent(symbol=symbol, percent=percent, order_type=OrderType_Market,
                                 position_side=PositionSide_Long)
            print(symbol, '以市价单调多仓到仓位', percent)
    
        # 获取股指期货的保证金比率
        ratio = get_history_instruments(symbols=index_futures, start_date=last_day, end_date=last_day)[0]['margin_ratio']
        # 更新股指期货的权重
        percent = context.percentage_futures * ratio
        # 买入股指期货对冲
        order_target_percent(symbol=index_futures, percent=percent, order_type=OrderType_Market,
                             position_side=PositionSide_Short)
        print(index_futures, '以市价单调空仓到仓位', percent)
    
    
    if __name__ == '__main__':
        '''
        strategy_id策略ID,由系统生成
        filename文件名,请与本文件名保持一致
        mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
        token绑定计算机的ID,可在系统设置-密钥管理中生成
        backtest_start_time回测开始时间
        backtest_end_time回测结束时间
        backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
        backtest_initial_cash回测初始资金
        backtest_commission_ratio回测佣金比例
        backtest_slippage_ratio回测滑点比例
        '''
        run(strategy_id='strategy_id',
            filename='main.py',
            mode=MODE_BACKTEST,
            token='token_id',
            backtest_start_time='2017-07-01 08:00:00',
            backtest_end_time='2017-10-01 16:00:00',
            backtest_adjust=ADJUST_PREV,
            backtest_initial_cash=10000000,
            backtest_commission_ratio=0.0001,
            backtest_slippage_ratio=0.0001)
    

    回测数据

    0_1530057397245_1.jpg


 








  • 0_1558330551804_TIM截图20190520133517.png

    点击进入课程地址 适用人群

    面向对数字货币程序化感兴趣的初学者,需要有一定的实盘交易和简单的计算机基础。

    课程概述
    数字货币交易市场由于其特殊性越来越受到量化交易者的关注,实际上程序化交易已经是数字货币的主流,对冲做市等策略无时无刻不在活跃着市场。而编程基础薄弱的初学者想要进入这一领域,面对众多的交易所和多变的API,困难重重。发明者(FMZ)量化平台(原BotV)是目前最大的数字货币量化社区和平台,4年多来帮助成千上万的初学者走向了量化交易之路。
    本课程由发明者量化平台官方提供,将涵盖以下内容:
    1.数字货币量化交易简介(已更新)
    2.JavaScript快速入门(已更新)
    3.发明者量化交易平台使用指南(已更新)
    4.发明者量化交易平台编程指南(已更新)
    5.量化交易策略范例详解(已更新)

    据说后面会更新python 的相关入门教程。课程很便宜,适合对量化不懂想有个概念的群体学习。

    如果要说自己拥有一套盈利的量化策略,还是要走很长的学习路。各位加油!

    讨论群:482548322

    阅读更多
  • FXKUNLUN 昆仑国际操盘团队 2019年3月收益报告ℹ 观摩账户地址 (本观摩账户为FX110监管实盘账户-平台KVB昆仑国际) 💹 KVB开户地址 点击链接 ⏺ 4月份 净值收益 9.9% ⏺ 4月份 资金最大回撤率 0.82% ⏺ 4月份 交易准确率 80.08%

    0_1556673557669_1.png

    0_1556673565305_2.png

    0_1556673571653_3.png

    0_1556673578903_4.png

    阅读更多

暂无主题。