• 请在环境变量中设置DB_URI指向数据库

In [9]:
%matplotlib inline

import os
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from alphamind.api import *
from PyFin.api import *

plt.style.use('ggplot')

In [10]:
"""
Back test parameter settings
"""

start_date = '2017-01-01'
end_date = '2018-02-24'

frequency = '10b'
industry_lower = 1.0
industry_upper = 1.0
method = 'risk_neutral'
neutralize_risk = industry_styles
industry_name = 'sw'
industry_level = 1
benchmark_total_lower = 0.8
benchmark_total_upper = 1.0
horizon = map_freq(frequency)
weight_gap = 0.01
benchmark_code = 905
universe_name = 'zz800'
universe = Universe(universe_name)
ref_dates = makeSchedule(start_date, end_date, frequency, 'china.sse')

executor = NaiveExecutor()
data_source = os.environ['DB_URI']
engine = SqlEngine(data_source)

In [11]:
"""
Constraints settings
"""

industry_names = industry_list(industry_name, industry_level)
constraint_risk = ['SIZE', 'SIZENL', 'BETA'] + industry_names
total_risk_names = constraint_risk + ['benchmark', 'total']

b_type = []
l_val = []
u_val = []

for name in total_risk_names:
    if name == 'benchmark':
        b_type.append(BoundaryType.RELATIVE)
        l_val.append(benchmark_total_lower)
        u_val.append(benchmark_total_upper)
    elif name in {'SIZE', 'SIZENL', 'BETA'}:
        b_type.append(BoundaryType.ABSOLUTE)
        l_val.append(0.0)
        u_val.append(0.0)
    else:
        b_type.append(BoundaryType.RELATIVE)
        l_val.append(industry_lower)
        u_val.append(industry_upper)

bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val)

In [22]:
def factor_analysis(engine, factor_name, universe, benchmark_code, positive):
    
    """
    Data phase
    """
    index_return = engine.fetch_dx_return_index_range(benchmark_code, start_date, end_date, horizon=horizon,
                                                  offset=1).set_index('trade_date')

    codes_return = engine.fetch_dx_return_range(universe,
                                                dates=ref_dates,
                                                horizon=horizon,
                                                offset=1)

    return_groups = codes_return.groupby('trade_date')
    
    """
    Model phase: we need 1 constant linear model and one linear regression model
    """
    industry_total = engine.fetch_industry_matrix_range(universe, dates=ref_dates, category=industry_name, level=industry_level)
    industry_groups = industry_total.groupby('trade_date')
    
    alpha_name = [str(factor_name) + '_' + ('pos' if positive else 'neg')]
    simple_expression = CSRes(LAST(factor_name), 'ETOP') if positive else -CSRes(LAST(factor_name), 'ETOP')

    const_features = {alpha_name[0]: simple_expression}
    const_weights = {alpha_name[0]: 1.}

    const_model = ConstLinearModel(features=alpha_name,
                                   weights=const_weights)

    const_model_factor_data = engine.fetch_data_range(universe,
                                                      const_features,
                                                      dates=ref_dates,
                                                      benchmark=benchmark_code)['factor'].dropna()

    rets = []
    turn_overs = []
    leverags = []
    ics = []
    index_dates = []
    factor_groups = const_model_factor_data.groupby('trade_date')

    for i, value in enumerate(factor_groups):
        date = value[0]
        data = value[1]
        index_dates.append(date)
        
        industry_matrix = industry_groups.get_group(date)
        total_data = data.fillna(data[alpha_name].median())
        total_data = pd.merge(total_data, industry_matrix, on=['code'])
        alpha_logger.info('{0}: {1}'.format(date, len(total_data)))
        risk_exp = total_data[neutralize_risk].values.astype(float)
        benchmark_w = total_data.weight.values
        is_in_benchmark = (benchmark_w > 0.).astype(float).reshape(-1, 1)

        constraint_exp = total_data[constraint_risk].values
        risk_exp_expand = np.concatenate((constraint_exp,
                                          is_in_benchmark,
                                          np.ones_like(is_in_benchmark)), axis=1).astype(float)
        total_risk_exp = pd.DataFrame(risk_exp_expand, columns=total_risk_names)
        constraints = LinearConstraints(bounds, total_risk_exp, benchmark_w)

        lbound = np.maximum(0., benchmark_w - weight_gap)
        ubound = weight_gap + benchmark_w

        factor_values = factor_processing(total_data[alpha_name].values,
                                          pre_process=[winsorize_normal, standardize],
                                          risk_factors=risk_exp,
                                          post_process=[winsorize_normal, standardize])

        # const linear model
        er = const_model.predict(pd.DataFrame(data={alpha_name[0]: factor_values.flatten()}))

        alpha_logger.info('{0} full re-balance'.format(date))
        target_pos, _ = er_portfolio_analysis(er,
                                              total_data.industry_name.values,
                                              None,
                                              constraints,
                                              False,
                                              benchmark_w,
                                              method=method,
                                              lbound=lbound,
                                              ubound=ubound)

        target_pos['code'] = total_data['code'].values

        turn_over, executed_pos = executor.execute(target_pos=target_pos)
        dx_returns = return_groups.get_group(date)

        result = pd.merge(executed_pos, total_data[['code', 'weight']], on=['code'], how='inner')
        result = pd.merge(result, dx_returns, on=['code'])

        leverage = result.weight_x.abs().sum()

        excess_return = np.exp(result.dx.values) - 1. - index_return.loc[date, 'dx']
        raw_weight = result.weight_x.values
        activate_weight = raw_weight - result.weight_y.values
        ret = raw_weight @ excess_return
        risk_adjusted_ic = np.corrcoef(excess_return, activate_weight)[0, 1]
        rets.append(np.log(1. + ret))
        ics.append(risk_adjusted_ic)
        executor.set_current(executed_pos)
        turn_overs.append(turn_over)
        leverags.append(leverage)

        alpha_logger.info('{0} is finished'.format(date))

    ret_df = pd.DataFrame({'returns': rets, 'turn_over': turn_overs, 'IC': ics, 'leverage': leverags}, index=index_dates)

    ret_df.loc[advanceDateByCalendar('china.sse', ref_dates[-1], frequency)] = 0.
    ret_df = ret_df.shift(1)
    ret_df.iloc[0] = 0.
    ret_df['tc_cost'] = ret_df.turn_over * 0.002

    return alpha_name[0], ret_df

def worker_func_positive(factor_name):
    from alphamind.api import SqlEngine
    engine = SqlEngine(data_source)
    return factor_analysis(engine, factor_name, universe, benchmark_code, positive=True)


def worker_func_negative(factor_name):
    from alphamind.api import SqlEngine
    engine = SqlEngine(data_source)
    return factor_analysis(engine, factor_name, universe, benchmark_code, positive=False)

In [23]:
factors = ['EPS', 'ROE']

In [24]:
%%time

res1 = [worker_func_positive(factor) for factor in factors]
res2 = [worker_func_negative(factor) for factor in factors]

factor_df = pd.DataFrame()
ic_df = pd.DataFrame()

for f_name, res in res1:
    factor_df[f_name] = res['returns']
    ic_df[f_name] = res['IC']

for f_name, res in res2:
    factor_df[f_name] = res['returns']
    ic_df[f_name] = res['IC']


2019-02-10 00:15:34,154 - ALPHA_MIND - INFO - 2017-01-03 00:00:00: 800
2019-02-10 00:15:34,160 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,162 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 full re-balance
2019-02-10 00:15:34,196 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 is finished
2019-02-10 00:15:34,206 - ALPHA_MIND - INFO - 2017-01-17 00:00:00: 800
2019-02-10 00:15:34,213 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,217 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 full re-balance
2019-02-10 00:15:34,249 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 is finished
2019-02-10 00:15:34,258 - ALPHA_MIND - INFO - 2017-02-07 00:00:00: 800
2019-02-10 00:15:34,266 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,269 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 full re-balance
2019-02-10 00:15:34,302 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 is finished
2019-02-10 00:15:34,310 - ALPHA_MIND - INFO - 2017-02-21 00:00:00: 799
2019-02-10 00:15:34,320 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,323 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 full re-balance
2019-02-10 00:15:34,353 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 is finished
2019-02-10 00:15:34,361 - ALPHA_MIND - INFO - 2017-03-07 00:00:00: 800
2019-02-10 00:15:34,368 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,370 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 full re-balance
2019-02-10 00:15:34,401 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 is finished
2019-02-10 00:15:34,412 - ALPHA_MIND - INFO - 2017-03-21 00:00:00: 800
2019-02-10 00:15:34,422 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,425 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 full re-balance
2019-02-10 00:15:34,463 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 is finished
2019-02-10 00:15:34,471 - ALPHA_MIND - INFO - 2017-04-06 00:00:00: 800
2019-02-10 00:15:34,476 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,480 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 full re-balance
2019-02-10 00:15:34,511 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 is finished
2019-02-10 00:15:34,521 - ALPHA_MIND - INFO - 2017-04-20 00:00:00: 800
2019-02-10 00:15:34,527 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,531 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 full re-balance
2019-02-10 00:15:34,559 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 is finished
2019-02-10 00:15:34,568 - ALPHA_MIND - INFO - 2017-05-05 00:00:00: 800
2019-02-10 00:15:34,574 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,576 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 full re-balance
2019-02-10 00:15:34,608 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 is finished
2019-02-10 00:15:34,618 - ALPHA_MIND - INFO - 2017-05-19 00:00:00: 800
2019-02-10 00:15:34,624 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,627 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 full re-balance
2019-02-10 00:15:34,659 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 is finished
2019-02-10 00:15:34,669 - ALPHA_MIND - INFO - 2017-06-06 00:00:00: 800
2019-02-10 00:15:34,676 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,678 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 full re-balance
2019-02-10 00:15:34,707 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 is finished
2019-02-10 00:15:34,717 - ALPHA_MIND - INFO - 2017-06-20 00:00:00: 800
2019-02-10 00:15:34,723 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,725 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 full re-balance
2019-02-10 00:15:34,755 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 is finished
2019-02-10 00:15:34,766 - ALPHA_MIND - INFO - 2017-07-04 00:00:00: 800
2019-02-10 00:15:34,773 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,775 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 full re-balance
2019-02-10 00:15:34,806 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 is finished
2019-02-10 00:15:34,817 - ALPHA_MIND - INFO - 2017-07-18 00:00:00: 800
2019-02-10 00:15:34,824 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,828 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 full re-balance
2019-02-10 00:15:34,859 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 is finished
2019-02-10 00:15:34,870 - ALPHA_MIND - INFO - 2017-08-01 00:00:00: 800
2019-02-10 00:15:34,878 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,881 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 full re-balance
2019-02-10 00:15:34,912 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 is finished
2019-02-10 00:15:34,921 - ALPHA_MIND - INFO - 2017-08-15 00:00:00: 800
2019-02-10 00:15:34,928 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,931 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 full re-balance
2019-02-10 00:15:34,959 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 is finished
2019-02-10 00:15:34,969 - ALPHA_MIND - INFO - 2017-08-29 00:00:00: 800
2019-02-10 00:15:34,975 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:34,978 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 full re-balance
2019-02-10 00:15:35,008 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 is finished
2019-02-10 00:15:35,018 - ALPHA_MIND - INFO - 2017-09-12 00:00:00: 800
2019-02-10 00:15:35,025 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,029 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 full re-balance
2019-02-10 00:15:35,058 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 is finished
2019-02-10 00:15:35,068 - ALPHA_MIND - INFO - 2017-09-26 00:00:00: 800
2019-02-10 00:15:35,075 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,079 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 full re-balance
2019-02-10 00:15:35,108 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 is finished
2019-02-10 00:15:35,118 - ALPHA_MIND - INFO - 2017-10-17 00:00:00: 800
2019-02-10 00:15:35,125 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,129 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 full re-balance
2019-02-10 00:15:35,158 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 is finished
2019-02-10 00:15:35,170 - ALPHA_MIND - INFO - 2017-10-31 00:00:00: 800
2019-02-10 00:15:35,177 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,180 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 full re-balance
2019-02-10 00:15:35,209 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 is finished
2019-02-10 00:15:35,218 - ALPHA_MIND - INFO - 2017-11-14 00:00:00: 800
2019-02-10 00:15:35,225 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,228 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 full re-balance
2019-02-10 00:15:35,257 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 is finished
2019-02-10 00:15:35,267 - ALPHA_MIND - INFO - 2017-11-28 00:00:00: 800
2019-02-10 00:15:35,274 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,277 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 full re-balance
2019-02-10 00:15:35,305 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 is finished
2019-02-10 00:15:35,315 - ALPHA_MIND - INFO - 2017-12-12 00:00:00: 800
2019-02-10 00:15:35,323 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,325 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 full re-balance
2019-02-10 00:15:35,351 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 is finished
2019-02-10 00:15:35,360 - ALPHA_MIND - INFO - 2017-12-26 00:00:00: 800
2019-02-10 00:15:35,366 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,370 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 full re-balance
2019-02-10 00:15:35,401 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 is finished
2019-02-10 00:15:35,410 - ALPHA_MIND - INFO - 2018-01-10 00:00:00: 800
2019-02-10 00:15:35,419 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,421 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 full re-balance
2019-02-10 00:15:35,448 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 is finished
2019-02-10 00:15:35,457 - ALPHA_MIND - INFO - 2018-01-24 00:00:00: 800
2019-02-10 00:15:35,465 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,468 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 full re-balance
2019-02-10 00:15:35,497 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 is finished
2019-02-10 00:15:35,505 - ALPHA_MIND - INFO - 2018-02-07 00:00:00: 800
2019-02-10 00:15:35,510 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:35,513 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 full re-balance
2019-02-10 00:15:35,543 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 is finished
2019-02-10 00:15:50,965 - ALPHA_MIND - INFO - 2017-01-03 00:00:00: 800
2019-02-10 00:15:50,973 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:50,977 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 full re-balance
2019-02-10 00:15:51,012 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 is finished
2019-02-10 00:15:51,021 - ALPHA_MIND - INFO - 2017-01-17 00:00:00: 800
2019-02-10 00:15:51,028 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,030 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 full re-balance
2019-02-10 00:15:51,060 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 is finished
2019-02-10 00:15:51,069 - ALPHA_MIND - INFO - 2017-02-07 00:00:00: 800
2019-02-10 00:15:51,076 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,079 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 full re-balance
2019-02-10 00:15:51,107 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 is finished
2019-02-10 00:15:51,115 - ALPHA_MIND - INFO - 2017-02-21 00:00:00: 799
2019-02-10 00:15:51,122 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,124 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 full re-balance
2019-02-10 00:15:51,158 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 is finished
2019-02-10 00:15:51,167 - ALPHA_MIND - INFO - 2017-03-07 00:00:00: 800
2019-02-10 00:15:51,173 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,177 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 full re-balance
2019-02-10 00:15:51,208 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 is finished
2019-02-10 00:15:51,217 - ALPHA_MIND - INFO - 2017-03-21 00:00:00: 800
2019-02-10 00:15:51,222 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,225 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 full re-balance
2019-02-10 00:15:51,255 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 is finished
2019-02-10 00:15:51,264 - ALPHA_MIND - INFO - 2017-04-06 00:00:00: 800
2019-02-10 00:15:51,270 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,273 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 full re-balance
2019-02-10 00:15:51,305 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 is finished
2019-02-10 00:15:51,314 - ALPHA_MIND - INFO - 2017-04-20 00:00:00: 800
2019-02-10 00:15:51,320 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,323 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 full re-balance
2019-02-10 00:15:51,353 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 is finished
2019-02-10 00:15:51,360 - ALPHA_MIND - INFO - 2017-05-05 00:00:00: 800
2019-02-10 00:15:51,366 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,369 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 full re-balance
2019-02-10 00:15:51,397 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 is finished
2019-02-10 00:15:51,406 - ALPHA_MIND - INFO - 2017-05-19 00:00:00: 800
2019-02-10 00:15:51,413 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,416 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 full re-balance
2019-02-10 00:15:51,449 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 is finished
2019-02-10 00:15:51,459 - ALPHA_MIND - INFO - 2017-06-06 00:00:00: 800
2019-02-10 00:15:51,465 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,467 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 full re-balance
2019-02-10 00:15:51,499 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 is finished
2019-02-10 00:15:51,508 - ALPHA_MIND - INFO - 2017-06-20 00:00:00: 800
2019-02-10 00:15:51,514 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,516 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 full re-balance
2019-02-10 00:15:51,545 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 is finished
2019-02-10 00:15:51,554 - ALPHA_MIND - INFO - 2017-07-04 00:00:00: 800
2019-02-10 00:15:51,560 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,564 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 full re-balance
2019-02-10 00:15:51,594 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 is finished
2019-02-10 00:15:51,603 - ALPHA_MIND - INFO - 2017-07-18 00:00:00: 800
2019-02-10 00:15:51,608 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,611 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 full re-balance
2019-02-10 00:15:51,641 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 is finished
2019-02-10 00:15:51,649 - ALPHA_MIND - INFO - 2017-08-01 00:00:00: 800
2019-02-10 00:15:51,656 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,659 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 full re-balance
2019-02-10 00:15:51,689 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 is finished
2019-02-10 00:15:51,699 - ALPHA_MIND - INFO - 2017-08-15 00:00:00: 800
2019-02-10 00:15:51,706 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,708 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 full re-balance
2019-02-10 00:15:51,736 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 is finished
2019-02-10 00:15:51,745 - ALPHA_MIND - INFO - 2017-08-29 00:00:00: 800
2019-02-10 00:15:51,750 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,753 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 full re-balance
2019-02-10 00:15:51,782 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 is finished
2019-02-10 00:15:51,792 - ALPHA_MIND - INFO - 2017-09-12 00:00:00: 800
2019-02-10 00:15:51,798 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,800 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 full re-balance
2019-02-10 00:15:51,831 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 is finished
2019-02-10 00:15:51,841 - ALPHA_MIND - INFO - 2017-09-26 00:00:00: 800
2019-02-10 00:15:51,848 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,850 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 full re-balance
2019-02-10 00:15:51,883 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 is finished
2019-02-10 00:15:51,893 - ALPHA_MIND - INFO - 2017-10-17 00:00:00: 800
2019-02-10 00:15:51,900 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,904 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 full re-balance
2019-02-10 00:15:51,933 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 is finished
2019-02-10 00:15:51,944 - ALPHA_MIND - INFO - 2017-10-31 00:00:00: 800
2019-02-10 00:15:51,949 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:51,951 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 full re-balance
2019-02-10 00:15:51,983 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 is finished
2019-02-10 00:15:51,993 - ALPHA_MIND - INFO - 2017-11-14 00:00:00: 800
2019-02-10 00:15:51,998 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,000 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 full re-balance
2019-02-10 00:15:52,028 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 is finished
2019-02-10 00:15:52,037 - ALPHA_MIND - INFO - 2017-11-28 00:00:00: 800
2019-02-10 00:15:52,044 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,046 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 full re-balance
2019-02-10 00:15:52,072 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 is finished
2019-02-10 00:15:52,082 - ALPHA_MIND - INFO - 2017-12-12 00:00:00: 799
2019-02-10 00:15:52,088 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,091 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 full re-balance
2019-02-10 00:15:52,118 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 is finished
2019-02-10 00:15:52,128 - ALPHA_MIND - INFO - 2017-12-26 00:00:00: 799
2019-02-10 00:15:52,134 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,138 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 full re-balance
2019-02-10 00:15:52,166 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 is finished
2019-02-10 00:15:52,175 - ALPHA_MIND - INFO - 2018-01-10 00:00:00: 799
2019-02-10 00:15:52,181 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,183 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 full re-balance
2019-02-10 00:15:52,213 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 is finished
2019-02-10 00:15:52,223 - ALPHA_MIND - INFO - 2018-01-24 00:00:00: 799
2019-02-10 00:15:52,229 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,231 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 full re-balance
2019-02-10 00:15:52,259 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 is finished
2019-02-10 00:15:52,268 - ALPHA_MIND - INFO - 2018-02-07 00:00:00: 799
2019-02-10 00:15:52,275 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:15:52,277 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 full re-balance
2019-02-10 00:15:52,305 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 is finished
2019-02-10 00:16:02,488 - ALPHA_MIND - INFO - 2017-01-03 00:00:00: 800
2019-02-10 00:16:02,494 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,497 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 full re-balance
2019-02-10 00:16:02,532 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 is finished
2019-02-10 00:16:02,540 - ALPHA_MIND - INFO - 2017-01-17 00:00:00: 800
2019-02-10 00:16:02,548 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,551 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 full re-balance
2019-02-10 00:16:02,588 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 is finished
2019-02-10 00:16:02,597 - ALPHA_MIND - INFO - 2017-02-07 00:00:00: 800
2019-02-10 00:16:02,603 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,606 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 full re-balance
2019-02-10 00:16:02,635 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 is finished
2019-02-10 00:16:02,644 - ALPHA_MIND - INFO - 2017-02-21 00:00:00: 799
2019-02-10 00:16:02,651 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,654 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 full re-balance
2019-02-10 00:16:02,685 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 is finished
2019-02-10 00:16:02,694 - ALPHA_MIND - INFO - 2017-03-07 00:00:00: 800
2019-02-10 00:16:02,701 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,704 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 full re-balance
2019-02-10 00:16:02,735 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 is finished
2019-02-10 00:16:02,744 - ALPHA_MIND - INFO - 2017-03-21 00:00:00: 800
2019-02-10 00:16:02,751 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,753 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 full re-balance
2019-02-10 00:16:02,783 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 is finished
2019-02-10 00:16:02,791 - ALPHA_MIND - INFO - 2017-04-06 00:00:00: 800
2019-02-10 00:16:02,799 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,801 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 full re-balance
2019-02-10 00:16:02,834 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 is finished
2019-02-10 00:16:02,842 - ALPHA_MIND - INFO - 2017-04-20 00:00:00: 800
2019-02-10 00:16:02,849 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,852 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 full re-balance
2019-02-10 00:16:02,883 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 is finished
2019-02-10 00:16:02,892 - ALPHA_MIND - INFO - 2017-05-05 00:00:00: 800
2019-02-10 00:16:02,899 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,902 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 full re-balance
2019-02-10 00:16:02,932 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 is finished
2019-02-10 00:16:02,940 - ALPHA_MIND - INFO - 2017-05-19 00:00:00: 800
2019-02-10 00:16:02,948 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,950 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 full re-balance
2019-02-10 00:16:02,981 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 is finished
2019-02-10 00:16:02,989 - ALPHA_MIND - INFO - 2017-06-06 00:00:00: 800
2019-02-10 00:16:02,996 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:02,999 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 full re-balance
2019-02-10 00:16:03,028 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 is finished
2019-02-10 00:16:03,039 - ALPHA_MIND - INFO - 2017-06-20 00:00:00: 800
2019-02-10 00:16:03,048 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,051 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 full re-balance
2019-02-10 00:16:03,086 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 is finished
2019-02-10 00:16:03,101 - ALPHA_MIND - INFO - 2017-07-04 00:00:00: 800
2019-02-10 00:16:03,108 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,110 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 full re-balance
2019-02-10 00:16:03,153 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 is finished
2019-02-10 00:16:03,161 - ALPHA_MIND - INFO - 2017-07-18 00:00:00: 800
2019-02-10 00:16:03,169 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,171 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 full re-balance
2019-02-10 00:16:03,206 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 is finished
2019-02-10 00:16:03,215 - ALPHA_MIND - INFO - 2017-08-01 00:00:00: 800
2019-02-10 00:16:03,221 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,224 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 full re-balance
2019-02-10 00:16:03,252 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 is finished
2019-02-10 00:16:03,260 - ALPHA_MIND - INFO - 2017-08-15 00:00:00: 800
2019-02-10 00:16:03,267 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,270 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 full re-balance
2019-02-10 00:16:03,296 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 is finished
2019-02-10 00:16:03,306 - ALPHA_MIND - INFO - 2017-08-29 00:00:00: 800
2019-02-10 00:16:03,311 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,315 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 full re-balance
2019-02-10 00:16:03,343 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 is finished
2019-02-10 00:16:03,354 - ALPHA_MIND - INFO - 2017-09-12 00:00:00: 800
2019-02-10 00:16:03,359 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,363 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 full re-balance
2019-02-10 00:16:03,395 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 is finished
2019-02-10 00:16:03,406 - ALPHA_MIND - INFO - 2017-09-26 00:00:00: 800
2019-02-10 00:16:03,412 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,416 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 full re-balance
2019-02-10 00:16:03,443 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 is finished
2019-02-10 00:16:03,454 - ALPHA_MIND - INFO - 2017-10-17 00:00:00: 800
2019-02-10 00:16:03,459 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,462 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 full re-balance
2019-02-10 00:16:03,491 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 is finished
2019-02-10 00:16:03,502 - ALPHA_MIND - INFO - 2017-10-31 00:00:00: 800
2019-02-10 00:16:03,508 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,510 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 full re-balance
2019-02-10 00:16:03,541 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 is finished
2019-02-10 00:16:03,551 - ALPHA_MIND - INFO - 2017-11-14 00:00:00: 800
2019-02-10 00:16:03,557 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,559 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 full re-balance
2019-02-10 00:16:03,586 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 is finished
2019-02-10 00:16:03,596 - ALPHA_MIND - INFO - 2017-11-28 00:00:00: 800
2019-02-10 00:16:03,603 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,605 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 full re-balance
2019-02-10 00:16:03,632 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 is finished
2019-02-10 00:16:03,642 - ALPHA_MIND - INFO - 2017-12-12 00:00:00: 800
2019-02-10 00:16:03,650 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,653 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 full re-balance
2019-02-10 00:16:03,681 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 is finished
2019-02-10 00:16:03,690 - ALPHA_MIND - INFO - 2017-12-26 00:00:00: 800
2019-02-10 00:16:03,696 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,698 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 full re-balance
2019-02-10 00:16:03,726 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 is finished
2019-02-10 00:16:03,736 - ALPHA_MIND - INFO - 2018-01-10 00:00:00: 800
2019-02-10 00:16:03,742 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,745 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 full re-balance
2019-02-10 00:16:03,774 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 is finished
2019-02-10 00:16:03,784 - ALPHA_MIND - INFO - 2018-01-24 00:00:00: 800
2019-02-10 00:16:03,790 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,792 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 full re-balance
2019-02-10 00:16:03,821 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 is finished
2019-02-10 00:16:03,831 - ALPHA_MIND - INFO - 2018-02-07 00:00:00: 800
2019-02-10 00:16:03,837 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:03,839 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 full re-balance
2019-02-10 00:16:03,869 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 is finished
2019-02-10 00:16:12,133 - ALPHA_MIND - INFO - 2017-01-03 00:00:00: 800
2019-02-10 00:16:12,139 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,141 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 full re-balance
2019-02-10 00:16:12,171 - ALPHA_MIND - INFO - 2017-01-03 00:00:00 is finished
2019-02-10 00:16:12,180 - ALPHA_MIND - INFO - 2017-01-17 00:00:00: 800
2019-02-10 00:16:12,186 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,188 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 full re-balance
2019-02-10 00:16:12,220 - ALPHA_MIND - INFO - 2017-01-17 00:00:00 is finished
2019-02-10 00:16:12,231 - ALPHA_MIND - INFO - 2017-02-07 00:00:00: 800
2019-02-10 00:16:12,237 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,240 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 full re-balance
2019-02-10 00:16:12,269 - ALPHA_MIND - INFO - 2017-02-07 00:00:00 is finished
2019-02-10 00:16:12,280 - ALPHA_MIND - INFO - 2017-02-21 00:00:00: 799
2019-02-10 00:16:12,287 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,289 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 full re-balance
2019-02-10 00:16:12,324 - ALPHA_MIND - INFO - 2017-02-21 00:00:00 is finished
2019-02-10 00:16:12,333 - ALPHA_MIND - INFO - 2017-03-07 00:00:00: 800
2019-02-10 00:16:12,341 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,344 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 full re-balance
2019-02-10 00:16:12,374 - ALPHA_MIND - INFO - 2017-03-07 00:00:00 is finished
2019-02-10 00:16:12,384 - ALPHA_MIND - INFO - 2017-03-21 00:00:00: 800
2019-02-10 00:16:12,391 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,394 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 full re-balance
2019-02-10 00:16:12,423 - ALPHA_MIND - INFO - 2017-03-21 00:00:00 is finished
2019-02-10 00:16:12,434 - ALPHA_MIND - INFO - 2017-04-06 00:00:00: 800
2019-02-10 00:16:12,441 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,444 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 full re-balance
2019-02-10 00:16:12,472 - ALPHA_MIND - INFO - 2017-04-06 00:00:00 is finished
2019-02-10 00:16:12,483 - ALPHA_MIND - INFO - 2017-04-20 00:00:00: 800
2019-02-10 00:16:12,488 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,492 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 full re-balance
2019-02-10 00:16:12,522 - ALPHA_MIND - INFO - 2017-04-20 00:00:00 is finished
2019-02-10 00:16:12,531 - ALPHA_MIND - INFO - 2017-05-05 00:00:00: 800
2019-02-10 00:16:12,538 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,541 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 full re-balance
2019-02-10 00:16:12,569 - ALPHA_MIND - INFO - 2017-05-05 00:00:00 is finished
2019-02-10 00:16:12,579 - ALPHA_MIND - INFO - 2017-05-19 00:00:00: 800
2019-02-10 00:16:12,586 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,588 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 full re-balance
2019-02-10 00:16:12,615 - ALPHA_MIND - INFO - 2017-05-19 00:00:00 is finished
2019-02-10 00:16:12,625 - ALPHA_MIND - INFO - 2017-06-06 00:00:00: 800
2019-02-10 00:16:12,631 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,634 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 full re-balance
2019-02-10 00:16:12,663 - ALPHA_MIND - INFO - 2017-06-06 00:00:00 is finished
2019-02-10 00:16:12,672 - ALPHA_MIND - INFO - 2017-06-20 00:00:00: 800
2019-02-10 00:16:12,680 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,682 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 full re-balance
2019-02-10 00:16:12,713 - ALPHA_MIND - INFO - 2017-06-20 00:00:00 is finished
2019-02-10 00:16:12,722 - ALPHA_MIND - INFO - 2017-07-04 00:00:00: 800
2019-02-10 00:16:12,728 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,731 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 full re-balance
2019-02-10 00:16:12,761 - ALPHA_MIND - INFO - 2017-07-04 00:00:00 is finished
2019-02-10 00:16:12,771 - ALPHA_MIND - INFO - 2017-07-18 00:00:00: 800
2019-02-10 00:16:12,778 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,780 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 full re-balance
2019-02-10 00:16:12,809 - ALPHA_MIND - INFO - 2017-07-18 00:00:00 is finished
2019-02-10 00:16:12,818 - ALPHA_MIND - INFO - 2017-08-01 00:00:00: 800
2019-02-10 00:16:12,823 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,826 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 full re-balance
2019-02-10 00:16:12,855 - ALPHA_MIND - INFO - 2017-08-01 00:00:00 is finished
2019-02-10 00:16:12,865 - ALPHA_MIND - INFO - 2017-08-15 00:00:00: 800
2019-02-10 00:16:12,870 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,872 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 full re-balance
2019-02-10 00:16:12,900 - ALPHA_MIND - INFO - 2017-08-15 00:00:00 is finished
2019-02-10 00:16:12,909 - ALPHA_MIND - INFO - 2017-08-29 00:00:00: 800
2019-02-10 00:16:12,915 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,917 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 full re-balance
2019-02-10 00:16:12,945 - ALPHA_MIND - INFO - 2017-08-29 00:00:00 is finished
2019-02-10 00:16:12,953 - ALPHA_MIND - INFO - 2017-09-12 00:00:00: 800
2019-02-10 00:16:12,960 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:12,963 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 full re-balance
2019-02-10 00:16:12,989 - ALPHA_MIND - INFO - 2017-09-12 00:00:00 is finished
2019-02-10 00:16:12,997 - ALPHA_MIND - INFO - 2017-09-26 00:00:00: 800
2019-02-10 00:16:13,003 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,005 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 full re-balance
2019-02-10 00:16:13,035 - ALPHA_MIND - INFO - 2017-09-26 00:00:00 is finished
2019-02-10 00:16:13,045 - ALPHA_MIND - INFO - 2017-10-17 00:00:00: 800
2019-02-10 00:16:13,051 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,053 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 full re-balance
2019-02-10 00:16:13,080 - ALPHA_MIND - INFO - 2017-10-17 00:00:00 is finished
2019-02-10 00:16:13,088 - ALPHA_MIND - INFO - 2017-10-31 00:00:00: 800
2019-02-10 00:16:13,094 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,097 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 full re-balance
2019-02-10 00:16:13,127 - ALPHA_MIND - INFO - 2017-10-31 00:00:00 is finished
2019-02-10 00:16:13,136 - ALPHA_MIND - INFO - 2017-11-14 00:00:00: 800
2019-02-10 00:16:13,141 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,143 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 full re-balance
2019-02-10 00:16:13,171 - ALPHA_MIND - INFO - 2017-11-14 00:00:00 is finished
2019-02-10 00:16:13,181 - ALPHA_MIND - INFO - 2017-11-28 00:00:00: 800
2019-02-10 00:16:13,186 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,188 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 full re-balance
2019-02-10 00:16:13,216 - ALPHA_MIND - INFO - 2017-11-28 00:00:00 is finished
2019-02-10 00:16:13,226 - ALPHA_MIND - INFO - 2017-12-12 00:00:00: 799
2019-02-10 00:16:13,232 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,234 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 full re-balance
2019-02-10 00:16:13,260 - ALPHA_MIND - INFO - 2017-12-12 00:00:00 is finished
2019-02-10 00:16:13,269 - ALPHA_MIND - INFO - 2017-12-26 00:00:00: 799
2019-02-10 00:16:13,275 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,276 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 full re-balance
2019-02-10 00:16:13,307 - ALPHA_MIND - INFO - 2017-12-26 00:00:00 is finished
2019-02-10 00:16:13,315 - ALPHA_MIND - INFO - 2018-01-10 00:00:00: 799
2019-02-10 00:16:13,322 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,325 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 full re-balance
2019-02-10 00:16:13,353 - ALPHA_MIND - INFO - 2018-01-10 00:00:00 is finished
2019-02-10 00:16:13,362 - ALPHA_MIND - INFO - 2018-01-24 00:00:00: 799
2019-02-10 00:16:13,369 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,370 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 full re-balance
2019-02-10 00:16:13,409 - ALPHA_MIND - INFO - 2018-01-24 00:00:00 is finished
2019-02-10 00:16:13,417 - ALPHA_MIND - INFO - 2018-02-07 00:00:00: 799
2019-02-10 00:16:13,424 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize
2019-02-10 00:16:13,427 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 full re-balance
2019-02-10 00:16:13,453 - ALPHA_MIND - INFO - 2018-02-07 00:00:00 is finished
Wall time: 47.5 s

In [25]:
factor_res = factor_df.agg(['mean', 'std']).T
factor_res['t.'] = factor_res['mean'] / factor_res['std'] * np.sqrt(len(factor_df))

ic_res = ic_df.agg(['mean', 'std']).T
ic_res['t.'] = ic_res['mean'] / ic_res['std'] * np.sqrt(len(ic_df))

In [26]:
with pd.ExcelWriter(f'{universe_name}_{benchmark_code}.xlsx', engine='xlsxwriter') as writer:
    factor_df.to_excel(writer, sheet_name='ret')
    ic_df.to_excel(writer, sheet_name='ic')
    factor_res.to_excel(writer, sheet_name='ret_stat')
    ic_res.to_excel(writer, sheet_name='ic_stat')

In [ ]: