复制链接
克隆策略

    {"description":"实验创建于2017/8/26","graph":{"edges":[{"to_node_id":"-549:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"-896:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"-741:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"-32248:input_1","from_node_id":"-896:data"},{"to_node_id":"-32248:input_2","from_node_id":"-741:data"},{"to_node_id":"-549:options_data","from_node_id":"-32248:data_1"},{"to_node_id":"-32248:input_3","from_node_id":"-294:data"}],"nodes":[{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2010-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2022-06-30","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_FUTURE","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8"}],"cacheable":true,"seq_num":1,"comment":"","comment_collapsed":true},{"node_id":"-896","module_id":"BigQuantSpace.use_datasource.use_datasource-v2","parameters":[{"name":"datasource_id","value":"bar1d_CN_FUTURE","type":"Literal","bound_global_parameter":null},{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-896"},{"name":"features","node_id":"-896"}],"output_ports":[{"name":"data","node_id":"-896"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"-741","module_id":"BigQuantSpace.use_datasource.use_datasource-v2","parameters":[{"name":"datasource_id","value":"basic_info_CN_FUTURE","type":"Literal","bound_global_parameter":null},{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-741"},{"name":"features","node_id":"-741"}],"output_ports":[{"name":"data","node_id":"-741"}],"cacheable":true,"seq_num":33,"comment":"","comment_collapsed":true},{"node_id":"-32248","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3,min_volume,N):\n from functools import reduce\n import pandas as pd \n import numpy as np \n \n df_raw = input_1.read()\n df_raw = df_raw[~(df_raw['instrument'].str.contains('IC|IF|IH|T|TF|TS|FB'))] #去除金融期货品种以及历史上数据有问题的品种FB\n df_basic = input_2.read()[['product_code','instrument','delist_date']]\n df = df_raw[~(df_raw['instrument'].str.contains('0000|8888|9999'))]\n df_index = df_raw[df_raw['instrument'].str.contains('0000')]\n df_dom = df_raw[df_raw['instrument'].str.contains('8888')]\n \n factor_ = input_3.read()[0]\n \n df = pd.merge(df,df_basic,how='left',on=['product_code','instrument'])\n df['maturity_days'] = (df['delist_date'] - df['date']).apply(lambda x:x.days)\n \n #去掉成交量少的品种\n def kill_min_volume_product(x):\n df_tp = x.groupby('product_code').sum()\n return df_tp[df_tp['volume'] >= min_volume]\n \n df_universe = df[['date','product_code','volume']].groupby('date').apply(kill_min_volume_product)\n df_universe.reset_index(inplace=True)\n df_universe = df_universe[['date','product_code']]\n \n #计算期限结构因子\n def calc_ts(x):\n factor_name = 'ts_mean'\n df_tp = x.sort_values(\"maturity_days\")\n if df_tp.shape[0] > 1:\n df_tp['ts'] = (df_tp['close'] - df_tp['close'].iloc[0])/df_tp['close'] * 365/(df_tp['maturity_days'] - df_tp['maturity_days'].iloc[0])\n df_tp[factor_name] = df_tp['ts'].sum() / (df_tp.shape[0] - 1)\n return df_tp.iloc[1]\n \n \n df_result = pd.DataFrame(df.groupby([\"date\",\"product_code\"]).apply(calc_ts))\n df_result['ts_mean'] = df_result['ts_mean'].rolling(N).mean()\n del df_result['instrument']\n df_result.reset_index(drop=True,inplace=True)\n\n\n #和样本空间\n df_result = pd.merge(df_universe,df_result,how='left',on=['date','product_code'])\n \n df_output = pd.merge(df_result,df_dom[['date','product_code','instrument']],how='left',on=['date','product_code'])\n del df_output['product_code']\n df_output['date'] = pd.to_datetime(df_output['date'])\n df_output.dropna(inplace=True)\n df_output.sort_values(\"date\",inplace=True)\n print(df_output)\n \n #signal \n def calc_signal(x,factor_name):\n x = x.sort_values(factor_name)\n length = x.shape[0]\n if length >= 10 :\n x['signal_'+factor_name] = [1]*5 + [0 for i in range(length-10)] + [-1]*5\n else :\n x['signal_' + factor_name] = [0] * length\n return x\n \n df_result = df_output.groupby(\"date\").apply(calc_signal,factor_)\n df_result.reset_index(drop=True,inplace=True)\n #产生信号\n df_result = df_result[['date','instrument','signal_'+factor_]] \n df_result['signal'] = df_result.iloc[:,2:].apply(lambda x:x.sum(),axis=1)\n df_result = df_result[~(df_result['signal'] == 0)]\n \n data_1 = DataSource.write_pickle(df_result[['date','instrument','signal']])\n return Outputs(data_1=data_1)\n\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{\n 'min_volume': 100000,\n 'N':1\n}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-32248"},{"name":"input_2","node_id":"-32248"},{"name":"input_3","node_id":"-32248"}],"output_ports":[{"name":"data_1","node_id":"-32248"},{"name":"data_2","node_id":"-32248"},{"name":"data_3","node_id":"-32248"}],"cacheable":true,"seq_num":27,"comment":"","comment_collapsed":true},{"node_id":"-549","module_id":"BigQuantSpace.hftrade.hftrade-v2","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"initialize","value":"# 回测引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n outer_data = context.options['data'].read()\n context.stock_to_long = outer_data[(outer_data['signal'] > 0)]\n context.stock_to_short = outer_data[(outer_data['signal'] < 0)]\n context.freq = 5\n \n\n ","type":"Literal","bound_global_parameter":null},{"name":"before_trading_start","value":"# 交易引擎:每个单位时间开盘前调用一次。\ndef bigquant_run(context, data):\n # 盘前处理,订阅行情等\n context.position_check = context.get_positions()\n","type":"Literal","bound_global_parameter":null},{"name":"handle_tick","value":"# 交易引擎:tick数据处理函数,每个tick执行一次\ndef bigquant_run(context, tick):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_data","value":"# 回测引擎:每日数据处理函数,每天执行一次\ndef bigquant_run(context, data):\n date = data.current_dt.strftime('%Y-%m-%d')\n \n if (context.trading_day_index % context.freq == 0) :\n print('date'*5, date)\n \n stock_to_long = context.stock_to_long[context.stock_to_long['date'] == date]\n stock_to_long = stock_to_long[stock_to_long['signal'] > 0]['instrument']\n stock_to_short = context.stock_to_short[context.stock_to_short['date'] == date]\n stock_to_short = stock_to_short[stock_to_short['signal'] < 0]['instrument']\n\n \n # 平仓\n hold_symbols = context.get_account_positions()\n long_pos = {}\n short_pos = {}\n\n for i in hold_symbols.keys():\n if hold_symbols[i].long.current_qty > 0:\n long_pos[i] = hold_symbols[i].long.current_qty\n if hold_symbols[i].short.current_qty> 0:\n short_pos[i] = hold_symbols[i].short.current_qty\n \n for stock in long_pos.keys():\n pos = long_pos[stock]\n price = data.current(context.symbol(stock), \"close\")\n context.sell_close(context.symbol(stock), pos, price, order_type=OrderType.MARKET)\n for stock in short_pos.keys():\n pos = short_pos[stock]\n price = data.current(context.symbol(stock), \"close\")\n context.buy_close(context.symbol(stock), pos, price, order_type=OrderType.MARKET)\n \n \n # 开仓\n stock_num = len(stock_to_long) + len(stock_to_short)\n if stock_num != 0 :\n weight = 1 / stock_num\n portfolio_value = context.portfolio.portfolio_value\n book_value = portfolio_value * weight\n\n for i in range(len(stock_to_short)):\n stock_i = stock_to_short.iloc[i]\n stock = stock_i\n code = stock_i.split('.')[0][:-4]\n stock = context.get_dominant(code)\n if data.can_trade(stock):\n price = data.current(stock,\"close\")\n unit =context.get_contract(stock).multiplier\n lots = math.floor(book_value/(unit*price))\n if lots != 0:\n context.sell_open(stock, lots, price, order_type=OrderType.MARKET)\n\n for i in range(len(stock_to_long)):\n stock_i = stock_to_long.iloc[i]\n code = stock_i.split('.')[0][:-4]\n stock = context.get_dominant(code)\n if data.can_trade(stock):\n price = data.current(stock,\"close\")\n unit =context.get_contract(stock).multiplier\n lots = math.floor(book_value/(unit*price))\n if lots != 0:\n context.buy_open(stock, lots, price, order_type=OrderType.MARKET)\n \n\n \n ","type":"Literal","bound_global_parameter":null},{"name":"handle_trade","value":"# 交易引擎:成交回报处理函数,每个成交发生时执行一次\ndef bigquant_run(context, trade):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_order","value":"# 交易引擎:委托回报处理函数,每个委托变化时执行一次\ndef bigquant_run(context, order):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"after_trading","value":"# 交易引擎:盘后处理函数,每日盘后执行一次\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"capital_base","value":"100000000","type":"Literal","bound_global_parameter":null},{"name":"frequency","value":"daily","type":"Literal","bound_global_parameter":null},{"name":"price_type","value":"真实价格","type":"Literal","bound_global_parameter":null},{"name":"product_type","value":"期货","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"0","type":"Literal","bound_global_parameter":null},{"name":"volume_limit","value":1,"type":"Literal","bound_global_parameter":null},{"name":"order_price_field_buy","value":"close","type":"Literal","bound_global_parameter":null},{"name":"order_price_field_sell","value":"close","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.HIX","type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"disable_cache","value":"False","type":"Literal","bound_global_parameter":null},{"name":"replay_bdb","value":"False","type":"Literal","bound_global_parameter":null},{"name":"show_debug_info","value":"False","type":"Literal","bound_global_parameter":null},{"name":"backtest_only","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-549"},{"name":"options_data","node_id":"-549"},{"name":"history_ds","node_id":"-549"},{"name":"benchmark_ds","node_id":"-549"}],"output_ports":[{"name":"raw_perf","node_id":"-549"}],"cacheable":false,"seq_num":4,"comment":"","comment_collapsed":true},{"node_id":"-294","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"ts_mean","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-294"}],"output_ports":[{"name":"data","node_id":"-294"}],"cacheable":true,"seq_num":6,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-8' Position='1625,-1866,200,200'/><node_position Node='-896' Position='1531.887451171875,-1700.1171875,200,200'/><node_position Node='-741' Position='1825.004638671875,-1702.0584716796875,200,200'/><node_position Node='-32248' Position='1597,-1580,200,200'/><node_position Node='-549' Position='1577,-1444,200,200'/><node_position Node='-294' Position='2113.550048828125,-1701.351318359375,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
    In [10]:
    # 本代码由可视化策略环境自动生成 2022年9月24日 17:39
    # 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
    
    
    # Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
    def m27_run_bigquant_run(input_1, input_2, input_3,min_volume,N):
        from functools import reduce
        import pandas as pd 
        import numpy as np 
        
        df_raw = input_1.read()
        df_raw = df_raw[~(df_raw['instrument'].str.contains('IC|IF|IH|T|TF|TS|FB'))]  #去除金融期货品种以及历史上数据有问题的品种FB
        df_basic = input_2.read()[['product_code','instrument','delist_date']]
        df = df_raw[~(df_raw['instrument'].str.contains('0000|8888|9999'))]
        df_index = df_raw[df_raw['instrument'].str.contains('0000')]
        df_dom = df_raw[df_raw['instrument'].str.contains('8888')]
        
        factor_ = input_3.read()[0]
        
        df = pd.merge(df,df_basic,how='left',on=['product_code','instrument'])
        df['maturity_days'] = (df['delist_date'] - df['date']).apply(lambda x:x.days)
        
        #去掉成交量少的品种
        def kill_min_volume_product(x):
            df_tp = x.groupby('product_code').sum()
            return df_tp[df_tp['volume'] >= min_volume]
        
        df_universe = df[['date','product_code','volume']].groupby('date').apply(kill_min_volume_product)
        df_universe.reset_index(inplace=True)
        df_universe = df_universe[['date','product_code']]
        
        #计算期限结构因子
        def calc_ts(x):
            factor_name = 'ts_mean'
            df_tp = x.sort_values("maturity_days")
            if df_tp.shape[0] > 1:
                df_tp['ts'] = (df_tp['close'] - df_tp['close'].iloc[0])/df_tp['close'] * 365/(df_tp['maturity_days'] - df_tp['maturity_days'].iloc[0])
                df_tp[factor_name] = df_tp['ts'].sum() / (df_tp.shape[0] - 1)
                return df_tp.iloc[1]
          
        
        df_result = pd.DataFrame(df.groupby(["date","product_code"]).apply(calc_ts))
        df_result['ts_mean'] = df_result['ts_mean'].rolling(N).mean()
        del df_result['instrument']
        df_result.reset_index(drop=True,inplace=True)
    
    
        #和样本空间
        df_result = pd.merge(df_universe,df_result,how='left',on=['date','product_code'])
        
        df_output = pd.merge(df_result,df_dom[['date','product_code','instrument']],how='left',on=['date','product_code'])
        del df_output['product_code']
        df_output['date'] = pd.to_datetime(df_output['date'])
        df_output.dropna(inplace=True)
        df_output.sort_values("date",inplace=True)
        print(df_output)
        
        #signal 
        def calc_signal(x,factor_name):
            x = x.sort_values(factor_name)
            length = x.shape[0]
            if length >= 10 :
                x['signal_'+factor_name] = [1]*5 + [0 for i in range(length-10)] + [-1]*5
            else :
                x['signal_' + factor_name] = [0] * length
            return x
        
        df_result = df_output.groupby("date").apply(calc_signal,factor_)
        df_result.reset_index(drop=True,inplace=True)
         #产生信号
        df_result =  df_result[['date','instrument','signal_'+factor_]]  
        df_result['signal'] = df_result.iloc[:,2:].apply(lambda x:x.sum(),axis=1)
        df_result = df_result[~(df_result['signal'] == 0)]
        
        data_1 = DataSource.write_pickle(df_result[['date','instrument','signal']])
        return Outputs(data_1=data_1)
    
    
    # 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
    def m27_post_run_bigquant_run(outputs):
        return outputs
    
    # 回测引擎:初始化函数,只执行一次
    def m4_initialize_bigquant_run(context):
        outer_data = context.options['data'].read()
        context.stock_to_long = outer_data[(outer_data['signal'] > 0)]
        context.stock_to_short = outer_data[(outer_data['signal'] < 0)]
        context.freq = 5
        
    
        
    # 交易引擎:每个单位时间开盘前调用一次。
    def m4_before_trading_start_bigquant_run(context, data):
        # 盘前处理,订阅行情等
        context.position_check = context.get_positions()
    
    # 交易引擎:tick数据处理函数,每个tick执行一次
    def m4_handle_tick_bigquant_run(context, tick):
        pass
    
    # 回测引擎:每日数据处理函数,每天执行一次
    def m4_handle_data_bigquant_run(context, data):
        date = data.current_dt.strftime('%Y-%m-%d')
            
        if (context.trading_day_index % context.freq == 0) :
            print('date'*5, date)
            
            stock_to_long = context.stock_to_long[context.stock_to_long['date'] == date]
            stock_to_long = stock_to_long[stock_to_long['signal'] > 0]['instrument']
            stock_to_short = context.stock_to_short[context.stock_to_short['date'] == date]
            stock_to_short = stock_to_short[stock_to_short['signal'] < 0]['instrument']
    
            
            # 平仓
            hold_symbols = context.get_account_positions()
            long_pos = {}
            short_pos = {}
    
            for i in hold_symbols.keys():
                if  hold_symbols[i].long.current_qty > 0:
                    long_pos[i] = hold_symbols[i].long.current_qty
                if hold_symbols[i].short.current_qty> 0:
                    short_pos[i] = hold_symbols[i].short.current_qty
            
            for stock in long_pos.keys():
                pos = long_pos[stock]
                price = data.current(context.symbol(stock), "close")
                context.sell_close(context.symbol(stock), pos, price, order_type=OrderType.MARKET)
            for stock in short_pos.keys():
                pos = short_pos[stock]
                price = data.current(context.symbol(stock), "close")
                context.buy_close(context.symbol(stock), pos, price, order_type=OrderType.MARKET)
                
     
            # 开仓
            stock_num = len(stock_to_long) + len(stock_to_short)
            if stock_num != 0 :
                weight =  1 / stock_num
                portfolio_value = context.portfolio.portfolio_value
                book_value = portfolio_value  * weight
    
                for i in range(len(stock_to_short)):
                    stock_i = stock_to_short.iloc[i]
                    stock = stock_i
                    code = stock_i.split('.')[0][:-4]
                    stock = context.get_dominant(code)
                    if data.can_trade(stock):
                        price = data.current(stock,"close")
                        unit =context.get_contract(stock).multiplier
                        lots = math.floor(book_value/(unit*price))
                        if lots != 0:
                            context.sell_open(stock, lots, price, order_type=OrderType.MARKET)
    
                for i in range(len(stock_to_long)):
                    stock_i = stock_to_long.iloc[i]
                    code = stock_i.split('.')[0][:-4]
                    stock = context.get_dominant(code)
                    if data.can_trade(stock):
                        price = data.current(stock,"close")
                        unit =context.get_contract(stock).multiplier
                        lots = math.floor(book_value/(unit*price))
                        if lots != 0:
                            context.buy_open(stock, lots, price, order_type=OrderType.MARKET)
      
    
             
            
    # 交易引擎:成交回报处理函数,每个成交发生时执行一次
    def m4_handle_trade_bigquant_run(context, trade):
        pass
    
    # 交易引擎:委托回报处理函数,每个委托变化时执行一次
    def m4_handle_order_bigquant_run(context, order):
        pass
    
    # 交易引擎:盘后处理函数,每日盘后执行一次
    def m4_after_trading_bigquant_run(context, data):
        pass
    
    
    m1 = M.instruments.v2(
        start_date='2010-01-01',
        end_date='2022-06-30',
        market='CN_FUTURE',
        instrument_list='',
        max_count=0
    )
    
    m2 = M.use_datasource.v2(
        instruments=m1.data,
        datasource_id='bar1d_CN_FUTURE',
        start_date='',
        end_date='',
        before_start_days=0
    )
    
    m33 = M.use_datasource.v2(
        instruments=m1.data,
        datasource_id='basic_info_CN_FUTURE',
        start_date='',
        end_date='',
        before_start_days=0
    )
    
    m6 = M.input_features.v1(
        features='ts_mean'
    )
    
    m27 = M.cached.v3(
        input_1=m2.data,
        input_2=m33.data,
        input_3=m6.data,
        run=m27_run_bigquant_run,
        post_run=m27_post_run_bigquant_run,
        input_ports='',
        params="""{
        'min_volume': 100000,
        'N':1
    }""",
        output_ports=''
    )
    
    m4 = M.hftrade.v2(
        instruments=m1.data,
        options_data=m27.data_1,
        start_date='',
        end_date='',
        initialize=m4_initialize_bigquant_run,
        before_trading_start=m4_before_trading_start_bigquant_run,
        handle_tick=m4_handle_tick_bigquant_run,
        handle_data=m4_handle_data_bigquant_run,
        handle_trade=m4_handle_trade_bigquant_run,
        handle_order=m4_handle_order_bigquant_run,
        after_trading=m4_after_trading_bigquant_run,
        capital_base=100000000,
        frequency='daily',
        price_type='真实价格',
        product_type='期货',
        before_start_days='0',
        volume_limit=1,
        order_price_field_buy='close',
        order_price_field_sell='close',
        benchmark='000300.HIX',
        plot_charts=True,
        disable_cache=False,
        replay_bdb=False,
        show_debug_info=False,
        backtest_only=False
    )
    
    datedatedatedatedate 2010-01-04
    datedatedatedatedate 2010-01-11
    datedatedatedatedate 2010-01-18
    datedatedatedatedate 2010-01-25
    datedatedatedatedate 2010-02-01
    datedatedatedatedate 2010-02-08
    datedatedatedatedate 2010-02-22
    datedatedatedatedate 2010-03-01
    datedatedatedatedate 2010-03-08
    datedatedatedatedate 2010-03-15
    datedatedatedatedate 2010-03-22
    datedatedatedatedate 2010-03-29
    datedatedatedatedate 2010-04-06
    datedatedatedatedate 2010-04-13
    datedatedatedatedate 2010-04-20
    datedatedatedatedate 2010-04-27
    datedatedatedatedate 2010-05-05
    datedatedatedatedate 2010-05-12
    datedatedatedatedate 2010-05-19
    datedatedatedatedate 2010-05-26
    datedatedatedatedate 2010-06-02
    datedatedatedatedate 2010-06-09
    datedatedatedatedate 2010-06-21
    datedatedatedatedate 2010-06-28
    datedatedatedatedate 2010-07-05
    datedatedatedatedate 2010-07-12
    datedatedatedatedate 2010-07-19
    datedatedatedatedate 2010-07-26
    datedatedatedatedate 2010-08-02
    datedatedatedatedate 2010-08-09
    datedatedatedatedate 2010-08-16
    datedatedatedatedate 2010-08-23
    datedatedatedatedate 2010-08-30
    datedatedatedatedate 2010-09-06
    datedatedatedatedate 2010-09-13
    datedatedatedatedate 2010-09-20
    datedatedatedatedate 2010-09-30
    datedatedatedatedate 2010-10-14
    datedatedatedatedate 2010-10-21
    datedatedatedatedate 2010-10-28
    datedatedatedatedate 2010-11-04
    datedatedatedatedate 2010-11-11
    datedatedatedatedate 2010-11-18
    datedatedatedatedate 2010-11-25
    datedatedatedatedate 2010-12-02
    datedatedatedatedate 2010-12-09
    datedatedatedatedate 2010-12-16
    datedatedatedatedate 2010-12-23
    datedatedatedatedate 2010-12-30
    datedatedatedatedate 2011-01-07
    datedatedatedatedate 2011-01-14
    datedatedatedatedate 2011-01-21
    datedatedatedatedate 2011-01-28
    datedatedatedatedate 2011-02-11
    datedatedatedatedate 2011-02-18
    datedatedatedatedate 2011-02-25
    datedatedatedatedate 2011-03-04
    datedatedatedatedate 2011-03-11
    datedatedatedatedate 2011-03-18
    datedatedatedatedate 2011-03-25
    datedatedatedatedate 2011-04-01
    datedatedatedatedate 2011-04-12
    datedatedatedatedate 2011-04-19
    datedatedatedatedate 2011-04-26
    datedatedatedatedate 2011-05-04
    datedatedatedatedate 2011-05-11
    datedatedatedatedate 2011-05-18
    datedatedatedatedate 2011-05-25
    datedatedatedatedate 2011-06-01
    datedatedatedatedate 2011-06-09
    datedatedatedatedate 2011-06-16
    datedatedatedatedate 2011-06-23
    datedatedatedatedate 2011-06-30
    datedatedatedatedate 2011-07-07
    datedatedatedatedate 2011-07-14
    datedatedatedatedate 2011-07-21
    datedatedatedatedate 2011-07-28
    datedatedatedatedate 2011-08-04
    datedatedatedatedate 2011-08-11
    datedatedatedatedate 2011-08-18
    datedatedatedatedate 2011-08-25
    datedatedatedatedate 2011-09-01
    datedatedatedatedate 2011-09-08
    datedatedatedatedate 2011-09-16
    datedatedatedatedate 2011-09-23
    datedatedatedatedate 2011-09-30
    datedatedatedatedate 2011-10-14
    datedatedatedatedate 2011-10-21
    datedatedatedatedate 2011-10-28
    datedatedatedatedate 2011-11-04
    datedatedatedatedate 2011-11-11
    datedatedatedatedate 2011-11-18
    datedatedatedatedate 2011-11-25
    datedatedatedatedate 2011-12-02
    datedatedatedatedate 2011-12-09
    datedatedatedatedate 2011-12-16
    datedatedatedatedate 2011-12-23
    datedatedatedatedate 2011-12-30
    datedatedatedatedate 2012-01-10
    datedatedatedatedate 2012-01-17
    datedatedatedatedate 2012-01-31
    datedatedatedatedate 2012-02-07
    datedatedatedatedate 2012-02-14
    datedatedatedatedate 2012-02-21
    datedatedatedatedate 2012-02-28
    datedatedatedatedate 2012-03-06
    datedatedatedatedate 2012-03-13
    datedatedatedatedate 2012-03-20
    datedatedatedatedate 2012-03-27
    datedatedatedatedate 2012-04-06
    datedatedatedatedate 2012-04-13
    datedatedatedatedate 2012-04-20
    datedatedatedatedate 2012-04-27
    datedatedatedatedate 2012-05-08
    datedatedatedatedate 2012-05-15
    datedatedatedatedate 2012-05-22
    datedatedatedatedate 2012-05-29
    datedatedatedatedate 2012-06-05
    datedatedatedatedate 2012-06-12
    datedatedatedatedate 2012-06-19
    datedatedatedatedate 2012-06-27
    datedatedatedatedate 2012-07-04
    datedatedatedatedate 2012-07-11
    datedatedatedatedate 2012-07-18
    datedatedatedatedate 2012-07-25
    datedatedatedatedate 2012-08-01
    datedatedatedatedate 2012-08-08
    datedatedatedatedate 2012-08-15
    datedatedatedatedate 2012-08-22
    datedatedatedatedate 2012-08-29
    datedatedatedatedate 2012-09-05
    datedatedatedatedate 2012-09-12
    datedatedatedatedate 2012-09-19
    datedatedatedatedate 2012-09-26
    datedatedatedatedate 2012-10-10
    datedatedatedatedate 2012-10-17
    datedatedatedatedate 2012-10-24
    datedatedatedatedate 2012-10-31
    datedatedatedatedate 2012-11-07
    datedatedatedatedate 2012-11-14
    datedatedatedatedate 2012-11-21
    datedatedatedatedate 2012-11-28
    datedatedatedatedate 2012-12-05
    datedatedatedatedate 2012-12-12
    datedatedatedatedate 2012-12-19
    datedatedatedatedate 2012-12-26
    datedatedatedatedate 2013-01-07
    datedatedatedatedate 2013-01-14
    datedatedatedatedate 2013-01-21
    datedatedatedatedate 2013-01-28
    datedatedatedatedate 2013-02-04
    datedatedatedatedate 2013-02-18
    datedatedatedatedate 2013-02-25
    datedatedatedatedate 2013-03-04
    datedatedatedatedate 2013-03-11
    datedatedatedatedate 2013-03-18
    datedatedatedatedate 2013-03-25
    datedatedatedatedate 2013-04-01
    datedatedatedatedate 2013-04-10
    datedatedatedatedate 2013-04-17
    datedatedatedatedate 2013-04-24
    datedatedatedatedate 2013-05-06
    datedatedatedatedate 2013-05-13
    datedatedatedatedate 2013-05-20
    datedatedatedatedate 2013-05-27
    datedatedatedatedate 2013-06-03
    datedatedatedatedate 2013-06-13
    datedatedatedatedate 2013-06-20
    datedatedatedatedate 2013-06-27
    datedatedatedatedate 2013-07-04
    datedatedatedatedate 2013-07-11
    datedatedatedatedate 2013-07-18
    datedatedatedatedate 2013-07-25
    datedatedatedatedate 2013-08-01
    datedatedatedatedate 2013-08-08
    datedatedatedatedate 2013-08-15
    datedatedatedatedate 2013-08-22
    datedatedatedatedate 2013-08-29
    datedatedatedatedate 2013-09-05
    datedatedatedatedate 2013-09-12
    datedatedatedatedate 2013-09-23
    datedatedatedatedate 2013-09-30
    datedatedatedatedate 2013-10-14
    datedatedatedatedate 2013-10-21
    datedatedatedatedate 2013-10-28
    datedatedatedatedate 2013-11-04
    datedatedatedatedate 2013-11-11
    datedatedatedatedate 2013-11-18
    datedatedatedatedate 2013-11-25
    datedatedatedatedate 2013-12-02
    datedatedatedatedate 2013-12-09
    datedatedatedatedate 2013-12-16
    datedatedatedatedate 2013-12-23
    datedatedatedatedate 2013-12-30
    datedatedatedatedate 2014-01-07
    datedatedatedatedate 2014-01-14
    datedatedatedatedate 2014-01-21
    datedatedatedatedate 2014-01-28
    datedatedatedatedate 2014-02-11
    datedatedatedatedate 2014-02-18
    datedatedatedatedate 2014-02-25
    datedatedatedatedate 2014-03-04
    datedatedatedatedate 2014-03-11
    datedatedatedatedate 2014-03-18
    datedatedatedatedate 2014-03-25
    datedatedatedatedate 2014-04-01
    datedatedatedatedate 2014-04-09
    datedatedatedatedate 2014-04-16
    datedatedatedatedate 2014-04-23
    datedatedatedatedate 2014-04-30
    datedatedatedatedate 2014-05-09
    datedatedatedatedate 2014-05-16
    datedatedatedatedate 2014-05-23
    datedatedatedatedate 2014-05-30
    datedatedatedatedate 2014-06-09
    datedatedatedatedate 2014-06-16
    datedatedatedatedate 2014-06-23
    datedatedatedatedate 2014-06-30
    datedatedatedatedate 2014-07-07
    datedatedatedatedate 2014-07-14
    datedatedatedatedate 2014-07-21
    datedatedatedatedate 2014-07-28
    datedatedatedatedate 2014-08-04
    datedatedatedatedate 2014-08-11
    datedatedatedatedate 2014-08-18
    datedatedatedatedate 2014-08-25
    datedatedatedatedate 2014-09-01
    datedatedatedatedate 2014-09-09
    datedatedatedatedate 2014-09-16
    datedatedatedatedate 2014-09-23
    datedatedatedatedate 2014-09-30
    datedatedatedatedate 2014-10-14
    datedatedatedatedate 2014-10-21
    datedatedatedatedate 2014-10-28
    datedatedatedatedate 2014-11-04
    datedatedatedatedate 2014-11-11
    datedatedatedatedate 2014-11-18
    datedatedatedatedate 2014-11-25
    datedatedatedatedate 2014-12-02
    datedatedatedatedate 2014-12-09
    datedatedatedatedate 2014-12-16
    datedatedatedatedate 2014-12-23
    datedatedatedatedate 2014-12-30
    datedatedatedatedate 2015-01-08
    datedatedatedatedate 2015-01-15
    datedatedatedatedate 2015-01-22
    datedatedatedatedate 2015-01-29
    datedatedatedatedate 2015-02-05
    datedatedatedatedate 2015-02-12
    datedatedatedatedate 2015-02-26
    datedatedatedatedate 2015-03-05
    datedatedatedatedate 2015-03-12
    datedatedatedatedate 2015-03-19
    datedatedatedatedate 2015-03-26
    datedatedatedatedate 2015-04-02
    datedatedatedatedate 2015-04-10
    datedatedatedatedate 2015-04-17
    datedatedatedatedate 2015-04-24
    datedatedatedatedate 2015-05-04
    datedatedatedatedate 2015-05-11
    datedatedatedatedate 2015-05-18
    datedatedatedatedate 2015-05-25
    datedatedatedatedate 2015-06-01
    datedatedatedatedate 2015-06-08
    datedatedatedatedate 2015-06-15
    datedatedatedatedate 2015-06-23
    datedatedatedatedate 2015-06-30
    datedatedatedatedate 2015-07-07
    datedatedatedatedate 2015-07-14
    datedatedatedatedate 2015-07-21
    datedatedatedatedate 2015-07-28
    datedatedatedatedate 2015-08-04
    datedatedatedatedate 2015-08-11
    datedatedatedatedate 2015-08-18
    datedatedatedatedate 2015-08-25
    datedatedatedatedate 2015-09-01
    datedatedatedatedate 2015-09-10
    datedatedatedatedate 2015-09-17
    datedatedatedatedate 2015-09-24
    datedatedatedatedate 2015-10-08
    datedatedatedatedate 2015-10-15
    datedatedatedatedate 2015-10-22
    datedatedatedatedate 2015-10-29
    datedatedatedatedate 2015-11-05
    datedatedatedatedate 2015-11-12
    datedatedatedatedate 2015-11-19
    datedatedatedatedate 2015-11-26
    datedatedatedatedate 2015-12-03
    datedatedatedatedate 2015-12-10
    datedatedatedatedate 2015-12-17
    datedatedatedatedate 2015-12-24
    datedatedatedatedate 2015-12-31
    datedatedatedatedate 2016-01-08
    datedatedatedatedate 2016-01-15
    datedatedatedatedate 2016-01-22
    datedatedatedatedate 2016-01-29
    datedatedatedatedate 2016-02-05
    datedatedatedatedate 2016-02-19
    datedatedatedatedate 2016-02-26
    datedatedatedatedate 2016-03-04
    datedatedatedatedate 2016-03-11
    datedatedatedatedate 2016-03-18
    datedatedatedatedate 2016-03-25
    datedatedatedatedate 2016-04-01
    datedatedatedatedate 2016-04-11
    datedatedatedatedate 2016-04-18
    datedatedatedatedate 2016-04-25
    datedatedatedatedate 2016-05-03
    datedatedatedatedate 2016-05-10
    datedatedatedatedate 2016-05-17
    datedatedatedatedate 2016-05-24
    datedatedatedatedate 2016-05-31
    datedatedatedatedate 2016-06-07
    datedatedatedatedate 2016-06-16
    datedatedatedatedate 2016-06-23
    datedatedatedatedate 2016-06-30
    datedatedatedatedate 2016-07-07
    datedatedatedatedate 2016-07-14
    datedatedatedatedate 2016-07-21
    datedatedatedatedate 2016-07-28
    datedatedatedatedate 2016-08-04
    datedatedatedatedate 2016-08-11
    datedatedatedatedate 2016-08-18
    datedatedatedatedate 2016-08-25
    datedatedatedatedate 2016-09-01
    datedatedatedatedate 2016-09-08
    datedatedatedatedate 2016-09-19
    datedatedatedatedate 2016-09-26
    datedatedatedatedate 2016-10-10
    datedatedatedatedate 2016-10-17
    datedatedatedatedate 2016-10-24
    datedatedatedatedate 2016-10-31
    datedatedatedatedate 2016-11-07
    datedatedatedatedate 2016-11-14
    datedatedatedatedate 2016-11-21
    datedatedatedatedate 2016-11-28
    datedatedatedatedate 2016-12-05
    datedatedatedatedate 2016-12-12
    datedatedatedatedate 2016-12-19
    datedatedatedatedate 2016-12-26
    datedatedatedatedate 2017-01-03
    datedatedatedatedate 2017-01-10
    datedatedatedatedate 2017-01-17
    datedatedatedatedate 2017-01-24
    datedatedatedatedate 2017-02-07
    datedatedatedatedate 2017-02-14
    datedatedatedatedate 2017-02-21
    datedatedatedatedate 2017-02-28
    datedatedatedatedate 2017-03-07
    datedatedatedatedate 2017-03-14
    datedatedatedatedate 2017-03-21
    datedatedatedatedate 2017-03-28
    datedatedatedatedate 2017-04-06
    datedatedatedatedate 2017-04-13
    datedatedatedatedate 2017-04-20
    datedatedatedatedate 2017-04-27
    datedatedatedatedate 2017-05-05
    datedatedatedatedate 2017-05-12
    datedatedatedatedate 2017-05-19
    datedatedatedatedate 2017-05-26
    datedatedatedatedate 2017-06-06
    datedatedatedatedate 2017-06-13
    datedatedatedatedate 2017-06-20
    datedatedatedatedate 2017-06-27
    datedatedatedatedate 2017-07-04
    datedatedatedatedate 2017-07-11
    datedatedatedatedate 2017-07-18
    datedatedatedatedate 2017-07-25
    datedatedatedatedate 2017-08-01
    datedatedatedatedate 2017-08-08
    datedatedatedatedate 2017-08-15
    datedatedatedatedate 2017-08-22
    datedatedatedatedate 2017-08-29
    datedatedatedatedate 2017-09-05
    datedatedatedatedate 2017-09-12
    datedatedatedatedate 2017-09-19
    datedatedatedatedate 2017-09-26
    datedatedatedatedate 2017-10-10
    datedatedatedatedate 2017-10-17
    datedatedatedatedate 2017-10-24
    datedatedatedatedate 2017-10-31
    datedatedatedatedate 2017-11-07
    datedatedatedatedate 2017-11-14
    datedatedatedatedate 2017-11-21
    datedatedatedatedate 2017-11-28
    datedatedatedatedate 2017-12-05
    datedatedatedatedate 2017-12-12
    datedatedatedatedate 2017-12-19
    datedatedatedatedate 2017-12-26
    datedatedatedatedate 2018-01-03
    datedatedatedatedate 2018-01-10
    datedatedatedatedate 2018-01-17
    datedatedatedatedate 2018-01-24
    datedatedatedatedate 2018-01-31
    datedatedatedatedate 2018-02-07
    datedatedatedatedate 2018-02-14
    datedatedatedatedate 2018-02-28
    datedatedatedatedate 2018-03-07
    datedatedatedatedate 2018-03-14
    datedatedatedatedate 2018-03-21
    datedatedatedatedate 2018-03-28
    datedatedatedatedate 2018-04-04
    datedatedatedatedate 2018-04-13
    datedatedatedatedate 2018-04-20
    datedatedatedatedate 2018-04-27
    datedatedatedatedate 2018-05-08
    datedatedatedatedate 2018-05-15
    datedatedatedatedate 2018-05-22
    datedatedatedatedate 2018-05-29
    datedatedatedatedate 2018-06-05
    datedatedatedatedate 2018-06-12
    datedatedatedatedate 2018-06-20
    datedatedatedatedate 2018-06-27
    datedatedatedatedate 2018-07-04
    datedatedatedatedate 2018-07-11
    datedatedatedatedate 2018-07-18
    datedatedatedatedate 2018-07-25
    datedatedatedatedate 2018-08-01
    datedatedatedatedate 2018-08-08
    datedatedatedatedate 2018-08-15
    datedatedatedatedate 2018-08-22
    datedatedatedatedate 2018-08-29
    datedatedatedatedate 2018-09-05
    datedatedatedatedate 2018-09-12
    datedatedatedatedate 2018-09-19
    datedatedatedatedate 2018-09-27
    datedatedatedatedate 2018-10-11
    datedatedatedatedate 2018-10-18
    datedatedatedatedate 2018-10-25
    datedatedatedatedate 2018-11-01
    datedatedatedatedate 2018-11-08
    datedatedatedatedate 2018-11-15
    datedatedatedatedate 2018-11-22
    datedatedatedatedate 2018-11-29
    datedatedatedatedate 2018-12-06
    datedatedatedatedate 2018-12-13
    datedatedatedatedate 2018-12-20
    datedatedatedatedate 2018-12-27
    datedatedatedatedate 2019-01-07
    datedatedatedatedate 2019-01-14
    datedatedatedatedate 2019-01-21
    datedatedatedatedate 2019-01-28
    datedatedatedatedate 2019-02-11
    datedatedatedatedate 2019-02-18
    datedatedatedatedate 2019-02-25
    datedatedatedatedate 2019-03-04
    datedatedatedatedate 2019-03-11
    datedatedatedatedate 2019-03-18
    datedatedatedatedate 2019-03-25
    datedatedatedatedate 2019-04-01
    datedatedatedatedate 2019-04-09
    datedatedatedatedate 2019-04-16
    datedatedatedatedate 2019-04-23
    datedatedatedatedate 2019-04-30
    datedatedatedatedate 2019-05-10
    datedatedatedatedate 2019-05-17
    datedatedatedatedate 2019-05-24
    datedatedatedatedate 2019-05-31
    datedatedatedatedate 2019-06-10
    datedatedatedatedate 2019-06-17
    datedatedatedatedate 2019-06-24
    datedatedatedatedate 2019-07-01
    datedatedatedatedate 2019-07-08
    datedatedatedatedate 2019-07-15
    datedatedatedatedate 2019-07-22
    datedatedatedatedate 2019-07-29
    datedatedatedatedate 2019-08-05
    datedatedatedatedate 2019-08-12
    datedatedatedatedate 2019-08-19
    datedatedatedatedate 2019-08-26
    datedatedatedatedate 2019-09-02
    datedatedatedatedate 2019-09-09
    datedatedatedatedate 2019-09-17
    datedatedatedatedate 2019-09-24
    datedatedatedatedate 2019-10-08
    datedatedatedatedate 2019-10-15
    datedatedatedatedate 2019-10-22
    datedatedatedatedate 2019-10-29
    datedatedatedatedate 2019-11-05
    datedatedatedatedate 2019-11-12
    datedatedatedatedate 2019-11-19
    datedatedatedatedate 2019-11-26
    datedatedatedatedate 2019-12-03
    datedatedatedatedate 2019-12-10
    datedatedatedatedate 2019-12-17
    datedatedatedatedate 2019-12-24
    datedatedatedatedate 2019-12-31
    datedatedatedatedate 2020-01-08
    datedatedatedatedate 2020-01-15
    datedatedatedatedate 2020-01-22
    datedatedatedatedate 2020-02-06
    datedatedatedatedate 2020-02-13
    datedatedatedatedate 2020-02-20
    datedatedatedatedate 2020-02-27
    datedatedatedatedate 2020-03-05
    datedatedatedatedate 2020-03-12
    datedatedatedatedate 2020-03-19
    datedatedatedatedate 2020-03-26
    datedatedatedatedate 2020-04-02
    datedatedatedatedate 2020-04-10
    datedatedatedatedate 2020-04-17
    datedatedatedatedate 2020-04-24
    datedatedatedatedate 2020-05-06
    datedatedatedatedate 2020-05-13
    datedatedatedatedate 2020-05-20
    datedatedatedatedate 2020-05-27
    datedatedatedatedate 2020-06-03
    datedatedatedatedate 2020-06-10
    datedatedatedatedate 2020-06-17
    datedatedatedatedate 2020-06-24
    datedatedatedatedate 2020-07-03
    datedatedatedatedate 2020-07-10
    datedatedatedatedate 2020-07-17
    datedatedatedatedate 2020-07-24
    datedatedatedatedate 2020-07-31
    datedatedatedatedate 2020-08-07
    datedatedatedatedate 2020-08-14
    datedatedatedatedate 2020-08-21
    datedatedatedatedate 2020-08-28
    datedatedatedatedate 2020-09-04
    datedatedatedatedate 2020-09-11
    datedatedatedatedate 2020-09-18
    datedatedatedatedate 2020-09-25
    datedatedatedatedate 2020-10-12
    datedatedatedatedate 2020-10-19
    datedatedatedatedate 2020-10-26
    datedatedatedatedate 2020-11-02
    datedatedatedatedate 2020-11-09
    datedatedatedatedate 2020-11-16
    datedatedatedatedate 2020-11-23
    datedatedatedatedate 2020-11-30
    datedatedatedatedate 2020-12-07
    datedatedatedatedate 2020-12-14
    datedatedatedatedate 2020-12-21
    datedatedatedatedate 2020-12-28
    datedatedatedatedate 2021-01-05
    datedatedatedatedate 2021-01-12
    datedatedatedatedate 2021-01-19
    datedatedatedatedate 2021-01-26
    datedatedatedatedate 2021-02-02
    datedatedatedatedate 2021-02-09
    datedatedatedatedate 2021-02-23
    2022-09-24 17:37:54.902100 handle_order_submit process req check position failed for order_req:OrderReq(bktfut,EB2102.DCE,'1','1',630,8911.0,U,0,strategy,2021-02-23 15:00:00) 
    2022-09-24 17:37:54.902252 continous trading send order=OrderReq(bktfut,EB2102.DCE,'1','1',630,8911.0,U,0,strategy,2021-02-23 15:00:00) failed err=-113,无可用持仓 
    datedatedatedatedate 2021-03-02
    datedatedatedatedate 2021-03-09
    datedatedatedatedate 2021-03-16
    datedatedatedatedate 2021-03-23
    datedatedatedatedate 2021-03-30
    datedatedatedatedate 2021-04-07
    datedatedatedatedate 2021-04-14
    datedatedatedatedate 2021-04-21
    datedatedatedatedate 2021-04-28
    datedatedatedatedate 2021-05-10
    datedatedatedatedate 2021-05-17
    datedatedatedatedate 2021-05-24
    datedatedatedatedate 2021-05-31
    datedatedatedatedate 2021-06-07
    datedatedatedatedate 2021-06-15
    datedatedatedatedate 2021-06-22
    datedatedatedatedate 2021-06-29
    datedatedatedatedate 2021-07-06
    datedatedatedatedate 2021-07-13
    datedatedatedatedate 2021-07-20
    datedatedatedatedate 2021-07-27
    datedatedatedatedate 2021-08-03
    datedatedatedatedate 2021-08-10
    datedatedatedatedate 2021-08-17
    datedatedatedatedate 2021-08-24
    datedatedatedatedate 2021-08-31
    datedatedatedatedate 2021-09-07
    datedatedatedatedate 2021-09-14
    datedatedatedatedate 2021-09-23
    datedatedatedatedate 2021-09-30
    datedatedatedatedate 2021-10-14
    datedatedatedatedate 2021-10-21
    datedatedatedatedate 2021-10-28
    datedatedatedatedate 2021-11-04
    datedatedatedatedate 2021-11-11
    datedatedatedatedate 2021-11-18
    datedatedatedatedate 2021-11-25
    datedatedatedatedate 2021-12-02
    datedatedatedatedate 2021-12-09
    datedatedatedatedate 2021-12-16
    datedatedatedatedate 2021-12-23
    datedatedatedatedate 2021-12-30
    datedatedatedatedate 2022-01-07
    datedatedatedatedate 2022-01-14
    datedatedatedatedate 2022-01-21
    datedatedatedatedate 2022-01-28
    datedatedatedatedate 2022-02-11
    datedatedatedatedate 2022-02-18
    datedatedatedatedate 2022-02-25
    datedatedatedatedate 2022-03-04
    datedatedatedatedate 2022-03-11
    datedatedatedatedate 2022-03-18
    datedatedatedatedate 2022-03-25
    datedatedatedatedate 2022-04-01
    datedatedatedatedate 2022-04-12
    datedatedatedatedate 2022-04-19
    datedatedatedatedate 2022-04-26
    datedatedatedatedate 2022-05-06
    datedatedatedatedate 2022-05-13
    datedatedatedatedate 2022-05-20
    datedatedatedatedate 2022-05-27
    datedatedatedatedate 2022-06-06
    datedatedatedatedate 2022-06-13
    datedatedatedatedate 2022-06-20
    datedatedatedatedate 2022-06-27
    
    • 收益率142.15%
    • 年化收益率7.31%
    • 基准收益率26.87%
    • 阿尔法0.05
    • 贝塔0.0
    • 夏普比率0.6
    • 胜率0.52
    • 盈亏比1.12
    • 收益波动率7.81%
    • 最大回撤18.44%
    bigcharts-data-start/{"__type":"tabs","__id":"bigchart-44d61ef2c87e42e6aff287e884e24f1e"}/bigcharts-data-end
    In [105]:
    import empyrical
    start_date = ['2010-01-01', '2011-01-01', '2012-01-01', '2013-01-01', '2014-01-01', '2015-01-01', '2016-01-01', '2017-01-01', '2018-01-01', '2019-01-01', '2020-01-01', '2021-01-01', '2022-01-01']
    end_date = ['2010-12-31', '2011-12-31', '2012-12-31', '2013-12-31', '2014-12-31', '2015-12-31', '2016-12-31', '2017-12-31', '2018-12-31', '2019-12-31', '2020-12-31', '2021-12-31', '2022-08-31']
    raw_perf = m4.raw_perf.read()
    df_result = []
    for sd, ed in zip(start_date, end_date):
        df = raw_perf[raw_perf.date.between(sd, ed)]
        sharpe = empyrical.sharpe_ratio(df.returns)
        sortino = empyrical.sortino_ratio(df.returns)
        max_drawdown = empyrical.max_drawdown(df.returns)
        vol = empyrical.annual_volatility(df.returns)
        returns = empyrical.annual_return(df.returns)
        df_result.append({'start_date':sd,'end_date':ed,'returns':returns,'vol':vol,'max_drawdown':max_drawdown,'sharpe':sharpe,'sortino':sortino})
    #     print(f"date between {sd} and {ed}, the sharpe is {sharpe}, sortino is {sortino}")
    pd.DataFrame(df_result)[['returns','vol','max_drawdown','sharpe','sortino']]
    
    Out[105]:
    returns vol max_drawdown sharpe sortino
    0 0.188618 0.048466 -0.020677 3.590505 6.089683
    1 0.026929 0.050016 -0.041016 0.556220 0.811716
    2 0.075990 0.042782 -0.036324 1.733526 2.554126
    3 0.239387 0.062150 -0.021908 3.485567 6.484333
    4 0.225259 0.059449 -0.021533 3.448195 6.104840
    5 0.069663 0.062064 -0.028904 1.116071 1.738843
    6 -0.108153 0.086622 -0.111807 -1.277930 -1.708341
    7 0.106984 0.098963 -0.057324 1.076579 1.572197
    8 0.051304 0.065529 -0.072205 0.796175 1.212403
    9 -0.024243 0.068808 -0.111174 -0.322352 -0.434509
    10 0.135071 0.098118 -0.070653 1.340417 2.019233
    11 -0.110315 0.127175 -0.174831 -0.855346 -1.113550
    12 0.337974 0.108731 -0.041887 2.733126 4.609532