def cal_alphas(self, expr_ds):
        # 计算信号
        for i in [
                'OpenPrice', 'ClosePrice', 'HighestPrice', 'LowestPrice',
                'Volume', 'VWAP', 'Position', 'TurnOver'
        ]:
            expr_tmp = expr_ds.values.expr.replace(i, 'self.eod.%s' % i)
        alphas = eval(expr_tmp)
        resample_wgts = pd.DataFrame(alphas[:-1] * 1.,
                                     index=self.eod.dates[1:],
                                     columns=self.eod.ticker_names)
        bt = BackTest(resample_wgts,
                      returns=self.resample_returns,
                      cycle='day',
                      IS_OOS_ratio=None,
                      stat_info=False,
                      plot=False,
                      quintiles=3,
                      turnover=1,
                      cost=0.,
                      ticker_names=None,
                      output_dir=None,
                      test_mode=False,
                      signal_name=None)
        bt.stat_quintiles()
        bt.stat_quintiles_pnl()
        bt.stat_alpha_pnl()
        bt.stat_alpha_sharpe()

        # 保存信号
        print expr_ds.values.id, expr_ds.values.expr, 'sharpe:', bt.alpha_sharpe