克隆策略

每日仓位

pos_coefficient为每日建仓仓位的一个比例系数,这有利于根据自己需求实现资金管理。

In [1]:
 pos_coefficient = {
'2017/7/27':1
,'2017/7/26':1
,'2017/7/25':1
,'2017/7/24':1
,'2017/7/21':1
,'2017/7/20':1
,'2017/7/19':1
,'2017/7/18':1
,'2017/7/17':1
,'2017/7/14':1
,'2017/7/13':1
,'2017/7/12':1
,'2017/7/11':1
,'2017/7/10':1
,'2017/7/7':1
,'2017/7/6':1
,'2017/7/5':1
,'2017/7/4':1
,'2017/7/3':1
,'2017/6/30':1
,'2017/6/29':1
,'2017/6/28':1
,'2017/6/27':1
,'2017/6/26':1
,'2017/6/23':1
,'2017/6/22':1
,'2017/6/21':1
,'2017/6/20':1
,'2017/6/19':1
,'2017/6/16':1
,'2017/6/15':1
,'2017/6/14':1
,'2017/6/13':1
,'2017/6/12':1
,'2017/6/9':1
,'2017/6/8':1
,'2017/6/7':0.8
,'2017/6/6':0.8
,'2017/6/5':0.8
,'2017/6/2':0.5
,'2017/6/1':0.5
,'2017/5/31':0.5
,'2017/5/26':0.5
,'2017/5/25':0.3
,'2017/5/24':0.3
,'2017/5/23':0.3
,'2017/5/22':0.3
,'2017/5/19':0.3
,'2017/5/18':0.3
,'2017/5/17':0.3
,'2017/5/16':0.1
,'2017/5/15':0.1
,'2017/5/12':0.1
,'2017/5/11':0.1
,'2017/5/10':0.1
,'2017/5/9':0.1
,'2017/5/8':0.1
,'2017/5/5':0.1
,'2017/5/4':0.1
,'2017/5/3':0.1
,'2017/5/2':0.1
,'2017/4/28':0.1
,'2017/4/27':0.1
,'2017/4/26':0.1
,'2017/4/25':0.1
,'2017/4/24':0.1
,'2017/4/21':0.1
,'2017/4/20':0.1
,'2017/4/19':0.1
,'2017/4/18':0.3
,'2017/4/17':0.5
,'2017/4/14':0.8
,'2017/4/13':1
,'2017/4/12':1
,'2017/4/11':1
,'2017/4/10':1
,'2017/4/7':1
,'2017/4/6':1
,'2017/4/5':1
,'2017/3/31':1
,'2017/3/30':1
,'2017/3/29':1
,'2017/3/28':1
,'2017/3/27':1
,'2017/3/24':1
,'2017/3/23':1
,'2017/3/22':1
,'2017/3/21':1
,'2017/3/20':1
,'2017/3/17':1
,'2017/3/16':1
,'2017/3/15':1
,'2017/3/14':1
,'2017/3/13':1
,'2017/3/10':1
,'2017/3/9':1
,'2017/3/8':1
,'2017/3/7':1
,'2017/3/6':1
,'2017/3/3':1
,'2017/3/2':1
,'2017/3/1':1
,'2017/2/28':1
,'2017/2/27':1
,'2017/2/24':1
,'2017/2/23':1
,'2017/2/22':1
,'2017/2/21':1
,'2017/2/20':1
,'2017/2/17':1
,'2017/2/16':1
,'2017/2/15':1
,'2017/2/14':1
,'2017/2/13':1
,'2017/2/10':1
,'2017/2/9':1
,'2017/2/8':1
,'2017/2/7':1
,'2017/2/6':1
,'2017/2/3':1
,'2017/1/26':1
,'2017/1/25':1
,'2017/1/24':1
,'2017/1/23':1
,'2017/1/20':1
,'2017/1/19':1
,'2017/1/18':1
,'2017/1/17':1
,'2017/1/16':1
,'2017/1/13':1
,'2017/1/12':1
,'2017/1/11':1
,'2017/1/10':1
,'2017/1/9':1
,'2017/1/6':0.8
,'2017/1/5':0.8
,'2017/1/4':0.8
,'2017/1/3':0.5
,'2016/12/30':0.5
,'2016/12/29':0.5
,'2016/12/28':0.5
,'2016/12/27':0.5
,'2016/12/26':0.5
,'2016/12/23':0.5
,'2016/12/22':0.5
,'2016/12/21':0.3
,'2016/12/20':0.3
,'2016/12/19':0.3
,'2016/12/16':0.3
,'2016/12/15':0.3
,'2016/12/14':0.3
,'2016/12/13':0.3
,'2016/12/12':0.5
,'2016/12/9':0.5
,'2016/12/8':0.5
,'2016/12/7':0.5
,'2016/12/6':0.5
,'2016/12/5':0.8
,'2016/12/2':0.8
,'2016/12/1':0.8
,'2016/11/30':1
,'2016/11/29':1
,'2016/11/28':1
,'2016/11/25':1
,'2016/11/24':1
,'2016/11/23':1
,'2016/11/22':1
,'2016/11/21':1
,'2016/11/18':1
,'2016/11/17':1
,'2016/11/16':1
,'2016/11/15':1
,'2016/11/14':1
,'2016/11/11':1
,'2016/11/10':1
,'2016/11/9':1
,'2016/11/8':1
,'2016/11/7':1
,'2016/11/4':1
,'2016/11/3':1
,'2016/11/2':1
,'2016/11/1':1
,'2016/10/31':1
,'2016/10/28':1
,'2016/10/27':1
,'2016/10/26':1
,'2016/10/25':1
,'2016/10/24':1
,'2016/10/21':0.8
,'2016/10/20':0.8
,'2016/10/19':1
,'2016/10/18':0.5
,'2016/10/17':0.5
,'2016/10/14':0.5
,'2016/10/13':0.5
,'2016/10/12':0.5
,'2016/10/11':0.3
,'2016/10/10':0.3
,'2016/9/30':0.3
,'2016/9/29':0.3
,'2016/9/28':0.3
,'2016/9/27':0.3
,'2016/9/26':0.5
,'2016/9/23':0.5
,'2016/9/22':0.5
,'2016/9/21':0.5
,'2016/9/20':0.5
,'2016/9/19':0.5
,'2016/9/14':0.5
,'2016/9/13':0.5
,'2016/9/12':0.5
,'2016/9/9':0.8
,'2016/9/8':0.8
,'2016/9/7':0.8
,'2016/9/6':0.8
,'2016/9/5':0.5
,'2016/9/2':0.5
,'2016/9/1':0.5
,'2016/8/31':0.5
,'2016/8/30':0.5
,'2016/8/29':0.5
,'2016/8/26':0.5
,'2016/8/25':0.5
,'2016/8/24':0.5
,'2016/8/23':0.5
,'2016/8/22':0.5
,'2016/8/19':0.5
,'2016/8/18':0.5
,'2016/8/17':0.5
,'2016/8/16':0.5
,'2016/8/15':0.5
,'2016/8/12':0.3
,'2016/8/11':0.3
,'2016/8/10':0.3
,'2016/8/9':0.3
,'2016/8/8':0.3
,'2016/8/5':0.3
,'2016/8/4':0.3
,'2016/8/3':0.3
,'2016/8/2':0.3
,'2016/8/1':0.3
,'2016/7/29':0.3
,'2016/7/28':0.3
,'2016/7/27':0.5
,'2016/7/26':0.5
,'2016/7/25':0.5
,'2016/7/22':0.5
,'2016/7/21':0.5
,'2016/7/20':0.5
,'2016/7/19':0.5
,'2016/7/18':0.5
,'2016/7/15':0.5
,'2016/7/14':0.5
,'2016/7/13':0.5
,'2016/7/12':0.3
,'2016/7/11':0.3
,'2016/7/8':0.3
,'2016/7/7':0.3
,'2016/7/6':0.3
,'2016/7/5':0.3
,'2016/7/4':0.3
,'2016/7/1':0.3
,'2016/6/30':0.3
,'2016/6/29':0.3
,'2016/6/28':0.3
,'2016/6/27':0.1
,'2016/6/24':0.1
,'2016/6/23':0.1
,'2016/6/22':0.1
,'2016/6/21':0.1
,'2016/6/20':0.1
,'2016/6/17':0.1
,'2016/6/16':0.1
,'2016/6/15':0.1
,'2016/6/14':0.1
,'2016/6/13':0.3
,'2016/6/8':0.3
,'2016/6/7':0.3
,'2016/6/6':0.3
,'2016/6/3':0.3
,'2016/6/2':0.1
,'2016/6/1':0.1
,'2016/5/31':0.1
,'2016/5/30':0.1
,'2016/5/27':0.1
,'2016/5/26':0.1
,'2016/5/25':0.1
,'2016/5/24':0.1
,'2016/5/23':0.1
,'2016/5/20':0.1
,'2016/5/19':0.1
,'2016/5/18':0.1
,'2016/5/17':0.1
,'2016/5/16':0.1
,'2016/5/13':0.1
,'2016/5/12':0.1
,'2016/5/11':0.1
,'2016/5/10':0.1
,'2016/5/9':0.1
,'2016/5/6':0.3
,'2016/5/5':0.3
,'2016/5/4':0.3
,'2016/5/3':0.3
,'2016/4/29':0.3
,'2016/4/28':0.3
,'2016/4/27':0.3
,'2016/4/26':0.3
,'2016/4/25':0.3
,'2016/4/22':0.3
,'2016/4/21':0.3
,'2016/4/20':0.3
,'2016/4/19':0.3
,'2016/4/18':0.3
,'2016/4/15':0.3
,'2016/4/14':0.3
,'2016/4/13':0.3
,'2016/4/12':0.3
,'2016/4/11':0.3
,'2016/4/8':0.3
,'2016/4/7':0.3
,'2016/4/6':0.3
,'2016/4/5':0.3
,'2016/4/1':0.1
,'2016/3/31':0.1
,'2016/3/30':0.1
,'2016/3/29':0.1
,'2016/3/28':0.1
,'2016/3/25':0.1
,'2016/3/24':0.1
,'2016/3/23':0.3
,'2016/3/22':0.3
,'2016/3/21':0.3
,'2016/3/18':0.3
,'2016/3/17':0.1
,'2016/3/16':0.1
,'2016/3/15':0.1
,'2016/3/14':0.1
,'2016/3/11':0.1
,'2016/3/10':0.1
,'2016/3/9':0.3
,'2016/3/8':0.3
,'2016/3/7':0.1
,'2016/3/4':0.1
,'2016/3/3':0.1
,'2016/3/2':0.1
,'2016/3/1':0.1
,'2016/2/29':0.1
,'2016/2/26':0.1
,'2016/2/25':0.3
,'2016/2/24':0.3
,'2016/2/23':0.3
,'2016/2/22':0.3
,'2016/2/19':0.3
,'2016/2/18':0.3
,'2016/2/17':0.3
,'2016/2/16':0.3
,'2016/2/15':0.3
,'2016/2/5':0.3
,'2016/2/4':0.3
,'2016/2/3':0.1
,'2016/2/2':0.1
,'2016/2/1':0.1
,'2016/1/29':0.1
,'2016/1/28':0.1
,'2016/1/27':0.1
,'2016/1/26':0.1
,'2016/1/25':0.1
,'2016/1/22':0.1
,'2016/1/21':0.1
,'2016/1/20':0.1
,'2016/1/19':0.1
,'2016/1/18':0.1
,'2016/1/15':0.1
,'2016/1/14':0.1
,'2016/1/13':0.1
,'2016/1/12':0.1
,'2016/1/11':0.1
,'2016/1/8':0.1
,'2016/1/7':0.1
,'2016/1/6':0.1
,'2016/1/5':0.1
,'2016/1/4':0.5
,'2015/12/31':1
,'2015/12/30':1
,'2015/12/29':1
,'2015/12/28':1
,'2015/12/25':1
,'2015/12/24':1
,'2015/12/23':1
,'2015/12/22':1
,'2015/12/21':1
,'2015/12/18':1
,'2015/12/17':1
,'2015/12/16':1
,'2015/12/15':1
,'2015/12/14':1
,'2015/12/11':1
,'2015/12/10':1
,'2015/12/9':1
,'2015/12/8':1
,'2015/12/7':1
,'2015/12/4':1
,'2015/12/3':1
,'2015/12/2':1
,'2015/12/1':1
,'2015/11/30':1
,'2015/11/27':1
,'2015/11/26':1
,'2015/11/25':1
,'2015/11/24':1
,'2015/11/23':1
,'2015/11/20':1
,'2015/11/19':1
,'2015/11/18':1
,'2015/11/17':1
,'2015/11/16':1
,'2015/11/13':1
,'2015/11/12':1
,'2015/11/11':1
,'2015/11/10':1
,'2015/11/9':1
,'2015/11/6':1
,'2015/11/5':1
,'2015/11/4':1
,'2015/11/3':1
,'2015/11/2':1
,'2015/10/30':1
,'2015/10/29':1
,'2015/10/28':1
,'2015/10/27':1
,'2015/10/26':1
,'2015/10/23':0.5
,'2015/10/22':0.5
,'2015/10/21':0.5
,'2015/10/20':0.5
,'2015/10/19':0.5
,'2015/10/16':0.5
,'2015/10/15':0.3
,'2015/10/14':0.3
,'2015/10/13':0.3
,'2015/10/12':0.3
,'2015/10/9':0.3
,'2015/10/8':0.3
,'2015/9/30':0.1
,'2015/9/29':0.1
,'2015/9/28':0.1
,'2015/9/25':0.1
,'2015/9/24':0.1
,'2015/9/23':0.1
,'2015/9/22':0.1
,'2015/9/21':0.1
,'2015/9/18':0.1
,'2015/9/17':0.1
,'2015/9/16':0.1
,'2015/9/15':0.1
,'2015/9/14':0.3
,'2015/9/11':0.3
,'2015/9/10':0.3
,'2015/9/9':0.3
,'2015/9/8':0.3
,'2015/9/7':0.3
,'2015/9/2':0.3
,'2015/9/1':0.3
,'2015/8/31':0.3
,'2015/8/28':0.1
,'2015/8/27':0.1
,'2015/8/26':0.1
,'2015/8/25':0.1
,'2015/8/24':0.1
,'2015/8/21':0.1
,'2015/8/20':0.1
,'2015/8/19':0.1
,'2015/8/18':0.3
,'2015/8/17':0.3
,'2015/8/14':0.3
,'2015/8/13':0.3
,'2015/8/12':0.3
,'2015/8/11':0.3
,'2015/8/10':0.3
,'2015/8/7':0.3
,'2015/8/6':0.3
,'2015/8/5':0.5
,'2015/8/4':0.3
,'2015/8/3':0.3
,'2015/7/31':0.3
,'2015/7/30':0.3
,'2015/7/29':0.1
,'2015/7/28':0.1
,'2015/7/27':0.3
,'2015/7/24':0.5
,'2015/7/23':1
,'2015/7/22':1
,'2015/7/21':1
,'2015/7/20':1
,'2015/7/17':0.8
,'2015/7/16':0.8
,'2015/7/15':0.5
,'2015/7/14':0.5
,'2015/7/13':0.3
,'2015/7/10':0.3
,'2015/7/9':0.1
,'2015/7/8':0.1
,'2015/7/7':0.1
,'2015/7/6':0.1
,'2015/7/3':0.1
,'2015/7/2':0.1
,'2015/7/1':0.1
,'2015/6/30':0.1
,'2015/6/29':0.1
,'2015/6/26':0.1
,'2015/6/25':0.1
,'2015/6/24':0.1
,'2015/6/23':0.1
,'2015/6/19':0.1
,'2015/6/18':0.1
,'2015/6/17':0.3
,'2015/6/16':0.3
,'2015/6/15':1
,'2015/6/12':1
,'2015/6/11':1
,'2015/6/10':1
,'2015/6/9':1
,'2015/6/8':1
,'2015/6/5':1
,'2015/6/4':1
,'2015/6/3':1
,'2015/6/2':1
,'2015/6/1':1
,'2015/5/29':1
,'2015/5/28':1
,'2015/5/27':1
,'2015/5/26':1
,'2015/5/25':1
,'2015/5/22':1
,'2015/5/21':1
,'2015/5/20':1
,'2015/5/19':1
,'2015/5/18':1
,'2015/5/15':1
,'2015/5/14':1
,'2015/5/13':1
,'2015/5/12':1
,'2015/5/11':1
,'2015/5/8':1
,'2015/5/7':1
,'2015/5/6':1
,'2015/5/5':1
,'2015/5/4':1
,'2015/4/30':1
,'2015/4/29':1
,'2015/4/28':1
,'2015/4/27':1
,'2015/4/24':1
,'2015/4/23':1
,'2015/4/22':1
,'2015/4/21':1
,'2015/4/20':1
,'2015/4/17':1
,'2015/4/16':1
,'2015/4/15':1
,'2015/4/14':1
,'2015/4/13':1
,'2015/4/10':1
,'2015/4/9':1
,'2015/4/8':1
,'2015/4/7':1
,'2015/4/3':1
,'2015/4/2':1
,'2015/4/1':1
,'2015/3/31':1
,'2015/3/30':1
,'2015/3/27':1
,'2015/3/26':1
,'2015/3/25':1
,'2015/3/24':1
,'2015/3/23':1
,'2015/3/20':1
,'2015/3/19':1
,'2015/3/18':1
,'2015/3/17':1
,'2015/3/16':1
,'2015/3/13':1
,'2015/3/12':1
,'2015/3/11':1
,'2015/3/10':1
,'2015/3/9':1
,'2015/3/6':1
,'2015/3/5':1
,'2015/3/4':1
,'2015/3/3':1
,'2015/3/2':1
,'2015/2/27':1
,'2015/2/26':1
,'2015/2/25':1
,'2015/2/17':1
,'2015/2/16':1
,'2015/2/13':1
,'2015/2/12':1
,'2015/2/11':1
,'2015/2/10':1
,'2015/2/9':1
,'2015/2/6':1
,'2015/2/5':1
,'2015/2/4':1
,'2015/2/3':1
,'2015/2/2':1
,'2015/1/30':1
,'2015/1/29':1
,'2015/1/28':1
,'2015/1/27':1
,'2015/1/26':1
,'2015/1/23':1
,'2015/1/22':1
,'2015/1/21':1
,'2015/1/20':1
,'2015/1/19':1
,'2015/1/16':1
,'2015/1/15':1
,'2015/1/14':1
,'2015/1/13':1
,'2015/1/12':1
,'2015/1/9':1
,'2015/1/8':1
,'2015/1/7':1
,'2015/1/6':1
,'2015/1/5':1
,'2014/12/31':1
,'2014/12/30':1
,'2014/12/29':1
,'2014/12/26':1
,'2014/12/25':1
,'2014/12/24':1
,'2014/12/23':1
,'2014/12/22':1
,'2014/12/19':1
,'2014/12/18':1
,'2014/12/17':1
,'2014/12/16':1
,'2014/12/15':1
,'2014/12/12':1
,'2014/12/11':1
,'2014/12/10':1
,'2014/12/9':1
,'2014/12/8':1
,'2014/12/5':1
,'2014/12/4':1
,'2014/12/3':1
,'2014/12/2':1
,'2014/12/1':1
,'2014/11/28':1
,'2014/11/27':1
,'2014/11/26':1
,'2014/11/25':1
,'2014/11/24':1
,'2014/11/21':1
,'2014/11/20':1
,'2014/11/19':1
,'2014/11/18':1
,'2014/11/17':1
,'2014/11/14':1
,'2014/11/13':1
,'2014/11/12':1
,'2014/11/11':1
,'2014/11/10':1
,'2014/11/7':1
,'2014/11/6':1
,'2014/11/5':1
,'2014/11/4':1
,'2014/11/3':1
,'2014/10/31':1
,'2014/10/30':1
,'2014/10/29':1
,'2014/10/28':1
,'2014/10/27':1
,'2014/10/24':1
,'2014/10/23':1
,'2014/10/22':1
,'2014/10/21':1
,'2014/10/20':1
,'2014/10/17':1
,'2014/10/16':1
,'2014/10/15':1
,'2014/10/14':1
,'2014/10/13':1
,'2014/10/10':1
,'2014/10/9':1
,'2014/10/8':1
,'2014/9/30':1
,'2014/9/29':1
,'2014/9/26':1
,'2014/9/25':1
,'2014/9/24':1
,'2014/9/23':1
,'2014/9/22':1
,'2014/9/19':1
,'2014/9/18':1
,'2014/9/17':1
,'2014/9/16':1
,'2014/9/15':1
,'2014/9/12':1
,'2014/9/11':1
,'2014/9/10':1
,'2014/9/9':1
,'2014/9/5':1
,'2014/9/4':1
,'2014/9/3':1
,'2014/9/2':1
,'2014/9/1':1
,'2014/8/29':1
,'2014/8/28':1
,'2014/8/27':1
,'2014/8/26':1
,'2014/8/25':1
,'2014/8/22':1
,'2014/8/21':1
,'2014/8/20':1
,'2014/8/19':1
,'2014/8/18':1
,'2014/8/15':1
,'2014/8/14':1
,'2014/8/13':1
,'2014/8/12':1
,'2014/8/11':1
,'2014/8/8':1
,'2014/8/7':1
,'2014/8/6':1
,'2014/8/5':1
,'2014/8/4':1
,'2014/8/1':1
,'2014/7/31':1
,'2014/7/30':1
,'2014/7/29':1
,'2014/7/28':1
,'2014/7/25':1
,'2014/7/24':1
,'2014/7/23':1
,'2014/7/22':1
,'2014/7/21':1
,'2014/7/18':1
,'2014/7/17':1
,'2014/7/16':1
,'2014/7/15':1
,'2014/7/14':1
,'2014/7/11':1
,'2014/7/10':1
,'2014/7/9':1
,'2014/7/8':1
,'2014/7/7':1
,'2014/7/4':1
,'2014/7/3':1
,'2014/7/2':1
,'2014/7/1':1
,'2014/6/30':1
,'2014/6/27':1
,'2014/6/26':1
,'2014/6/25':1
,'2014/6/24':0.8
,'2014/6/23':0.8
,'2014/6/20':0.8
,'2014/6/19':1
,'2014/6/18':1
,'2014/6/17':1
,'2014/6/16':1
,'2014/6/13':1
,'2014/6/12':1
,'2014/6/11':1
,'2014/6/10':1
,'2014/6/9':1
,'2014/6/6':1
,'2014/6/5':1
,'2014/6/4':1
,'2014/6/3':1
,'2014/5/30':1
,'2014/5/29':1
,'2014/5/28':1
,'2014/5/27':1
,'2014/5/26':1
,'2014/5/23':1
,'2014/5/22':1
,'2014/5/21':1
,'2014/5/20':1
,'2014/5/19':1
,'2014/5/16':1
,'2014/5/15':1
,'2014/5/14':1
,'2014/5/13':1
,'2014/5/12':1
,'2014/5/9':1
,'2014/5/8':1
,'2014/5/7':1
,'2014/5/6':1
,'2014/5/5':0.8
,'2014/4/30':0.5
,'2014/4/29':0.5
,'2014/4/28':0.8
,'2014/4/25':1
,'2014/4/24':1
,'2014/4/23':1
,'2014/4/22':1
,'2014/4/21':1
,'2014/4/18':1
,'2014/4/17':1
,'2014/4/16':1
,'2014/4/15':1
,'2014/4/14':1
,'2014/4/11':1
,'2014/4/10':1
,'2014/4/9':1
,'2014/4/8':1
,'2014/4/4':1
,'2014/4/3':1
,'2014/4/2':1
,'2014/4/1':1
,'2014/3/31':1
,'2014/3/28':1
,'2014/3/27':1
,'2014/3/26':1
,'2014/3/25':1
,'2014/3/24':1
,'2014/3/21':1
,'2014/3/20':1
,'2014/3/19':1
,'2014/3/18':1
,'2014/3/17':1
,'2014/3/14':1
,'2014/3/13':1
,'2014/3/12':1
,'2014/3/11':1
,'2014/3/10':1
,'2014/3/7':1
,'2014/3/6':1
,'2014/3/5':1
,'2014/3/4':1
,'2014/3/3':0.5
,'2014/2/28':0.5
,'2014/2/27':0.5
,'2014/2/26':0.5
,'2014/2/25':0.8
,'2014/2/24':1
,'2014/2/21':1
,'2014/2/20':1
,'2014/2/19':1
,'2014/2/18':1
,'2014/2/17':0.8
,'2014/2/14':0.8
,'2014/2/13':0.8
,'2014/2/12':0.8
,'2014/2/11':0.8
,'2014/2/10':0.5
,'2014/2/7':0.5
,'2014/1/30':0.5
,'2014/1/29':0.5
,'2014/1/28':0.5
,'2014/1/27':0.8
,'2014/1/24':0.8
,'2014/1/23':0.8
,'2014/1/22':0.5
,'2014/1/21':0.5
,'2014/1/20':0.5
,'2014/1/17':0.5
,'2014/1/16':0.5
,'2014/1/15':0.5
,'2014/1/14':0.5
,'2014/1/13':0.5
,'2014/1/10':0.5
,'2014/1/9':0.5
,'2014/1/8':0.5
,'2014/1/7':0.5
,'2014/1/6':0.5
,'2014/1/3':1
,'2014/1/2':1
,'2013/12/31':1
,'2013/12/30':1
,'2013/12/27':1
,'2013/12/26':1
,'2013/12/25':1
,'2013/12/24':1
,'2013/12/23':1
,'2013/12/20':1
,'2013/12/19':1
,'2013/12/18':1
,'2013/12/17':1
,'2013/12/16':1
,'2013/12/13':1
,'2013/12/12':1
,'2013/12/11':1
,'2013/12/10':1
,'2013/12/9':1
,'2013/12/6':1
,'2013/12/5':1
,'2013/12/4':1
,'2013/12/3':1
,'2013/12/2':1
,'2013/11/29':1
,'2013/11/28':1
,'2013/11/27':1
,'2013/11/26':1
,'2013/11/25':1
,'2013/11/22':1
,'2013/11/21':1
,'2013/11/20':1
,'2013/11/19':1
,'2013/11/18':1
,'2013/11/15':1
,'2013/11/14':1
,'2013/11/13':1
,'2013/11/12':1
,'2013/11/11':1
,'2013/11/8':1
,'2013/11/7':1
,'2013/11/6':1
,'2013/11/5':0.8
,'2013/11/4':0.8
,'2013/11/1':0.8
,'2013/10/31':0.8
,'2013/10/30':0.5
,'2013/10/29':0.5
,'2013/10/28':0.5
,'2013/10/25':0.8
,'2013/10/24':0.8
,'2013/10/23':1
,'2013/10/22':1
,'2013/10/21':1
,'2013/10/18':1
,'2013/10/17':1
,'2013/10/16':1
,'2013/10/15':1
,'2013/10/14':1
,'2013/10/11':1
,'2013/10/10':1
,'2013/10/9':1
,'2013/10/8':1
,'2013/9/30':1
,'2013/9/27':1
,'2013/9/26':1
,'2013/9/25':1
,'2013/9/24':1
,'2013/9/23':1
,'2013/9/18':1
,'2013/9/17':1
,'2013/9/16':1
,'2013/9/13':1
,'2013/9/12':1
,'2013/9/11':0.8
,'2013/9/10':0.8
,'2013/9/9':0.8
,'2013/9/6':0.8
,'2013/9/5':0.8
,'2013/9/4':0.8
,'2013/9/3':0.8
,'2013/9/2':0.5
,'2013/8/30':0.5
,'2013/8/29':0.5
,'2013/8/28':0.5
,'2013/8/27':0.5
,'2013/8/26':0.5
,'2013/8/23':0.5
,'2013/8/22':0.5
,'2013/8/21':0.3
,'2013/8/20':0.3
,'2013/8/19':0.3
,'2013/8/16':0.3
,'2013/8/15':0.3
,'2013/8/14':0.3
,'2013/8/13':0.3
,'2013/8/12':0.3
,'2013/8/9':0.1
,'2013/8/8':0.1
,'2013/8/7':0.1
,'2013/8/6':0.1
,'2013/8/5':0.1
,'2013/8/2':0.1
,'2013/8/1':0.1
,'2013/7/31':0.1
,'2013/7/30':0.1
,'2013/7/29':0.3
,'2013/7/26':0.3
,'2013/7/25':0.3
,'2013/7/24':0.3
,'2013/7/23':0.3
,'2013/7/22':0.3
,'2013/7/19':0.3
,'2013/7/18':0.3
,'2013/7/17':0.3
,'2013/7/16':0.1
,'2013/7/15':0.1
,'2013/7/12':0.1
,'2013/7/11':0.1
,'2013/7/10':0.1
,'2013/7/9':0.1
,'2013/7/8':0.3
,'2013/7/5':0.3
,'2013/7/4':0.3
,'2013/7/3':0.3
,'2013/7/2':0.1
,'2013/7/1':0.1
,'2013/6/28':0.1
,'2013/6/27':0.1
,'2013/6/26':0.1
,'2013/6/25':0.1
,'2013/6/24':0.1
,'2013/6/21':0.1
,'2013/6/20':0.1
,'2013/6/19':0.1
,'2013/6/18':0.1
,'2013/6/17':0.1
,'2013/6/14':0.1
,'2013/6/13':0.1
,'2013/6/7':0.1
,'2013/6/6':0.1
,'2013/6/5':0.1
,'2013/6/4':0.1
,'2013/6/3':0.1
,'2013/5/31':0.1
,'2013/5/30':0.1
,'2013/5/29':0.1
,'2013/5/28':0.1
,'2013/5/27':0.1
,'2013/5/24':0.1
,'2013/5/23':0.3
,'2013/5/22':0.3
,'2013/5/21':0.3
,'2013/5/20':0.3
,'2013/5/17':0.3
,'2013/5/16':0.3
,'2013/5/15':0.3
,'2013/5/14':0.3
,'2013/5/13':0.3
,'2013/5/10':0.1
,'2013/5/9':0.1
,'2013/5/8':0.1
,'2013/5/7':0.1
,'2013/5/6':0.1
,'2013/5/3':0.1
,'2013/5/2':0.1
,'2013/4/26':0.1
,'2013/4/25':0.1
,'2013/4/24':0.1
,'2013/4/23':0.1
,'2013/4/22':0.1
,'2013/4/19':0.1
,'2013/4/18':0.1
,'2013/4/17':0.1
,'2013/4/16':0.1
,'2013/4/15':0.1
,'2013/4/12':0.1
,'2013/4/11':0.1
,'2013/4/10':0.1
,'2013/4/9':0.1
,'2013/4/8':0.1
,'2013/4/3':0.1
,'2013/4/2':0.1
,'2013/4/1':0.1
,'2013/3/29':0.1
,'2013/3/28':0.3
,'2013/3/27':0.3
,'2013/3/26':0.3
,'2013/3/25':0.3
,'2013/3/22':0.1
,'2013/3/21':0.1
,'2013/3/20':0.1
,'2013/3/19':0.1
,'2013/3/18':0.1
,'2013/3/15':0.1
,'2013/3/14':0.1
,'2013/3/13':0.1
,'2013/3/12':0.1
,'2013/3/11':0.1
,'2013/3/8':0.1
,'2013/3/7':0.3
,'2013/3/6':0.3
,'2013/3/5':0.3
,'2013/3/4':0.5
,'2013/3/1':0.5
,'2013/2/28':0.5
,'2013/2/27':0.5
,'2013/2/26':0.5
,'2013/2/25':0.5
,'2013/2/22':0.5
,'2013/2/21':0.8
,'2013/2/20':0.8
,'2013/2/19':1
,'2013/2/18':1
,'2013/2/8':1
,'2013/2/7':1
,'2013/2/6':1
,'2013/2/5':1
,'2013/2/4':1
,'2013/2/1':1
,'2013/1/31':1
,'2013/1/30':1
,'2013/1/29':1
,'2013/1/28':1
,'2013/1/25':1
,'2013/1/24':1
,'2013/1/23':1
,'2013/1/22':1
,'2013/1/21':1
,'2013/1/18':1
,'2013/1/17':1
,'2013/1/16':1
,'2013/1/15':1
,'2013/1/14':1
,'2013/1/11':1
,'2013/1/10':1
,'2013/1/9':1
,'2013/1/8':1
,'2013/1/7':1
,'2013/1/4':1
}
pos = pd.Series(pos_coefficient)
pos.sort_index(inplace=True)
pos.index = pos.index.map(lambda x :pd.to_datetime(x))
pos.index = pos.index.map(lambda x:x.strftime('%Y-%m-%d'))
 
pos = pd.DataFrame(pos)
# pos.ix['2013-01-10'][0]
In [2]:
## 基础配置
class conf:
    start_date = '2011-01-01'
    end_date='2017-07-17'
    split_date = '2016-01-01'
    instruments = D.instruments(start_date, end_date)
    hold_days = 40
    features = ['rank_pb_lf_0']
    # 数据标注标注
    label_expr = [
    # 计算未来一段时间(hold_days)的相对收益
    'shift(close, -20) / shift(open, -1)',
    # 极值处理:用1%和99%分位的值做clip
    'clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))',
    # 将分数映射到分类,这里使用20个分类,这里采取等宽离散化
    'all_wbins(label, 20)',
    # 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)
    'where(shift(high, -1) == shift(low, -1), NaN, label)'
    ]
In [6]:
## 量化回测 https://bigquant.com/docs/module_trade.html
# 回测引擎:准备数据,只执行一次
def prepare(context):
    # context.start_date / end_date,回测的时候,为trader传入参数;在实盘运行的时候,由系统替换为实盘日期
    instruments = D.instruments()
    ## 在样本外数据上进行预测
    n0 = M.general_feature_extractor.v5(
        instruments=D.instruments(),
        start_date=context.start_date, end_date=context.end_date,
        features=conf.features)
    n1 = M.derived_feature_extractor.v1(
        data=n0.data,
        features= conf.features)
    n2 = M.transform.v2(data=n1.data, transforms=None, drop_null=True)
    n3 = M.stock_ranker_predict.v5(model=context.options['model'], data=n2.data)
    context.instruments = n3.instruments
    context.options['predictions'] = n3.predictions
    context.pos_coefficient = context.options['pos']

# 回测引擎:初始化函数,只执行一次
def initialize(context):
    # 加载预测数据
    context.ranker_prediction = context.options['predictions'].read_df()
    # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数
    context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
    # 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)
    # 设置买入的股票数量,这里买入预测股票列表排名靠前的5只
    stock_count = 3
    # 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]
    context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])
    # 设置每只股票占用的最大资金比例
    context.max_cash_per_instrument = 0.2

# 回测引擎:每日数据处理函数,每天执行一次
def handle_data(context, data):
    # 日期
    dt = data.current_dt.strftime('%Y-%m-%d')
    # 按日期过滤得到今日的预测数据
    ranker_prediction = context.ranker_prediction[
        context.ranker_prediction.date == data.current_dt.strftime('%Y-%m-%d')]
    # 当日建仓仓位
    pos_coefficient = context.pos_coefficient.ix[dt][0] 
    # 1. 资金分配
    # 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金
    # 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)
    is_staging = context.trading_day_index < context.options['hold_days'] # 是否在建仓期间(前 hold_days 天)
    cash_avg = context.portfolio.portfolio_value / context.options['hold_days']
    cash_for_buy = min(context.portfolio.cash, (1 if is_staging else 1.5) * cash_avg)
    cash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)
    positions = {e.symbol: p.amount * p.last_sale_price
                 for e, p in context.portfolio.positions.items()}
    # 2. 生成卖出订单:hold_days天之后才开始卖出;对持仓的股票,按StockRanker预测的排序末位淘汰
    if not is_staging and cash_for_sell > 0:
        equities = {e.symbol: e for e, p in context.portfolio.positions.items()}
        instruments = list(reversed(list(ranker_prediction.instrument[ranker_prediction.instrument.apply(
                lambda x: x in equities and not context.has_unfinished_sell_order(equities[x]))])))
        # print('rank order for sell %s' % instruments)
        for instrument in instruments:
            context.order_target(context.symbol(instrument), 0)
            cash_for_sell -= positions[instrument]
            if cash_for_sell <= 0:
                break
    # 3. 生成买入订单:按StockRanker预测的排序,买入前面的stock_count只股票
    buy_cash_weights = context.stock_weights
    buy_instruments = list(ranker_prediction.instrument[:len(buy_cash_weights)])
    max_cash_per_instrument = context.portfolio.portfolio_value * context.max_cash_per_instrument
    for i, instrument in enumerate(buy_instruments):
        cash = cash_for_buy * buy_cash_weights[i] * pos_coefficient
        if cash > max_cash_per_instrument - positions.get(instrument, 0):
            # 确保股票持仓量不会超过每次股票最大的占用资金量
            cash = max_cash_per_instrument - positions.get(instrument, 0)
        if cash > 0:
            price = data.current(context.symbol(instrument), 'price')  # 最新价格
            stock_num = np.floor(cash/price/100)*100  # 向下取整
            context.order(context.symbol(instrument), stock_num) # 整百下单

            
## 通过训练集数据训练模型            
# 数据标注
m1 = M.advanced_auto_labeler.v1(
                               instruments=conf.instruments, start_date=conf.start_date, end_date=conf.split_date,
                               label_expr=conf.label_expr, benchmark='000300.SHA', cast_label_int=True)                     
# 抽取基础特征           
m2_1 = M.general_feature_extractor.v5(
        instruments=D.instruments(),
        start_date=conf.start_date, end_date=conf.split_date,
        features=conf.features)

# 抽取衍生特征 
m2_2 = M.derived_feature_extractor.v1(
        data=m2_1.data,
        features= conf.features)

# 特征转换
m3 = M.transform.v2(data=m2_2.data, transforms=None, drop_null=True)

# 合并标注和特征数据
m4 = M.join.v2(data1=m1.data, data2=m3.data, on=['date', 'instrument'], sort=False)

# 开始训练模型
m5 = M.stock_ranker_train.v4(training_ds=m4.data, features=conf.features)

## 测试集上进行回测
m6 = M.trade.v3(
    instruments=None,
    start_date=conf.split_date,
    end_date=conf.end_date,
    prepare=prepare,
    initialize=initialize,
    handle_data=handle_data,
    order_price_field_buy='open',       
    order_price_field_sell='close',      
    capital_base=50001,  
    price_type='original',
    benchmark='000300.SHA',             
    options={'hold_days': conf.hold_days, 'model': m5.model_id,'pos':pos},
    m_deps=np.random.rand() # 避免使用缓存
)
[2018-01-18 20:58:58.946428] INFO: bigquant: advanced_auto_labeler.v1 开始运行..
[2018-01-18 20:58:58.951495] INFO: bigquant: 命中缓存
[2018-01-18 20:58:58.965199] INFO: bigquant: advanced_auto_labeler.v1 运行完成[0.018797s].
[2018-01-18 20:58:58.997793] INFO: bigquant: general_feature_extractor.v5 开始运行..
[2018-01-18 20:58:59.001865] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.003106] INFO: bigquant: general_feature_extractor.v5 运行完成[0.005355s].
[2018-01-18 20:58:59.016493] INFO: bigquant: derived_feature_extractor.v1 开始运行..
[2018-01-18 20:58:59.020956] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.022395] INFO: bigquant: derived_feature_extractor.v1 运行完成[0.005934s].
[2018-01-18 20:58:59.035537] INFO: bigquant: transform.v2 开始运行..
[2018-01-18 20:58:59.039302] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.040818] INFO: bigquant: transform.v2 运行完成[0.005315s].
[2018-01-18 20:58:59.051312] INFO: bigquant: join.v2 开始运行..
[2018-01-18 20:58:59.054789] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.056318] INFO: bigquant: join.v2 运行完成[0.00506s].
[2018-01-18 20:58:59.068484] INFO: bigquant: stock_ranker_train.v4 开始运行..
[2018-01-18 20:58:59.071760] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.073095] INFO: bigquant: stock_ranker_train.v4 运行完成[0.004629s].
[2018-01-18 20:58:59.107861] INFO: bigquant: backtest.v7 开始运行..
[2018-01-18 20:58:59.171703] INFO: bigquant: general_feature_extractor.v5 开始运行..
[2018-01-18 20:58:59.176206] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.178158] INFO: bigquant: general_feature_extractor.v5 运行完成[0.006495s].
[2018-01-18 20:58:59.194275] INFO: bigquant: derived_feature_extractor.v1 开始运行..
[2018-01-18 20:58:59.198864] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.200262] INFO: bigquant: derived_feature_extractor.v1 运行完成[0.006033s].
[2018-01-18 20:58:59.219798] INFO: bigquant: transform.v2 开始运行..
[2018-01-18 20:58:59.234198] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.235691] INFO: bigquant: transform.v2 运行完成[0.015864s].
[2018-01-18 20:58:59.271847] INFO: bigquant: stock_ranker_predict.v5 开始运行..
[2018-01-18 20:58:59.285836] INFO: bigquant: 命中缓存
[2018-01-18 20:58:59.287600] INFO: bigquant: stock_ranker_predict.v5 运行完成[0.01576s].
[2018-01-18 20:58:59.470026] INFO: algo: set price type:original
[2018-01-18 20:59:50.519838] INFO: algo: get splits [2016-05-25 00:00:00+00:00] [asset:Equity(2594 [600269.SHA]), ratio:0.9665923714637756]
[2018-01-18 20:59:52.717180] INFO: algo: get splits [2016-06-08 00:00:00+00:00] [asset:Equity(3226 [600019.SHA]), ratio:0.9885278953647187]
[2018-01-18 20:59:55.556940] INFO: algo: get splits [2016-06-24 00:00:00+00:00] [asset:Equity(1837 [600028.SHA]), ratio:0.9872612357139587]
[2018-01-18 20:59:55.559139] INFO: algo: get splits [2016-06-24 00:00:00+00:00] [asset:Equity(1564 [601988.SHA]), ratio:0.949554979801178]
[2018-01-18 20:59:56.724292] INFO: algo: get splits [2016-06-30 00:00:00+00:00] [asset:Equity(2925 [601939.SHA]), ratio:0.9461081027984619]
[2018-01-18 20:59:58.417418] INFO: algo: get splits [2016-07-07 00:00:00+00:00] [asset:Equity(1167 [601288.SHA]), ratio:0.948171079158783]
[2018-01-18 20:59:58.767224] INFO: algo: get splits [2016-07-08 00:00:00+00:00] [asset:Equity(2333 [600015.SHA]), ratio:0.9640719890594482]
[2018-01-18 20:59:59.760114] INFO: algo: get splits [2016-07-13 00:00:00+00:00] [asset:Equity(416 [601328.SHA]), ratio:0.954081654548645]
[2018-01-18 20:59:59.762053] INFO: algo: get splits [2016-07-13 00:00:00+00:00] [asset:Equity(1127 [601818.SHA]), ratio:0.9512818996252079]
[2018-01-18 21:00:00.356719] INFO: algo: get splits [2016-07-15 00:00:00+00:00] [asset:Equity(1880 [000422.SZA]), ratio:0.9984495752068243]
[2018-01-18 21:00:02.110374] INFO: algo: get splits [2016-07-25 00:00:00+00:00] [asset:Equity(1006 [000709.SZA]), ratio:0.9897259933454926]
[2018-01-18 21:00:08.985476] INFO: algo: get splits [2016-08-26 00:00:00+00:00] [asset:Equity(2653 [000157.SZA]), ratio:0.9659090888423357]
[2018-01-18 21:00:09.669410] INFO: algo: get splits [2016-08-30 00:00:00+00:00] [asset:Equity(1363 [600219.SHA]), ratio:0.3954943526094285]
[2018-01-18 21:00:14.939736] INFO: algo: get splits [2016-09-21 00:00:00+00:00] [asset:Equity(1837 [600028.SHA]), ratio:0.9835053086280823]
[2018-01-18 21:01:36.525258] INFO: algo: get splits [2017-05-25 00:00:00+00:00] [asset:Equity(2594 [600269.SHA]), ratio:0.9707603454589844]
[2018-01-18 21:01:36.528451] INFO: Position: position handle split[sid:2594, orig_amount:2100, new_amount:2163.0, orig_cost:5.2228571483364945,new_cost:5.07, ratio:0.9707603454589844, last_sale_price:4.9800004959106445]
[2018-01-18 21:01:36.530950] INFO: Position: after split: asset: Equity(2594 [600269.SHA]), amount: 2163.0, cost_basis: 5.07, last_sale_price: 5.130000114440918
[2018-01-18 21:01:36.532510] INFO: Position: returning cash: 1.26
[2018-01-18 21:01:37.251248] INFO: algo: get splits [2017-05-26 00:00:00+00:00] [asset:Equity(799 [002468.SZA]), ratio:0.9959464136790065]
[2018-01-18 21:01:44.511729] INFO: algo: get splits [2017-06-14 00:00:00+00:00] [asset:Equity(3226 [600019.SHA]), ratio:0.9680852097162406]
[2018-01-18 21:01:47.691161] INFO: algo: get splits [2017-06-21 00:00:00+00:00] [asset:Equity(3028 [000528.SZA]), ratio:0.987908124923706]
[2018-01-18 21:01:47.692921] INFO: algo: get splits [2017-06-21 00:00:00+00:00] [asset:Equity(1006 [000709.SZA]), ratio:0.9817351147847472]
[2018-01-18 21:01:49.058094] INFO: algo: get splits [2017-06-23 00:00:00+00:00] [asset:Equity(105 [600508.SHA]), ratio:0.9911348819732666]
[2018-01-18 21:01:51.569530] INFO: algo: get splits [2017-06-29 00:00:00+00:00] [asset:Equity(2333 [600015.SHA]), ratio:0.8202643990516663]
[2018-01-18 21:01:52.194195] INFO: algo: get splits [2017-06-30 00:00:00+00:00] [asset:Equity(1037 [000898.SZA]), ratio:0.9876326294878003]
[2018-01-18 21:01:52.196007] INFO: algo: get splits [2017-06-30 00:00:00+00:00] [asset:Equity(2925 [601939.SHA]), ratio:0.9565214514732361]
[2018-01-18 21:01:52.198575] INFO: Position: position handle split[sid:1037, orig_amount:900, new_amount:911.0, orig_cost:5.576666641246183,new_cost:5.51, ratio:0.9876326294878003, last_sale_price:5.59000053220017]
[2018-01-18 21:01:52.200596] INFO: Position: after split: asset: Equity(1037 [000898.SZA]), amount: 911.0, cost_basis: 5.51, last_sale_price: 5.659999847412109
[2018-01-18 21:01:52.202458] INFO: Position: returning cash: 1.51
[2018-01-18 21:01:53.972445] INFO: algo: get splits [2017-07-05 00:00:00+00:00] [asset:Equity(1363 [600219.SHA]), ratio:0.9854227046058222]
[2018-01-18 21:01:53.974266] INFO: algo: get splits [2017-07-05 00:00:00+00:00] [asset:Equity(1127 [601818.SHA]), ratio:0.9751861866499034]
[2018-01-18 21:01:53.976351] INFO: Position: position handle split[sid:1127, orig_amount:2600, new_amount:2666.0, orig_cost:4.021538491986716,new_cost:3.92, ratio:0.9751861866499034, last_sale_price:3.930000536801315]
[2018-01-18 21:01:53.978318] INFO: Position: after split: asset: Equity(1127 [601818.SHA]), amount: 2666.0, cost_basis: 3.92, last_sale_price: 4.03000020980835
[2018-01-18 21:01:53.979581] INFO: Position: returning cash: 0.62
[2018-01-18 21:01:54.573212] INFO: algo: get splits [2017-07-06 00:00:00+00:00] [asset:Equity(1655 [600016.SHA]), ratio:0.9804877638816833]
[2018-01-18 21:01:55.355207] INFO: algo: get splits [2017-07-07 00:00:00+00:00] [asset:Equity(416 [601328.SHA]), ratio:0.9563814401626587]
[2018-01-18 21:01:56.961750] INFO: algo: get splits [2017-07-11 00:00:00+00:00] [asset:Equity(1897 [601398.SHA]), ratio:0.9560229778289795]
[2018-01-18 21:01:58.231936] INFO: algo: get splits [2017-07-13 00:00:00+00:00] [asset:Equity(1167 [601288.SHA]), ratio:0.9526463747024536]
[2018-01-18 21:01:58.234146] INFO: Position: position handle split[sid:1167, orig_amount:1100, new_amount:1154.0, orig_cost:3.566363612088472,new_cost:3.4, ratio:0.9526463747024536, last_sale_price:3.4200003147125244]
[2018-01-18 21:01:58.236260] INFO: Position: after split: asset: Equity(1167 [601288.SHA]), amount: 1154.0, cost_basis: 3.4, last_sale_price: 3.5899999141693115
[2018-01-18 21:01:58.238277] INFO: Position: returning cash: 2.32
[2018-01-18 21:01:59.059068] INFO: algo: get splits [2017-07-14 00:00:00+00:00] [asset:Equity(1564 [601988.SHA]), ratio:0.9553804993629456]
[2018-01-18 21:02:00.301445] INFO: Performance: Simulated 374 trading days out of 374.
[2018-01-18 21:02:00.302825] INFO: Performance: first open: 2016-01-04 01:30:00+00:00
[2018-01-18 21:02:00.304116] INFO: Performance: last close: 2017-07-17 07:00:00+00:00
  • 收益率18.55%
  • 年化收益率12.15%
  • 基准收益率-1.81%
  • 阿尔法0.08
  • 贝塔0.09
  • 夏普比率0.8
  • 胜率0.778
  • 盈亏比4.188
  • 收益波动率9.59%
  • 信息比率0.69
  • 最大回撤12.31%
[2018-01-18 21:02:03.561485] INFO: bigquant: backtest.v7 运行完成[184.453532s].