Notebook

Enter your backtest ID.

Note: the backtest needs to be longer than 2 years in order to receive a score.

In [12]:
# Replace the string below with your backtest ID.
bt = get_backtest('5aa42ca0845ba64227ddb0b4')
100% Time: 0:00:46|###########################################################|
In [13]:
import empyrical as ep
import pyfolio as pf
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from quantopian.research import returns
In [14]:
from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.filters import QTradableStocksUS

def get_tradable_universe(start, end):
    """
    Gets the tradable universe in a format that can be compared to the positions
    of a backtest.
    """
    pipe = Pipeline(
        columns={'qtu':QTradableStocksUS()}
    )
    df = run_pipeline(pipe, start, end)
    df = df.unstack()
    df.columns = df.columns.droplevel()
    df = df.astype(float).replace(0, np.nan)
    return df
In [15]:
def volatility_adjusted_daily_return(trailing_algorithm_returns):
    """
    Normalize the last daily return in `trailing_algorithm_returns` by the annualized
    volatility of `trailing_algorithm_returns`.
    """
    
    todays_return = trailing_algorithm_returns[-1]
    # Volatility is floored at 2%.
    volatility = max(ep.annual_volatility(trailing_algorithm_returns), 0.02)
    score = (todays_return / volatility)
    
    return score
In [16]:
def compute_score(algorithm_returns):
    """
    Compute the score of a backtest from its algorithm_returns.
    """
    
    result = []
    
    cumulative_score = 0
    count = 0
    
    daily_scores = roll(
        algorithm_returns,
        function=volatility_adjusted_daily_return,
        window=63
    )
    
    cumulative_score = np.cumsum(daily_scores[441:])
    latest_score = cumulative_score[-1]
    
    print ''
    print 'Score computed between %s and %s.' % (cumulative_score.index[0].date(), daily_scores.index[-1].date())
    
    plt.plot(cumulative_score)
    plt.title('Out-of-Sample Score Over Time')
    print 'Cumulative Score: %f' % latest_score
    
    return cumulative_score
In [17]:
# This code is copied from the empyrical repository.
# Source: https://github.com/quantopian/empyrical/blob/master/empyrical/utils.py#L49
# Includes a fix to the bug reported here: https://github.com/quantopian/empyrical/issues/79
def roll(*args, **kwargs):
    """
    Calculates a given statistic across a rolling time period.
    Parameters
    ----------
    returns : pd.Series or np.ndarray
        Daily returns of the strategy, noncumulative.
        - See full explanation in :func:`~empyrical.stats.cum_returns`.
    factor_returns (optional): float / series
        Benchmark return to compare returns against.
    function:
        the function to run for each rolling window.
    window (keyword): int
        the number of periods included in each calculation.
    (other keywords): other keywords that are required to be passed to the
        function in the 'function' argument may also be passed in.
    Returns
    -------
    np.ndarray, pd.Series
        depends on input type
        ndarray(s) ==> ndarray
        Series(s) ==> pd.Series
        A Series or ndarray of the results of the stat across the rolling
        window.
    """
    func = kwargs.pop('function')
    window = kwargs.pop('window')
    if len(args) > 2:
        raise ValueError("Cannot pass more than 2 return sets")

    if len(args) == 2:
        if not isinstance(args[0], type(args[1])):
            raise ValueError("The two returns arguments are not the same.")

    if isinstance(args[0], np.ndarray):
        return _roll_numpy(func, window, *args, **kwargs)
    return _roll_pandas(func, window, *args, **kwargs)

def _roll_ndarray(func, window, *args, **kwargs):
    data = []
    for i in range(window, len(args[0]) + 1):
        rets = [s[i-window:i] for s in args]
        data.append(func(*rets, **kwargs))
    return np.array(data)


def _roll_pandas(func, window, *args, **kwargs):
    data = {}
    for i in range(window, len(args[0]) + 1):
        rets = [s.iloc[i-window:i] for s in args]
        data[args[0].index[i - 1]] = func(*rets, **kwargs)
    return pd.Series(data)
In [18]:
SECTORS = [
    'basic_materials', 'consumer_cyclical', 'financial_services',
    'real_estate', 'consumer_defensive', 'health_care', 'utilities',
    'communication_services', 'energy', 'industrials', 'technology'
]

STYLES = [
    'momentum', 'size', 'value', 'short_term_reversal', 'volatility'
]

POSITION_CONCENTRATION_98TH_MAX = 0.05
POSITION_CONCENTRATION_100TH_MAX = 0.1
LEVERAGE_0TH_MIN = 0.7
LEVERAGE_2ND_MIN = 0.8
LEVERAGE_98TH_MAX = 1.1
LEVERAGE_100TH_MAX = 1.2
DAILY_TURNOVER_0TH_MIN = 0.03
DAILY_TURNOVER_2ND_MIN = 0.05
DAILY_TURNOVER_98TH_MAX = 0.65
DAILY_TURNOVER_100TH_MAX = 0.8
NET_EXPOSURE_LIMIT_98TH_MAX = 0.1
NET_EXPOSURE_LIMIT_100TH_MAX = 0.2
BETA_TO_SPY_98TH_MAX = 0.3
BETA_TO_SPY_100TH_MAX = 0.4
SECTOR_EXPOSURE_98TH_MAX = 0.2
SECTOR_EXPOSURE_100TH_MAX = 0.25
STYLE_EXPOSURE_98TH_MAX = 0.4
STYLE_EXPOSURE_100TH_MAX = 0.5
TRADABLE_UNIVERSE_0TH_MIN = 0.9
TRADABLE_UNIVERSE_2ND_MIN = 0.95


def check_constraints(positions, transactions, algorithm_returns, risk_exposures):
    
    sector_constraints = True
    style_constraints = True
    constraints_met = 0
    num_constraints = 9
    
    # Position Concentration Constraint
    print 'Checking positions concentration limit...'
    try:
        percent_allocations = pf.pos.get_percent_alloc(positions[5:])
        daily_absolute_percent_allocations = percent_allocations.abs().drop('cash', axis=1)
        daily_max_absolute_position = daily_absolute_percent_allocations.max(axis=1)
        
        position_concentration_98 = daily_max_absolute_position.quantile(0.98)
        position_concentration_100 = daily_max_absolute_position.max()
        
    except IndexError:
        position_concentration_98 = -1
        position_concentration_100 = -1
        
    if (position_concentration_98 > POSITION_CONCENTRATION_98TH_MAX):
        print 'FAIL: 98th percentile position concentration of %.2f > %.1f.' % (
        position_concentration_98*100,
        POSITION_CONCENTRATION_98TH_MAX*100
    )
    elif (position_concentration_100 > POSITION_CONCENTRATION_100TH_MAX):
        print 'FAIL: 100th percentile position concentration of %.2f > %.1f.' % (
        position_concentration_100*100,
        POSITION_CONCENTRATION_100TH_MAX*100
    )
    else:
        print 'PASS: Max position concentration of %.2f%% <= %.1f%%.' % (
            position_concentration_98*100,
            POSITION_CONCENTRATION_98TH_MAX*100
        )
        constraints_met += 1

        
    # Leverage Constraint
    print ''
    print 'Checking leverage limits...'
    leverage = pf.timeseries.gross_lev(positions[5:])
    leverage_0 = leverage.min()
    leverage_2 = leverage.quantile(0.02)
    leverage_98 = leverage.quantile(0.98)
    leverage_100 = leverage.max()
    leverage_passed = True
    
    if (leverage_0 < LEVERAGE_0TH_MIN):
        print 'FAIL: Minimum leverage of %.2fx is below %.1fx' % (
            leverage_0,
            LEVERAGE_0TH_MIN
        )
        leverage_passed = False
    if (leverage_2 < LEVERAGE_2ND_MIN):
        print 'FAIL: 2nd percentile leverage of %.2fx is below %.1fx' % (
            leverage_2,
            LEVERAGE_2ND_MIN
        )
        leverage_passed = False
    if (leverage_98 > LEVERAGE_98TH_MAX):
        print 'FAIL: 98th percentile leverage of %.2fx is above %.1fx' % (
            leverage_98,
            LEVERAGE_98TH_MAX
        )
        leverage_passed = False
    if (leverage_100 > LEVERAGE_100TH_MAX):
        print 'FAIL: Maximum leverage of %.2fx is above %.1fx' % (
            leverage_0,
            LEVERAGE_0TH_MAX
        )
        leverage_passed = False
    if leverage_passed:
        print 'PASS: Leverage range of %.2fx-%.2fx is between %.1fx-%.1fx.' % (
            leverage_2,
            leverage_98,
            LEVERAGE_2ND_MIN,
            LEVERAGE_98TH_MAX
        )
        constraints_met += 1
      
    # Turnover Constraint
    print ''
    print 'Checking turnover limits...'
    turnover = pf.txn.get_turnover(positions, transactions, denominator='portfolio_value')
    # Compute mean rolling 63 trading day turnover.
    rolling_mean_turnover = roll(
        turnover, 
        function=pd.Series.mean,
        window=63)[62:]
    rolling_mean_turnover_0 = rolling_mean_turnover.min()
    rolling_mean_turnover_2 = rolling_mean_turnover.quantile(0.02)
    rolling_mean_turnover_98 = rolling_mean_turnover.quantile(0.98)
    rolling_mean_turnover_100 = rolling_mean_turnover.max()  
    rolling_mean_turnover_passed = True
    
    if (rolling_mean_turnover_0 < DAILY_TURNOVER_0TH_MIN):
        print 'FAIL: Minimum turnover of %.2f%% is below %.1f%%.' % (
            rolling_mean_turnover_0*100,
            DAILY_TURNOVER_0TH_MIN*100
        )
        rolling_mean_turnover_passed = False
    if (rolling_mean_turnover_2 < DAILY_TURNOVER_2ND_MIN):
        print 'FAIL: 2nd percentile turnover of %.2f%% is below %.1fx' % (
            rolling_mean_turnover_2*100,
            DAILY_TURNOVER_2ND_MIN*100
        )
        rolling_mean_turnover_passed = False
    if (rolling_mean_turnover_98 > DAILY_TURNOVER_98TH_MAX):
        print 'FAIL: 98th percentile turnover of %.2f%% is above %.1fx' % (
            rolling_mean_turnover_98*100,
            DAILY_TURNOVER_98TH_MAX*100
        )
        rolling_mean_turnover_passed = False
    if (rolling_mean_turnover_100 > DAILY_TURNOVER_100TH_MAX):
        print 'FAIL: Maximum turnover of %.2f%% is above %.1fx' % (
            rolling_mean_turnover_100*100,
            DAILY_TURNOVER_100TH_MAX*100
        )
        rolling_mean_turnover_passed = False
    if rolling_mean_turnover_passed:
        print 'PASS: Mean turnover range of %.2f%%-%.2f%% is between %.1f%%-%.1f%%.' % (
            rolling_mean_turnover_2*100,
            rolling_mean_turnover_98*100,
            DAILY_TURNOVER_2ND_MIN*100,
            DAILY_TURNOVER_98TH_MAX*100
        )
        constraints_met += 1

        
    # Net Exposure Constraint
    print ''
    print 'Checking net exposure limit...'
    net_exposure = pf.pos.get_long_short_pos(positions[5:])['net exposure'].abs()
    net_exposure_98 = net_exposure.quantile(0.98)
    net_exposure_100 = net_exposure.max()
    
    if (net_exposure_98 > NET_EXPOSURE_LIMIT_98TH_MAX):
        print 'FAIL: 98th percentile net exposure (absolute value) of %.2f > %.1f.' % (
        net_exposure_98*100,
        NET_EXPOSURE_LIMIT_98TH_MAX*100
    )
    elif (net_exposure_100 > NET_EXPOSURE_LIMIT_100TH_MAX):
        print 'FAIL: 100th percentile net exposure (absolute value) of %.2f > %.1f.' % (
        net_exposure_100*100,
        NET_EXPOSURE_LIMIT_100TH_MAX*100
    )
    else:
        print 'PASS: Net exposure (absolute value) of %.2f%% <= %.1f%%.' % (
            net_exposure_98*100,
            NET_EXPOSURE_LIMIT_98TH_MAX*100
        )
        constraints_met += 1
    
        
    # Beta Constraint
    print ''
    print 'Checking beta-to-SPY limit...'
    spy_returns = returns(
        symbols('SPY'),
        algorithm_returns.index[0],
        algorithm_returns.index[-1],
    )
    beta = roll(
        algorithm_returns,
        spy_returns,
        function=ep.beta,
        window=126
    ).reindex_like(algorithm_returns).fillna(0).abs()
    beta_98 = beta.quantile(0.98)
    beta_100 = beta.max()
    if (beta_98 > BETA_TO_SPY_98TH_MAX):
            print 'FAIL: 98th percentile absolute beta of %.3f > %.1f.' % (
            beta_98,
            BETA_TO_SPY_98TH_MAX
        )
    elif (beta_100 > BETA_TO_SPY_100TH_MAX):
        print 'FAIL: 100th percentile absolute beta of %.3f > %.1f.' % (
            beta_100,
            BETA_TO_SPY_100TH_MAX
        )
    else:
        print 'PASS: Max absolute beta of %.3f <= %.1f.' % (
            beta_98,
            BETA_TO_SPY_98TH_MAX
        )
        constraints_met += 1
        
    # Risk Exposures
    rolling_mean_risk_exposures = risk_exposures.rolling(63, axis=0).mean()[62:].fillna(0)
    
    # Sector Exposures
    print ''
    print 'Checking sector exposure limits...'
    for sector in SECTORS:
        absolute_mean_sector_exposure = rolling_mean_risk_exposures[sector].abs()
        abs_mean_sector_exposure_98 = absolute_mean_sector_exposure.quantile(0.98)
        abs_mean_sector_exposure_100 = absolute_mean_sector_exposure.max()
        if (abs_mean_sector_exposure_98 > SECTOR_EXPOSURE_98TH_MAX):
            print 'FAIL: 98th percentile %s exposure of %.3f (absolute value) is greater than %.2f.' % (
                sector,
                abs_mean_sector_exposure_98,
                SECTOR_EXPOSURE_98TH_MAX
            )
            sector_constraints = False
        elif (abs_mean_sector_exposure_100 > SECTOR_EXPOSURE_100TH_MAX):
            max_sector_exposure_day = absolute_mean_sector_exposure.idxmax()
            print 'FAIL: Max %s exposure of %.3f (absolute value) on %s is greater than %.2f.' % (
                sector,
                abs_mean_sector_exposure_100,
                max_sector_exposure_day,
                SECTOR_EXPOSURE_100TH_MAX
            )
            sector_constraints = False
    if sector_constraints:
        print 'PASS: All sector exposures were between +/-%.2f.' % SECTOR_EXPOSURE_98TH_MAX
        constraints_met += 1
        
    # Style Exposures
    print ''
    print 'Checking style exposure limits...'
    for style in STYLES:
        absolute_mean_style_exposure = rolling_mean_risk_exposures[style].abs()
        abs_mean_style_exposure_98 = absolute_mean_style_exposure.quantile(0.98)
        abs_mean_style_exposure_100 = absolute_mean_style_exposure.max()
        if (abs_mean_style_exposure_98 > STYLE_EXPOSURE_98TH_MAX):
            print 'FAIL: 98th percentile %s exposure of %.3f (absolute value) is greater than %.2f.' % (
                style, 
                abs_mean_style_exposure_98, 
                STYLE_EXPOSURE_98TH_MAX
            )
            style_constraints = False
        elif (abs_mean_style_exposure_100 > STYLE_EXPOSURE_100TH_MAX):
            max_style_exposure_day = absolute_mean_style_exposure.idxmax()
            print 'FAIL: Max %s exposure of %.3f (absolute value) on %s is greater than %.2f.' % (
                style, 
                abs_mean_style_exposure_100, 
                max_style_exposure_day.date(),
                STYLE_EXPOSURE_100TH_MAX
            )
            style_constraints = False
    if style_constraints:
        print 'PASS: All style exposures were between +/-%.2f.' % STYLE_EXPOSURE_98TH_MAX
        constraints_met += 1
    
    
    # Tradable Universe
    print ''
    print 'Checking investment in tradable universe...'
    positions_wo_cash = positions.drop('cash', axis=1)
    positions_wo_cash = positions_wo_cash.abs()
    total_investment = positions_wo_cash.fillna(0).sum(axis=1)
    daily_qtu_investment = universe.multiply(positions_wo_cash).fillna(0).sum(axis=1)
    percent_in_qtu = daily_qtu_investment / total_investment
    percent_in_qtu = percent_in_qtu[5:].fillna(0)
    
    percent_in_qtu_0 = percent_in_qtu.min()
    percent_in_qtu_2 = percent_in_qtu.quantile(0.02)
        
    if percent_in_qtu_0 < TRADABLE_UNIVERSE_0TH_MIN:
        min_percent_in_qtu_date = percent_in_qtu.argmin()
        print 'FAIL: Minimum investment in QTradableStocksUS of %.2f%% on %s is < %.1f%%.' % (
            percent_in_qtu_0*100, 
            min_percent_in_qtu_date.date(),
            TRADABLE_UNIVERSE_0TH_MIN*100
        )
    elif percent_in_qtu_2 < TRADABLE_UNIVERSE_2ND_MIN:
        print 'FAIL: Investment in QTradableStocksUS (2nd percentile) of %.2f%% is < %.1f%%.' % (
            percent_in_qtu_2*100, 
            TRADABLE_UNIVERSE_2ND_MIN*100
        )
    else:
        print 'PASS: Investment in QTradableStocksUS is >= %.1f%%.' % (
            TRADABLE_UNIVERSE_2ND_MIN*100
        )
        constraints_met += 1
        
        
    # Total algorithm_returns Constraint
    print ''
    print 'Checking that algorithm has positive algorithm_returns...'
    cumulative_algorithm_returns = ep.cum_returns_final(algorithm_returns)
    if (cumulative_algorithm_returns > 0):
        print 'PASS: Cumulative algorithm_returns of %.2f is positive.' % (
            cumulative_algorithm_returns
        )
        constraints_met += 1
    else:
        print 'FAIL: Cumulative algorithm_returns of %.2f is negative.' % (
            cumulative_algorithm_returns
        )
    
    print ''
    print 'Results:'
    if constraints_met == num_constraints:
        print 'All constraints met!'
    else:
        print '%d/%d tests passed.' % (constraints_met, num_constraints)
In [19]:
def evaluate_backtest(positions, transactions, algorithm_returns, risk_exposures):
    if len(positions.index) > 504:
        check_constraints(positions, transactions, algorithm_returns, risk_exposures)
        score = compute_score(algorithm_returns[start:end])
    else:
        print 'ERROR: Backtest must be longer than 2 years to be evaluated.'

Transform some of the data.

In [20]:
positions = bt.pyfolio_positions
transactions = bt.pyfolio_transactions
algorithm_returns = bt.daily_performance.returns
factor_exposures = bt.factor_exposures

start = positions.index[0]
end = positions.index[-1]
universe = get_tradable_universe(start, end)
universe.columns = universe.columns.map(lambda x: '%s-%s' % (x.symbol, x.sid))

Run this to evaluate your algorithm. Note that the new contest will require all filters to pass before a submission is eligible to participate.

In [ ]:
evaluate_backtest(positions, transactions, algorithm_returns, factor_exposures)
Checking positions concentration limit...
PASS: Max position concentration of 4.97% <= 5.0%.

Checking leverage limits...
PASS: Leverage range of 0.95x-1.04x is between 0.8x-1.1x.

Checking turnover limits...
PASS: Mean turnover range of 13.11%-14.74% is between 5.0%-65.0%.

Checking net exposure limit...
PASS: Net exposure (absolute value) of 3.31% <= 10.0%.

Checking beta-to-SPY limit...
FAIL: 98th percentile absolute beta of 0.306 > 0.3.

Checking sector exposure limits...
PASS: All sector exposures were between +/-0.20.

Checking style exposure limits...
PASS: All style exposures were between +/-0.40.

Checking investment in tradable universe...
PASS: Investment in QTradableStocksUS is >= 95.0%.

Checking that algorithm has positive algorithm_returns...
PASS: Cumulative algorithm_returns of 0.91 is positive.

Results:
8/9 tests passed.

Score computed between 2009-12-30 and 2018-03-08.
Cumulative Score: 3.325635
In [ ]:
bt.create_full_tear_sheet()
Start date2008-01-04
End date2018-03-08
Total months122
Backtest
Annual return 6.5%
Cumulative returns 90.6%
Annual volatility 12.0%
Sharpe ratio 0.59
Calmar ratio 0.19
Stability 0.25
Max drawdown -34.8%
Omega ratio 1.11
Sortino ratio 0.90
Skew 0.43
Kurtosis 4.39
Tail ratio 1.18
Daily value at risk -1.5%
Gross leverage 1.00
Daily turnover 14.4%
Alpha 0.07
Beta 0.03
Worst drawdown periods Net drawdown in % Peak date Valley date Recovery date Duration
0 34.81 2012-01-24 2015-08-19 2016-07-07 1163
1 14.46 2008-01-29 2008-07-01 2008-09-19 169
2 13.98 2009-01-07 2009-03-05 2009-04-03 63
3 11.11 2010-10-19 2011-09-09 2011-11-23 287
4 7.90 2008-10-02 2008-10-10 2009-01-05 68
/usr/local/lib/python2.7/dist-packages/numpy/lib/function_base.py:3834: RuntimeWarning: Invalid value encountered in percentile
  RuntimeWarning)
Stress Events mean min max
Lehmann 0.43% -1.83% 3.12%
US downgrade/European Debt Crisis 0.07% -2.00% 1.28%
Fukushima -0.28% -0.95% 0.41%
EZB IR Event 0.34% -0.64% 3.59%
Mar08 -0.26% -2.10% 1.56%
Sept08 0.54% -1.83% 3.12%
2009Q1 -0.15% -3.59% 4.98%
2009Q2 0.24% -4.03% 3.51%
Flash Crash 0.17% -0.78% 0.97%
Apr14 -0.20% -1.56% 1.43%
Oct14 0.18% -1.26% 2.13%
Fall2015 0.17% -0.97% 1.90%
GFC Crash 0.04% -4.03% 5.25%
Recovery 0.02% -3.11% 3.59%
New Normal 0.03% -3.15% 4.17%
Top 10 long positions of all time max
DFT-34886 6.22%
ABG-24761 6.09%
CVI-22766 5.66%
PPO-34117 5.48%
GMO-29798 5.43%
INVA-26676 5.39%
LULU-34395 5.32%
CZZ-34560 5.30%
CSTM-44780 5.29%
BAC-700 5.19%
Top 10 short positions of all time max
BB-19831 -6.01%
LVLT-18587 -5.55%
CWEI-8941 -5.50%
DECK-9909 -5.33%
MWA-32159 -5.26%
GRA-3328 -5.24%
ASIA-21237 -5.24%
FSLR-32902 -5.12%
QCOR-20914 -5.12%
AMN-377 -5.09%
Top 10 positions of all time max
DFT-34886 6.22%
ABG-24761 6.09%
BB-19831 6.01%
CVI-22766 5.66%
LVLT-18587 5.55%
CWEI-8941 5.50%
PPO-34117 5.48%
GMO-29798 5.43%
INVA-26676 5.39%
DECK-9909 5.33%
All positions ever held max
DFT-34886 6.22%
ABG-24761 6.09%
BB-19831 6.01%
CVI-22766 5.66%
LVLT-18587 5.55%
CWEI-8941 5.50%
PPO-34117 5.48%
GMO-29798 5.43%
INVA-26676 5.39%
DECK-9909 5.33%
LULU-34395 5.32%
CZZ-34560 5.30%
CSTM-44780 5.29%
MWA-32159 5.26%
GRA-3328 5.24%
ASIA-21237 5.24%
BAC-700 5.19%
CCO-27777 5.17%
WFC-8151 5.16%
HRI-32887 5.13%
FSLR-32902 5.12%
QCOR-20914 5.12%
STRZ_A-32045 5.10%
ACOM-38912 5.09%
AMN-377 5.09%
ALGT-33016 5.08%
LTRP_A-47578 5.08%
EXAM-40320 5.08%
ICE-27809 5.07%
ES-35064 5.07%
SD-35006 5.06%
FGEN-48088 5.06%
GHL-26265 5.05%
STI-7152 5.05%
SINA-21448 5.05%
SNAP-50683 5.03%
TOMO-33830 5.02%
CATY-1270 5.01%
FMBI-2891 5.01%
POT-6109 5.01%
BH-22472 5.00%
REXX-34379 5.00%
SGYP-32331 5.00%
ULTA-34953 4.99%
BDN-9096 4.99%
IAG-24491 4.99%
SCOR-34111 4.99%
N-35330 4.98%
ZU-45866 4.98%
CPG-46206 4.98%
NFLX-23709 4.98%
LYB-39546 4.98%
IQNT-34997 4.97%
AUQ-25510 4.97%
USBE-33059 4.97%
CF-27558 4.96%
ZEN-46918 4.96%
RLYP-45851 4.95%
SAND-43329 4.95%
BOOT-47980 4.95%
OUBS-7696 4.95%
AMD-351 4.94%
ANAC-40442 4.94%
CRR-14700 4.94%
AMRS-40165 4.94%
LNCO-43513 4.94%
SOHU-21813 4.93%
SQNM-21203 4.93%
PAH-45531 4.93%
OPTR-33327 4.92%
EPE-46191 4.92%
DFS-34011 4.92%
VCRA-42726 4.92%
CME-24475 4.92%
TERP-47334 4.92%
QTM-20479 4.92%
TMUS-33698 4.92%
TMST-47162 4.92%
WBS-8119 4.91%
MNKD-26524 4.91%
BPT-1068 4.91%
LOGM-38560 4.91%
ARRY-22192 4.91%
SOA-35174 4.91%
GPRO-47208 4.91%
P-41579 4.91%
BCEI-42272 4.91%
MBLY-47430 4.90%
DRYS-26994 4.90%
MEE-22324 4.90%
ACOR-28077 4.90%
SWC-12362 4.90%
CIE-39073 4.90%
RBCN-35100 4.90%
XCO-28083 4.90%
CSIQ-32856 4.90%
GS-20088 4.89%
NEM-5261 4.89%
YONG-34360 4.89%
CQB-1833 4.88%
AMBA-43495 4.88%
LNKD-41451 4.88%
HES-216 4.88%
SSRM-15591 4.88%
AG-40607 4.88%
MLNX-33316 4.87%
REGN-6413 4.87%
USNA-15408 4.87%
KRA-39079 4.87%
NVR-5513 4.87%
PSLV-40322 4.87%
ZIP-41267 4.87%
YEXT-50781 4.87%
JOE-6904 4.86%
ACAD-26322 4.86%
IOC-26617 4.86%
CAVM-33776 4.86%
SCTY-43721 4.86%
IPI-36093 4.86%
OAS-39797 4.86%
ZINC-34524 4.86%
FSYS-17531 4.86%
JCP-4118 4.85%
CCOI-23428 4.85%
TWTR-45815 4.85%
GDOT-39932 4.85%
TIVO-20662 4.85%
AAXN-22846 4.85%
BARE-32659 4.85%
STEC-7145 4.85%
SVVS-21206 4.85%
ME-28130 4.85%
TSLA-39840 4.85%
EDMC-38799 4.85%
GLBL-8489 4.85%
RMBS-16945 4.85%
RP-40030 4.84%
EVHC-50499 4.84%
ACTG-24465 4.84%
CXO-34440 4.84%
INO-3150 4.84%
CVLT-32622 4.84%
CYD-12311 4.84%
PHM-5969 4.84%
EHTH-32726 4.83%
PCYC-13711 4.83%
VRX-10908 4.83%
MSCI-35078 4.83%
GLUU-33566 4.83%
KOG-32283 4.83%
GORO-32556 4.83%
KNDI-32972 4.83%
VMW-34545 4.83%
DEI-32770 4.83%
PEI-5876 4.83%
BHVN-50839 4.82%
S-2938 4.82%
CLF-1595 4.82%
TC-35140 4.82%
LVS-26882 4.82%
TAT-38304 4.81%
ANGI-42175 4.81%
ATHN-34692 4.81%
FNSR-20866 4.81%
SSW-27550 4.81%
UAL-28051 4.80%
ZNGA-42277 4.80%
PTLA-44770 4.80%
APOL-24829 4.80%
AOL-38989 4.80%
AY-47123 4.80%
AIV-11598 4.80%
SFLY-32660 4.80%
CRM-26401 4.80%
CIM-35081 4.80%
VRUS-33752 4.79%
TCS-45780 4.79%
DGIT-14363 4.79%
AOBC-24519 4.79%
AWI-32690 4.79%
LPX-4531 4.79%
DDD-12959 4.79%
ISRG-25339 4.79%
MACK-42735 4.79%
DAL-33729 4.79%
VECO-12267 4.79%
CLNE-33924 4.79%
TRQ-25660 4.79%
BEAV-799 4.79%
ARIA-11880 4.79%
HLF-26892 4.79%
OCLR-21366 4.79%
WLT-13771 4.79%
SVM-36964 4.78%
RALY-44467 4.78%
CACC-1216 4.78%
ARNA-21724 4.78%
ARE-16843 4.78%
ORN-33772 4.78%
EIGI-45735 4.78%
GEOS-17904 4.78%
ICPT-43505 4.78%
PEN-49413 4.78%
WPRT-36763 4.78%
SFD-6803 4.78%
NCMI-33317 4.78%
KEG-29964 4.78%
ARCO-41242 4.77%
TRAK-27901 4.77%
SQ-49610 4.77%
AMKR-18655 4.77%
CDE-1374 4.77%
RAD-6330 4.77%
CSTE-42704 4.77%
PVTB-20273 4.77%
RGR-6458 4.76%
FEYE-45451 4.76%
MA-32146 4.76%
ASPS-38633 4.76%
NVDA-19725 4.76%
CFX-36176 4.76%
IPG-3990 4.76%
BCRX-10905 4.76%
MDAS-35268 4.76%
PDS-5855 4.76%
DIVX-32623 4.76%
SFS-47776 4.76%
OMG-10009 4.76%
RST-38296 4.76%
MUX-7845 4.76%
AMLN-374 4.76%
SODA-40353 4.76%
X-8329 4.76%
ACIA-33321 4.76%
VDSI-21457 4.75%
SATS-35370 4.75%
HUBS-47872 4.75%
CAA-7050 4.75%
ORI-5696 4.75%
MTOR-21723 4.75%
ENVA-47979 4.75%
ARTG-534 4.75%
PRK-5754 4.75%
CPST-21604 4.75%
SALT-45996 4.75%
LC-48220 4.75%
LL-35036 4.75%
FB-42950 4.75%
LCC-27653 4.75%
NVAX-14112 4.75%
NXG-5297 4.75%
UPL-50782 4.74%
OPK-23120 4.74%
PAY-27206 4.74%
PGNX-17908 4.74%
RBBN-21557 4.74%
BUCY-26506 4.74%
BV-42551 4.74%
PODD-33858 4.74%
APKT-32724 4.74%
XOG-50368 4.74%
GDP-13363 4.74%
ARST-35762 4.74%
BTG-44884 4.74%
LSCC-4549 4.74%
RNG-45521 4.74%
ACTV-41486 4.74%
STRA-15397 4.74%
NVGS-45915 4.74%
ACI-88 4.74%
SHAK-48543 4.74%
AKS-10897 4.74%
AINV-26183 4.74%
DF-24814 4.73%
AMSC-393 4.73%
ATRS-22418 4.73%
VPHM-16140 4.73%
CAL-9699 4.73%
CBPO-35846 4.73%
JAZZ-33959 4.73%
TWOU-46648 4.73%
CVT-45249 4.73%
ADRO-48925 4.73%
ZIOP-31341 4.73%
BODY-40264 4.73%
SKUL-41728 4.73%
RPXC-41375 4.73%
RIG-9038 4.73%
AIG-239 4.73%
RAX-36714 4.73%
CMPR-27674 4.73%
CODE-39640 4.73%
KERX-21789 4.73%
KN-46369 4.73%
GIGM-21155 4.72%
LE-46579 4.72%
ININ-13046 4.72%
ENT-41520 4.72%
FSL-41491 4.72%
MOBL-47102 4.72%
NNI-25782 4.72%
OPEN-38418 4.72%
TUMI-42811 4.72%
BETR-49318 4.72%
GTE-31619 4.72%
ANET-47063 4.72%
IRBT-27780 4.72%
SPPI-24517 4.72%
KYTH-43497 4.72%
WTSL-8313 4.72%
ONDK-48290 4.72%
DNN-33702 4.72%
WL-8189 4.72%
KITE-47169 4.71%
REG-10027 4.71%
ROC-27572 4.71%
GLOG-42746 4.71%
ZG-41730 4.71%
OSK-5719 4.71%
FIRE-33490 4.71%
LILA_K-49206 4.71%
RYAM-47128 4.71%
DPLO-47883 4.71%
BPI-38286 4.71%
LF-23879 4.71%
CLVS-42166 4.71%
DOLE-38865 4.71%
CIEN-16453 4.71%
EGO-24547 4.71%
KLDX-49463 4.71%
MU-5121 4.71%
EOPN-43229 4.71%
WPM-27437 4.71%
SSYS-12107 4.71%
FCX-13197 4.71%
HK-31032 4.70%
ALX-332 4.70%
CRUS-1882 4.70%
QNST-39218 4.70%
PRGN-34526 4.70%
SWI-38388 4.70%
SUSQ-7222 4.70%
MELI-34525 4.70%
XOOM-44158 4.70%
JE-42431 4.70%
IPXL-37849 4.70%
VVUS-11224 4.70%
SNTS-26164 4.70%
TLEO-27668 4.70%
TXMD-28966 4.70%
TRIP-42230 4.70%
LNG-22096 4.70%
AXL-19672 4.70%
KBW-32846 4.70%
PPC-39111 4.70%
CHMT-40299 4.70%
AT-39942 4.70%
QRVO-48384 4.70%
AAWW-28378 4.70%
IVZ-16589 4.70%
SLXP-22269 4.70%
WYNN-24124 4.70%
WPX-42251 4.69%
FRPT-29470 4.69%
ON-21429 4.69%
KNX-40606 4.69%
TDOC-49222 4.69%
SGMO-21447 4.69%
DWRE-42638 4.69%
AVNR-19445 4.69%
SA-26203 4.69%
EAT-2404 4.69%
PLUG-20776 4.69%
ARWR-10417 4.69%
FWM-44510 4.69%
FWLT-3076 4.69%
STLD-16108 4.69%
RKUS-43627 4.69%
JBLU-23599 4.69%
SWIR-21561 4.69%
PCTY-46569 4.69%
WCG-26440 4.69%
EVHC-45269 4.69%
FIVE-43201 4.69%
ELGX-23769 4.69%
COTV-50002 4.69%
ALTH-21231 4.69%
RICE-46240 4.69%
DWSN-2379 4.69%
DNOW-46949 4.69%
LNN-4471 4.69%
CHK-8461 4.69%
CROX-28078 4.69%
GEOY-30441 4.68%
BLUE-44935 4.68%
AVXS-49751 4.68%
SPG-10528 4.68%
EVBG-50264 4.68%
PAET-18539 4.68%
STC-6893 4.68%
PBF-43713 4.68%
INAP-20615 4.68%
GKOS-49178 4.68%
ENTA-44332 4.68%
TPL-7551 4.68%
CALL-14457 4.68%
WTNY-8309 4.68%
FRP-26999 4.68%
KORS-42270 4.68%
NTSP-40271 4.68%
FNGN-39363 4.68%
AMED-25392 4.68%
NUAN-19926 4.68%
DVAX-25972 4.68%
WAGE-42919 4.68%
INOV-48629 4.68%
PMC-34241 4.68%
HNSN-32893 4.68%
DERM-47845 4.68%
TROX-40530 4.68%
FLOW-49434 4.68%
RS-11955 4.68%
MULE-50719 4.68%
EXAS-22364 4.68%
LOCK-43467 4.68%
AYR-32475 4.68%
AVEO-39350 4.68%
ANW-33014 4.68%
RUE-38944 4.68%
FTNT-38965 4.68%
UIS-7761 4.67%
ANDV-7612 4.67%
NDLS-45014 4.67%
INCY-10187 4.67%
ECOM-44779 4.67%
NGVC-43219 4.67%
ELF-50320 4.67%
BIIB-3806 4.67%
ET-42700 4.67%
IMAX-11498 4.67%
CHGG-45847 4.67%
FFIV-20208 4.67%
SHOP-49060 4.67%
TWI-9066 4.67%
TREE-36742 4.67%
SLG-17448 4.67%
NUS-16059 4.67%
UAA-27822 4.67%
SPSN-27912 4.67%
CJES-41770 4.67%
SREV-41142 4.67%
EXEL-21383 4.67%
BPOP-1062 4.67%
AXDX-15934 4.67%
CHUY-43215 4.67%
ONE-39796 4.67%
RATE-41601 4.67%
SBH-32866 4.67%
GTLS-32433 4.67%
DATA-44747 4.67%
NSM-42611 4.67%
CGA-34608 4.67%
YNDX-41484 4.67%
QLIK-39921 4.66%
SALE-45114 4.66%
HGSI-10409 4.66%
INVN-42165 4.66%
PIR-6000 4.66%
AAN-523 4.66%
YRCW-8370 4.66%
ANV-33832 4.66%
VRTV-47143 4.66%
KRFT-43405 4.66%
FRGI-42856 4.66%
HTWR-38150 4.66%
CML-34809 4.66%
TEX-7408 4.66%
MTDR-42446 4.66%
LITE-49288 4.66%
LFGR-40754 4.66%
WNR-27997 4.66%
LNC-4498 4.66%
SD-50348 4.66%
BMI-969 4.66%
WIN-27019 4.66%
LKSD-50312 4.66%
TSYS-21950 4.66%
VNCE-45906 4.66%
LDRH-45619 4.66%
OMF-45670 4.65%
NM-27763 4.65%
SWM-14164 4.65%
RUBI-46671 4.65%
THOR-15228 4.65%
XSPA-39803 4.65%
MIME-49606 4.65%
BNNY-42728 4.65%
FLTX-43479 4.65%
ADY-34246 4.65%
ANFI-43493 4.65%
RH-43599 4.65%
CMG-28016 4.65%
AFFX-15064 4.65%
MGM-4831 4.65%
RLD-39918 4.65%
ZSPH-47150 4.65%
NTCT-20526 4.65%
GMCR-9736 4.65%
MTW-4656 4.65%
TMHC-44433 4.65%
NGD-27323 4.65%
PSTG-49464 4.65%
JCG-32320 4.65%
GOOG_L-26578 4.65%
DDUP-34112 4.65%
CPLA-32860 4.65%
STMP-26286 4.65%
MED-4766 4.65%
OMER-38827 4.65%
SVR-27028 4.65%
AWAY-41667 4.65%
JUNO-48317 4.65%
CLDR-50810 4.65%
AIMT-49323 4.65%
FRAC-50612 4.65%
BRKR-25307 4.65%
ZOES-46742 4.64%
JIVE-42260 4.64%
XENT-47373 4.64%
NAV-5199 4.64%
PQ-19326 4.64%
VOLC-32235 4.64%
FRPT-48038 4.64%
NXPI-39994 4.64%
OPHT-45498 4.64%
DWA-26750 4.64%
KFN-27386 4.64%
PBPB-45579 4.64%
CLWR-33480 4.64%
QUOT-46497 4.64%
BKNG-19917 4.64%
IONS-4031 4.64%
MWW-24923 4.64%
DXM-39191 4.64%
STRI-38917 4.64%
CCC-1331 4.64%
MNK-44917 4.64%
RIGP-47421 4.64%
CHRS-48026 4.64%
PBH-27027 4.64%
GWRE-42402 4.64%
PANW-43202 4.64%
AEM-154 4.64%
VRTX-8045 4.64%
BBY-754 4.64%
HCA-41047 4.64%
CREE-8459 4.64%
VRA-40287 4.64%
MAS-4665 4.64%
TNET-46633 4.64%
WLH-43733 4.63%
TNS-26110 4.63%
MBI-4684 4.63%
HGG-34277 4.63%
SPXC-7086 4.63%
SFXE-45620 4.63%
MFN-24566 4.63%
NXST-25679 4.63%
AMPH-47193 4.63%
EXLS-32752 4.63%
PGEM-44778 4.63%
PBYI-42689 4.63%
EW-21382 4.63%
BW-49208 4.63%
XLRN-45431 4.63%
ZUMZ-27229 4.63%
HOV-3645 4.63%
DVR-33027 4.63%
CUDA-45797 4.63%
ARUN-33588 4.63%
IBP-46365 4.63%
CECO-24834 4.63%
GNW-26323 4.63%
GEVA-42112 4.63%
SPWH-46777 4.63%
IMPV-42131 4.63%
VG-32143 4.63%
TWLO-50077 4.63%
MFRM-42184 4.63%
HOLI-28942 4.63%
XRTX-26411 4.63%
MEDP-50194 4.63%
CALX-39392 4.63%
AA-50428 4.63%
TCMD-50169 4.63%
SIRI-11901 4.63%
EPAM-42463 4.63%
CSLT-46551 4.63%
EXPE-27543 4.63%
ZION-8399 4.63%
OSUR-22151 4.63%
IRWD-39194 4.63%
AEA-26887 4.63%
FDC-49496 4.63%
ARCH-50357 4.63%
TTES-23339 4.63%
TFM-40376 4.62%
VRGY-32225 4.62%
BKS-9693 4.62%
SNDK-13940 4.62%
GPOR-28116 4.62%
COHR-1751 4.62%
GXDX-34968 4.62%
WTW-23269 4.62%
EXPR-39626 4.62%
NOMD-47572 4.62%
SIMG-20795 4.62%
MDCO-21906 4.62%
CTRX-32301 4.62%
CBI-1287 4.62%
TIME-46965 4.62%
LEN-4417 4.62%
ETFC-15474 4.62%
SKX-20284 4.62%
SN-42264 4.62%
CENX-14484 4.62%
FINL-2845 4.62%
GSM-38638 4.62%
ASGN-557 4.62%
RATE-22058 4.62%
BK-903 4.62%
RVBD-32618 4.62%
ARRS-25134 4.62%
SPWR-27817 4.62%
MNTA-26381 4.62%
KTOS-20947 4.62%
DFIN-50310 4.62%
AMG-17800 4.62%
NMBL-46002 4.62%
TQNT-10545 4.61%
TEAM-49655 4.61%
KRC-16374 4.61%
FRAN-41737 4.61%
SNBR-19559 4.61%
URI-18113 4.61%
LXU-4545 4.61%
CONN-25646 4.61%
TGB-7465 4.61%
CPX-28340 4.61%
MITI-25573 4.61%
CLD-38971 4.61%
YELP-42596 4.61%
HAWK-44570 4.61%
AMBC-44636 4.61%
CAR-17991 4.61%
TSE-47098 4.61%
TK-13289 4.61%
AFL-185 4.61%
HBI-32497 4.61%
CE-26960 4.61%
DB-23113 4.61%
GOOS-50713 4.61%
ESI-24831 4.61%
LUK-4580 4.61%
HALO-26766 4.61%
RYL-6612 4.61%
KATE-4479 4.61%
LB-4564 4.61%
FOSL-8816 4.61%
MMYT-40028 4.61%
SEAS-44541 4.61%
BWLD-25642 4.61%
CELL-23762 4.61%
TRA-7561 4.61%
NADL-46262 4.61%
OR-47173 4.61%
SIVB-6897 4.61%
AKAM-20680 4.61%
ALXN-14328 4.61%
ADPT-47191 4.61%
KBH-4199 4.61%
TVIA-41522 4.60%
AVG-42445 4.60%
MTZ-4667 4.60%
MYGN-13698 4.60%
SCHN-10268 4.60%
SMT-39907 4.60%
JBL-8831 4.60%
NXTM-27733 4.60%
ABX-64 4.60%
HPT-13373 4.60%
TLRD-7203 4.60%
GNRC-39208 4.60%
ILMN-21774 4.60%
KEM-4265 4.60%
CDNS-1385 4.60%
IPCM-35640 4.60%
TTWO-16820 4.60%
MTH-16385 4.60%
BGC-3129 4.60%
COMM-45734 4.60%
DSW-27409 4.60%
DRIV-19209 4.60%
SDR-42802 4.60%
NG-25781 4.60%
LOPE-37686 4.60%
HABT-48126 4.60%
ALKS-301 4.60%
FBC-16754 4.60%
BZH-10728 4.59%
BL-50418 4.59%
MDRX-20394 4.59%
GRUB-46693 4.59%
DCP-32029 4.59%
RNDY-42464 4.59%
SYNH-48027 4.59%
M-2754 4.59%
SHOS-43514 4.59%
ASB-547 4.59%
AVB-18834 4.59%
ARNC-2 4.59%
HA-3431 4.59%
UDR-7715 4.59%
SRZ-15021 4.59%
OREX-33742 4.59%
ALRM-49192 4.59%
FIT-49139 4.59%
VSI-38882 4.59%
UBNT-42027 4.59%
CLDX-19187 4.59%
AERI-45733 4.59%
CSR-34963 4.59%
IART-18727 4.59%
EGLE-27370 4.59%
ABMD-53 4.59%
FND-50798 4.59%
TGNA-3128 4.59%
MRD-47126 4.59%
KBR-32880 4.59%
CNX-24758 4.59%
BKI-13797 4.59%
ICHR-50509 4.58%
PALM-24105 4.58%
ONVO-41829 4.58%
GDI-11130 4.58%
CVBF-1999 4.58%
OPNT-21914 4.58%
SRPT-16999 4.58%
ICFI-32652 4.58%
DAR-11908 4.58%
LXK-13891 4.58%
TMRK-21568 4.58%
LRN-35259 4.58%
SXE-32740 4.58%
OKTA-50758 4.58%
MNST-3450 4.58%
CDEV-50376 4.58%
TTI-7633 4.58%
RSPP-46182 4.58%
JOY-22996 4.58%
AVP-660 4.58%
COUP-50350 4.58%
VQ-32905 4.58%
GIL-18902 4.58%
APEI-35040 4.58%
TTD-50288 4.58%
PCRX-40815 4.58%
QMAR-27456 4.58%
OUTR-24791 4.58%
GSS-9738 4.58%
GPRE-28159 4.58%
EGY-26497 4.58%
DLTH-49615 4.58%
WDC-8132 4.58%
GRPN-42118 4.58%
ONXX-14986 4.58%
SLCA-42436 4.58%
DDS-2126 4.58%
IDCC-3801 4.58%
FRO-22983 4.58%
FNF-27712 4.58%
HURN-26708 4.58%
HPQ-3735 4.58%
SC-46215 4.58%
ATHL-45211 4.58%
RGLD-6455 4.57%
NE-5249 4.57%
LEAP-27411 4.57%
WLK-26563 4.57%
SIG-9774 4.57%
TITN-35190 4.57%
VRTS-37869 4.57%
BOX-48486 4.57%
STX-24518 4.57%
SUPN-42877 4.57%
LPSN-21415 4.57%
RDWR-20658 4.57%
AER-32916 4.57%
BEE-26410 4.57%
DS-24099 4.57%
CORT-26191 4.57%
SYX-20153 4.57%
NYRT-46760 4.57%
PWER-17735 4.57%
WLL-25707 4.57%
FWON_K-47272 4.57%
ATGE-2371 4.57%
SEDG-48823 4.57%
LQDT-28107 4.57%
PNC-6068 4.57%
VSTO-48531 4.57%
CERS-16333 4.57%
BRP-41181 4.57%
SM-4664 4.57%
LPI-42263 4.57%
PLAB-6018 4.57%
FTK-27496 4.57%
MYCC-45453 4.57%
CSC-1898 4.57%
HOG-3499 4.56%
STT-7139 4.56%
VEEV-45667 4.56%
PRLB-42546 4.56%
CBG-26367 4.56%
NVDQ-42595 4.56%
UNFI-16129 4.56%
BUFF-49279 4.56%
DXCM-27173 4.56%
GMED-43252 4.56%
TBI-15165 4.56%
CVH-2010 4.56%
MMI-45771 4.56%
SSTK-43494 4.56%
SYNT-24790 4.56%
HBAN-3472 4.56%
FCPT-49543 4.56%
PLCE-24789 4.56%
UBS-48129 4.56%
PEGA-15365 4.56%
GES-24811 4.56%
CZR-42461 4.56%
QTNA-50417 4.56%
SCMP-34477 4.56%
UFS-2329 4.56%
NBR-5214 4.56%
SAVE-41498 4.56%
STAR-24862 4.56%
DISC_A-36930 4.55%
CFMS-49211 4.55%
PSIX-33645 4.55%
PEIX-27129 4.55%
BTU-22660 4.55%
BKD-27830 4.55%
HOT-3642 4.55%
SEM-38786 4.55%
CPN-35531 4.55%
PPS-9438 4.55%
ANIP-25565 4.55%
ALJ-27500 4.55%
TRLG-27576 4.55%
EA-2602 4.55%
ALNY-26335 4.55%
STZ-24873 4.55%
SHLD-26169 4.55%
JLL-19898 4.55%
HRBN-31638 4.55%
ANF-15622 4.55%
LZB-4621 4.55%
GPS-3321 4.55%
BNED-49310 4.55%
OVTI-21799 4.55%
VSH-8050 4.55%
PDGI-22164 4.55%
ASIX-50260 4.54%
WINN-32870 4.54%
BCOV-42531 4.54%
OMTR-32322 4.54%
IRTC-50399 4.54%
CACQ-45880 4.54%
TPR-22099 4.54%
MOVE-20500 4.54%
WMGI-40816 4.54%
PRTY-48933 4.54%
EBIX-18693 4.54%
MONT-45505 4.54%
SFL-26386 4.54%
MEG-4779 4.54%
GLDN-24774 4.54%
CTCT-34783 4.54%
LOCO-47382 4.53%
AVGO-38650 4.53%
CALM-16169 4.53%
LCI-23602 4.53%
TSFG-21453 4.53%
CRDN-1844 4.53%
RDN-20276 4.53%
MPC-41636 4.53%
BRCD-20061 4.53%
LOOP-32207 4.53%
TXI-7670 4.53%
SUM-48746 4.53%
BRLI-10108 4.53%
IRDM-35933 4.53%
MTCH-49608 4.52%
OMX-764 4.52%
NBIX-14972 4.52%
TIVO-16661 4.52%
AM-209 4.52%
VER-41872 4.52%
REN-34800 4.52%
TNGO-41762 4.52%
DEPO-18010 4.52%
MHR-32541 4.52%
CSE-25410 4.52%
TKLC-7463 4.52%
AXON-49107 4.52%
DHT-27705 4.52%
SOI-50870 4.52%
NRF-26740 4.51%
HTZ-50070 4.51%
NOV-24809 4.51%
SAGE-47332 4.51%
INSY-44665 4.51%
DAN-35359 4.51%
KSS-4313 4.51%
ACXM-110 4.51%
CMCO-14348 4.50%
SBLK-28112 4.50%
FCAU-47888 4.50%
ARII-27998 4.50%
GRT-10613 4.50%
CLW-37775 4.50%
HUN-27030 4.50%
AXP-679 4.50%
GTN-23945 4.50%
HSNI-36733 4.50%
JEF-25093 4.50%
OCNF-33735 4.50%
FCEL-24853 4.50%
HL-3585 4.49%
TSRX-39968 4.49%
MDVN-28160 4.49%
LPHI-25600 4.49%
LM-4488 4.49%
INWK-32504 4.49%
BANC-23943 4.49%
OLED-14774 4.49%
XPO-26287 4.49%
ZZ-28314 4.49%
AMAG-659 4.48%
RTK-6523 4.48%
CTIC-16607 4.48%
SFSF-35114 4.48%
ACLI-27692 4.48%
TSEM-12116 4.48%
BLOG-34377 4.48%
GAIA-20721 4.48%
NSU-26952 4.48%
HAYN-29738 4.48%
CRK-1663 4.48%
GIII-3210 4.48%
ROSE-28091 4.47%
NETL-26462 4.47%
AUY-25714 4.47%
WNC-8233 4.47%
OCN-15697 4.47%
AGEN-21104 4.46%
MGNX-45643 4.46%
GIMO-44892 4.45%
TPCG-31124 4.45%
OTIC-47495 4.45%
OBE-32293 4.45%
DY-2385 4.44%
HFC-3620 4.44%
FOR-35245 4.44%
GG-22226 4.44%
TST-20158 4.43%
ANAD-12742 4.43%
CPHD-21603 4.43%
ETSY-48934 4.43%
OMCL-23019 4.42%
MDR-4752 4.42%
MSTR-23889 4.41%
AXAS-677 4.41%
WMG-27241 4.40%
KWK-19902 4.40%
GSIC-23686 4.40%
SAPE-14803 4.39%
BMR-26548 4.38%
CJ-50690 4.37%
NRE-49511 4.37%
RFMD-17107 4.36%
SGMS-22637 4.35%
WAL-27421 4.35%
WTFC-16703 4.35%
WRLD-8268 4.35%
TIE-15230 4.34%
ICO-27824 4.33%
BLOX-42821 4.32%
ASCA-10088 4.32%
HNI-26259 4.32%
WTTR-50789 4.32%
TEA-41763 4.32%
ABCO-23176 4.31%
PDCE-5907 4.30%
NX-28153 4.29%
BC-755 4.29%
OC-32608 4.27%
SDRL-39495 4.26%
THRM-19666 4.25%
BLMN-43283 4.25%
WEB-27762 4.24%
ELX-10747 4.23%
JST-18313 4.23%
MDXG-34049 4.21%
CUZ-1995 4.21%
AYX-50735 4.21%
ZLC-10069 4.21%
MGAM-14962 4.19%
BCC-44089 4.17%
WAIR-41757 4.15%
KTWO-46870 4.15%
ADS-22747 4.13%
FLR-24833 4.13%
KKD-21410 4.13%
INFN-33979 4.13%
ATHR-25967 4.10%
EQIX-24482 4.09%
AIN-247 4.07%
CLR-33856 4.06%
OPB-46768 4.05%
PKT-30586 4.04%
PE-46989 4.04%
BOJA-49024 4.04%
HZNP-41766 4.03%
GEO-11710 4.03%
MTRX-5105 4.02%
ENS-26530 4.00%
SXC-41733 3.99%
ALL-24838 3.97%
GOGO-44965 3.95%
IL-39990 3.95%
WTI-26986 3.95%
BURL-45558 3.94%
UTHR-20306 3.93%
G-34442 3.93%
DBD-2100 3.92%
DBTK-33054 3.92%
MKTO-44738 3.89%
CBPX-46307 3.89%
RRD-2248 3.88%
THC-5343 3.85%
ARAY-33310 3.84%
TAHO-39938 3.84%
CMTL-1675 3.83%
LUFK-4579 3.83%
GDDY-48863 3.81%
CEL-33293 3.81%
NTRI-21697 3.80%
BDBD-28667 3.80%
CXW-22102 3.80%
KPTI-45799 3.79%
CHS-8612 3.77%
LEE-4414 3.77%
BOOM-1034 3.76%
PJC-25823 3.76%
AKRX-270 3.75%
CBL-9890 3.75%
KRNT-48872 3.74%
SGY-9458 3.73%
QLYS-43454 3.72%
PAYC-46744 3.69%
LYV-27943 3.67%
LOGI-16649 3.66%
BPMC-49000 3.64%
MS-17080 3.62%
WMS-47380 3.62%
EVH-49100 3.61%
PBI-5773 3.60%
TPC-5824 3.59%
MOS-26721 3.59%
TDC-34661 3.59%
OSIS-17718 3.58%
EVC-21879 3.57%
LEU-19177 3.56%
END-26375 3.55%
STCN-10583 3.51%
GLNG-24489 3.48%
FOE-2933 3.48%
MX-41048 3.47%
BYD-9888 3.45%
ENLC-25850 3.45%
MFC-4809 3.43%
FANG-43512 3.41%
GTI-23687 3.41%
LMNX-21288 3.40%
UHAL-12141 3.40%
UCBI-23550 3.40%
NANO-5188 3.39%
NYLD-49043 3.39%
MEET-30658 3.38%
SBGI-13098 3.38%
BEL-21911 3.37%
DK-32042 3.37%
NTLA-49934 3.37%
RNOW-26545 3.36%
AGI-44156 3.36%
AAL-45971 3.33%
HSKA-17227 3.32%
C-1335 3.31%
MEA-27110 3.28%
IVC-4084 3.27%
OMRI-28324 3.25%
DRH-27278 3.25%
QVCA-32046 3.21%
VSAT-16307 3.17%
XON-45239 3.15%
ARCC-26672 3.13%
SANM-8869 3.13%
PFG-23151 3.12%
AFSI-32871 3.11%
ARB-25133 3.10%
RCAP-44863 3.10%
BZ-34116 3.09%
NTGR-25354 3.09%
WIX-45800 3.08%
TRTN-50119 3.08%
NOW-43127 3.07%
CASC-1265 3.07%
ULTR-32729 3.06%
ZFGN-47165 3.03%
ATAC-16157 3.02%
EXXI-34443 3.02%
XPER-25705 3.02%
RFP-40576 3.00%
APC-455 2.98%
CBS-7962 2.97%
SPLK-42815 2.96%
SAH-24786 2.96%
HMHC-45861 2.95%
CY-2043 2.94%
WGO-8168 2.94%
RIGL-25226 2.93%
FNV-41886 2.93%
PSEM-17733 2.93%
KMI-40852 2.92%
HIL-28533 2.92%
GLBC-25865 2.90%
AGO-26211 2.90%
CTCM-32182 2.89%
BTH-11258 2.89%
HOGS-31962 2.89%
CTRN-27251 2.88%
URBN-10303 2.83%
BAS-27886 2.82%
MRGE-18184 2.81%
RRR-33894 2.79%
SDXC-33318 2.79%
SGRY-49456 2.78%
CYBS-20197 2.77%
CVO-26300 2.77%
WAC-18431 2.75%
ACHN-32790 2.75%
UCTT-26146 2.74%
INST-49594 2.73%
BPZ-28729 2.72%
AEL-25710 2.72%
BEXP-16853 2.71%
IPHS-32820 2.71%
BPFH-10723 2.70%
RES-6426 2.69%
EWBC-19787 2.67%
ZLTQ-42037 2.66%
RMTI-18196 2.66%
IOSP-18759 2.66%
PHH-26956 2.65%
DFG-2202 2.65%
CTMX-49470 2.64%
ODP-5583 2.63%
W-47833 2.63%
SMOD-28049 2.62%
CNW-1696 2.60%
APOG-474 2.60%
IGT-48892 2.59%
BIG-22657 2.57%
SCCO-14284 2.57%
BRKS-12512 2.57%
ATML-607 2.56%
HME-11654 2.56%
NZ-34261 2.56%
GBX-11645 2.56%
KING-46610 2.54%
FARO-17508 2.54%
JAG-50633 2.52%
HGR-3548 2.50%
TRN-7583 2.49%
SHO-26728 2.49%
PVG-42366 2.48%
NEWM-46297 2.47%
RCL-8863 2.47%
NVRO-48025 2.46%
LNCE-4499 2.45%
AR-45618 2.44%
SPKE-47372 2.43%
OMED-45095 2.41%
DNDN_Q-21612 2.41%
MDLZ-22802 2.40%
MRVC-5040 2.38%
ANN-430 2.38%
NKTR-24572 2.38%
CAMP-1244 2.37%
INGN-46370 2.37%
BDC-26479 2.36%
NVMI-21427 2.35%
CHDX-19771 2.35%
AXLL-3189 2.35%
VCI-7921 2.33%
OCUL-47383 2.32%
JNPR-20239 2.31%
DHI-2298 2.31%
SLM-6935 2.31%
VNDA-28326 2.30%
CLGX-2691 2.30%
TXTR-44879 2.28%
ZOLL-8411 2.28%
ICON-6856 2.27%
MEI-4803 2.27%
EOX-26560 2.27%
GTAT-36628 2.27%
IMGN-3885 2.27%
NOG-35961 2.25%
VC-40159 2.25%
EPL-38761 2.23%
RENT-6421 2.23%
CBEY-27751 2.22%
KRO-25764 2.22%
TNC-7303 2.21%
ACF-85 2.19%
SWS-7247 2.19%
GFIG-26970 2.18%
PL-6174 2.14%
ENTG-21754 2.14%
ALDR-46869 2.12%
BIRT-19026 2.11%
MCRB-49195 2.10%
TGA-2214 2.05%
EXTR-19973 2.03%
CO-33188 2.03%
HQY-47397 2.03%
LGND-12200 2.00%
WWD-16425 2.00%
VMSI-15410 1.98%
DDC-39 1.96%
MB-49156 1.96%
TTMI-22072 1.96%
CYT-10590 1.94%
RPTP-21364 1.90%
ID-16138 1.89%
ACRS-49465 1.89%
IOVA-36209 1.88%
PGTI-32324 1.87%
CPSI-23667 1.87%
DGI-38374 1.85%
GRMN-22316 1.85%
MCF-22382 1.84%
TGI-15905 1.82%
GTT-44938 1.82%
UTIW-22284 1.81%
WBMD-27669 1.79%
DYN-43462 1.79%
LXFT-44986 1.77%
ERII-36518 1.77%
RISK-35637 1.76%
BGCP-20973 1.75%
MPO-42820 1.75%
LSI-4553 1.73%
CCJ-14479 1.73%
INT-3950 1.73%
CETV-20961 1.73%
CORE-27864 1.72%
BRY-1103 1.72%
NILE-26315 1.72%
IPHI-40399 1.69%
MOH-25349 1.67%
PBY-5783 1.67%
DIOD-2185 1.66%
MINI-10793 1.65%
RBA-18480 1.65%
WRI-8267 1.64%
SWKS-23821 1.63%
OSTK-23714 1.63%
RTI-6579 1.60%
ADES-26715 1.60%
EMS-27916 1.59%
JPM-25006 1.58%
APTI-50318 1.58%
ZOLT-8412 1.57%
ENDP-21750 1.57%
VHC-30464 1.57%
XL-8340 1.56%
BEAT-35929 1.55%
RVNC-46315 1.55%
NWBO-23322 1.54%
SDT-41214 1.54%
TXT-7674 1.54%
FBP-2806 1.53%
CTB-1942 1.52%
ATKR-50040 1.52%
JEC-4120 1.52%
SYNA-23398 1.51%
AHT-25398 1.51%
FLDM-40848 1.51%
LAMR-15516 1.51%
MOV-14762 1.50%
ATEN-46598 1.50%
CLB-13508 1.49%
VRNS-46453 1.47%
TVTY-371 1.47%
CRAY-21374 1.45%
PBKS-5778 1.41%
GHDX-27666 1.39%
MI-5025 1.39%
ECR-47168 1.39%
WRD-50537 1.38%
RSH-21550 1.37%
ITGR-22015 1.37%
ELLI-41243 1.34%
PLCM-14784 1.33%
DRTX-43200 1.31%
WETF-31288 1.29%
HZN-49218 1.28%
REX-9642 1.27%
NES-35217 1.27%
ENTR-35230 1.25%
HDP-48257 1.25%
VIAV-20387 1.24%
SDLP-43539 1.24%
GME-23438 1.24%
EBAY-24819 1.23%
PTCT-44955 1.21%
PETS-25867 1.21%
FST-2935 1.20%
DKS-24070 1.19%
COG-1746 1.19%
MRO-5035 1.18%
CRME-26450 1.17%
EGHT-22889 1.16%
KWR-6294 1.16%
EXK-33236 1.14%
FNBC-44709 1.13%
PAAS-13083 1.13%
TRNC-47367 1.12%
ACIW-12616 1.11%
HRTX-22651 1.11%
WG-8163 1.09%
VMEM-45520 1.09%
NPTN-40807 1.08%
CATM-35253 1.07%
HOS-26150 1.06%
MTG-5092 1.06%
CRBC-1278 1.04%
RPD-49275 1.03%
HNT-22231 1.02%
CYH-21608 1.02%
DDR-8468 1.02%
VTG-33984 1.00%
CENT_A-33297 1.00%
PRTA-43730 0.98%
WDAY-43510 0.96%
PNK-21187 0.96%
MCCC-21174 0.92%
RUN-49321 0.92%
RGNX-49409 0.92%
AEIS-13777 0.92%
HERO-27747 0.91%
AAC-47842 0.90%
CRZO-17358 0.90%
ACCO-27570 0.90%
I-44539 0.89%
PAL-10245 0.87%
NOR-39627 0.87%
HEES-28023 0.86%
MXWL-5155 0.84%
UVE-31185 0.82%
TGH-34810 0.82%
PLX-18758 0.82%
AVNW-33224 0.81%
CEVA-24434 0.78%
TLAB-7468 0.77%
CYBR-47779 0.76%
ACW-39313 0.75%
NYT-5551 0.75%
MMR-19497 0.75%
FI-45248 0.74%
BLDP-13798 0.74%
PSS-15005 0.74%
CTV-17188 0.74%
OCSL-36371 0.74%
ZQK-6317 0.73%
XOXO-20992 0.72%
ALGN-22355 0.72%
AAI-17792 0.72%
TECK-31886 0.71%
MCGC-23229 0.68%
RIC-16681 0.67%
USB-25010 0.67%
TLN-49003 0.67%
XOMA-8346 0.67%
ARO-23650 0.65%
LXRX-21413 0.65%
CASH-9700 0.63%
SFY-6825 0.61%
HTE-27475 0.61%
ADCT-115 0.60%
POWI-18085 0.60%
PTEN-10254 0.60%
CUBE-26733 0.59%
SONE-19422 0.57%
ECYT-40814 0.57%
NPBC-5400 0.57%
LGF-19491 0.56%
ESEA-33248 0.55%
CNC-23283 0.54%
BLCM-48304 0.54%
CCRN-24893 0.53%
ESND-7866 0.51%
DIN-3846 0.49%
BCEI-50824 0.48%
QSII-6311 0.48%
VMED-26491 0.48%
MET-21418 0.47%
TBPH-46932 0.47%
TEN-7422 0.45%
CAS-1263 0.45%
F-2673 0.43%
MM-42737 0.43%
ITMN-21284 0.42%
PAHC-46748 0.41%
CAB-26412 0.40%
SEMI-46980 0.40%
KGC-9189 0.40%
DCT-33026 0.39%
XTLY-49199 0.38%
ZBRA-8388 0.38%
HCC-50780 0.38%
LAD-16238 0.36%
RGEN-6449 0.36%
HAL-3443 0.36%
TESO-16281 0.35%
UIHC-35018 0.35%
CI-1539 0.31%
ESIO-2612 0.31%
DNR-15789 0.31%
KEY-4221 0.30%
PTHN-50143 0.28%
MCHX-26161 0.28%
NUVA-26291 0.26%
QUAD-39860 0.25%
MGPI-24094 0.25%
ALLT-32889 0.22%
NPSP-11356 0.22%
TWPG-28050 0.18%
XNPT-27330 0.17%
FRG-27410 0.16%
SGEN-22563 0.13%
SSNI-44270 0.13%
ECPG-25320 0.12%
AMC-46027 0.10%
MOS-41462 0.10%
CTRL-45212 0.09%
FTEK-9732 0.07%
RARE-46285 0.07%
BECN-26643 0.06%
AKBA-46583 0.05%
HOME-50187 0.04%