Overall Statistics
Total Trades
2380
Average Win
0.56%
Average Loss
-0.48%
Compounding Annual Return
20.338%
Drawdown
15.500%
Expectancy
0.342
Net Profit
537.504%
Sharpe Ratio
1.116
Probabilistic Sharpe Ratio
56.417%
Loss Rate
38%
Win Rate
62%
Profit-Loss Ratio
1.17
Alpha
0.081
Beta
0.654
Annual Standard Deviation
0.131
Annual Variance
0.017
Information Ratio
0.42
Tracking Error
0.112
Treynor Ratio
0.223
Total Fees
$22422.80
Estimated Strategy Capacity
$11000000.00
Lowest Capacity Asset
INDA V3T4RUKOL10L
Portfolio Turnover
21.11%
#region imports
from AlgorithmImports import *
#endregion

class WeightedClassifierAlpha(AlphaModel):

    def __init__(self, algo, pcm):
        self.algo = algo
        self.pcm = pcm

    def Update(self, algo, data):

        insights = []

        if not self.algo.symbols:
            return insights

        try:

            # This can be adjusted to only allow trading for symbols with a certain Kelly size (as determined during the last training of the model)
            min_kelly = 0

            if not self.algo.IsWarmingUp:
                                
                if self.algo.vix_threshold:
                    self.pcm.weightCap = self.adjustWeightCap()

                # Predict each symbols direction
                for symbol in self.algo.symbols:
                    symbol = SymbolCache.GetSymbol(symbol)

                    kelly_size = 0

                    if symbol in self.algo.kelly_size:
                        kelly_size = self.algo.kelly_size[symbol] if not math.isnan(self.algo.kelly_size[symbol]) else 0
                       
                    if kelly_size >= min_kelly and symbol in self.algo.models and data.ContainsKey(symbol):

                        model = self.algo.models[symbol]

                        period_lookback = self.GetLookback(self.algo.features[symbol]) + self.algo.lookback_offset

                        extra_featuredata, ta_features = self.algo.SplitFeatures(self.algo.data, self.algo.features[symbol])

                        X_symbol = self.algo.data.GetXy(symbol = symbol, 
                                              target = self.algo.target, 
                                              include_y = False, 
                                              ta_features = ta_features,
                                              extra_featuredata = extra_featuredata,
                                              vix = ('VIX' in self.algo.features[symbol]),
                                              lookback= period_lookback)

                        # X_symbol = self.algo.data.GetXy(symbol = symbol, 
                        #                       target = self.algo.target, 
                        #                       include_y = False, 
                        #                       ta_features = self.algo.features[symbol],
                        #                       vix = ('VIX' in list(model.features)),
                        #                       lookback= period_lookback)

                        if not X_symbol.empty and self.algo.models[symbol]:
                            time = X_symbol.index[-1][0]
                            X_symbol = X_symbol.loc[pd.IndexSlice[time, :], :]

                            model = self.algo.models[symbol]
                            result = model.Predict(X_symbol)
                            if math.isnan(result):
                                result = 0

                            size = kelly_size * self.algo.kelly_multiplier

                            if result > 0 and size > 0:
                                insights.append(
                                    Insight.Price(symbol, timedelta(days=2), InsightDirection.Up, result, None, None, size))
                            elif result < 0:
                                size = 0
                                insights.append(
                                    Insight.Price(symbol, timedelta(days=1), InsightDirection.Flat, abs(result), None, None, abs(size)))

            return insights

        except Exception as e:
            self.algo.Log('Unexpected error during insights generation:' + str(e))
            raise

    def GetLookback(self, features):
        all_durations = [int(item) for sublist in [[y for y in x.split("_") if y.isdigit()] for x in features] for item in sublist]
        if all_durations:
            return max(all_durations)
        else:
            return 0

    def adjustWeightCap(self):

        weightCap = 1

        vix_data = self.algo.History(self.algo.data.vix, self.algo.vix_lookback, self.algo.resolution)
                    
        try:
            vixMA = vix_data.droplevel("symbol")["close"].mean()
            vix = vix_data.droplevel("symbol")["close"][-1]
            if self.algo.vix_threshold == 'MA':
                if vix > vixMA * self.algo.vix_ma_threshold:
                    weightCap = vixMA / vix
            elif vixMA > self.algo.vix_threshold:
                    weightCap = self.algo.vix_threshold / vixMA
        except:
            self.algo.Error("Error retrieving VIX")

        return weightCap
from AlgorithmImports import *
import pandas as pd
from feature import add_features, get_exhaustive_features_list
from nasdaq import Nasdaq
from fed import Fed
from fred import Fred
import time

class Data:
    def __init__(self, algo, resolution, returns_range):
        self.algo = algo
        self.resolution = resolution
        self.returns_range = returns_range 

        # dataEndpoints = [Nasdaq.UMICH, Nasdaq.MULTPL, Fred.FRED[:399], Nasdaq.RATEINF, Fed.FED[:399], Nasdaq.USTREASURY, Nasdaq.ECONOMIST]

        # self.allNasdaqDataNames =  Nasdaq.UMICH + Nasdaq.ECONOMIST + Nasdaq.MULTPL + Fred.FRED[:299] + Nasdaq.RATEINF + Nasdaq.USTREASURY
        # self.allNasdaqDataNames =  Nasdaq.UMICH + Nasdaq.MULTPL + Fred.FRED[:self.algo.i] + Nasdaq.RATEINF + Fed.FED[:self.algo.i] + Nasdaq.USTREASURY + Nasdaq.ECONOMIST
        # self.allNasdaqDataNames = Nasdaq.USTREASURY + Nasdaq.ECONOMIST
        # self.allNasdaqDataNames = dataEndpoints[self.algo.i]

        # self.allNasdaqDataNames = [item for sublist in dataEndpoints for item in sublist[:self.algo.i]]

        self.allNasdaqDataNames = []#Nasdaq.MANUAL

        # self.NasdaqDataSymbols = {}
        # datacolumns = []
        # for dataName in self.allNasdaqDataNames:
        #     self.NasdaqDataSymbols[dataName] = self.algo.AddData(NasdaqDataLink, dataName, self.resolution).Symbol

        #     nasdaqHistory = self.algo.History(self.NasdaqDataSymbols[dataName], 252, self.resolution)
            
        #     for column in list(nasdaqHistory.columns):
        #         datacolumns.append(dataName + "@" + column)

        self.allNasdaqFeatures = [] #self.getAvailableNasdaqFeatures()

        self.vix = self.algo.AddData(CBOE, "VIX", Resolution.Daily).Symbol

        self.allTAFeatures = get_exhaustive_features_list()

    def GetXy(self, symbol, target, include_y = True, ta_features = None, extra_featuredata = None, vix = False, start=None, end=None, lookback=None, shift=0):

            X = pd.DataFrame()
            y = pd.DataFrame()
            returns = pd.DataFrame()

            if start and end:
                history = self.algo.History(symbol, start, end, self.resolution)
            else:
                if lookback:
                    history = self.algo.History(symbol, lookback, self.resolution)
                else:
                    history = self.algo.History(symbol, 1, self.resolution)

            if 'symbol' in history.reset_index(inplace=False).columns:
                # gb = history.groupby('symbol', group_keys=False)
                gb = history

                history['returns_1d'] = -gb.close.pct_change(-1)
                history['returns_1w'] = -gb.close.pct_change(-5)
                history['returns_1m'] = -gb.close.pct_change(-21)
                history['variable_returns'] = -gb.close.pct_change(-self.returns_range)

                if target in ['zscore', 'return_std', 'return_zscore', 'zscore', 'return_mean']:
                    rgb = history.returns_1d.groupby('symbol', group_keys=False)
                if target in ['return_std', 'return_zscore', 'zscore']:
                    history['return_std'] = rgb.transform(lambda x: x.rolling(window=14).std())
                if target in ['return_mean', 'zscore']:
                    history['return_mean'] = rgb.transform(lambda x: x.rolling(window=200).mean())
                if target in ['return_last', 'return_zscore']:
                    history['return_last'] = gb.close.pct_change()
                if target == 'return_zscore':
                    history['return_zscore'] = history.return_last / history.return_std
                if target == 'zscore':
                    history['zscore'] = (history.returns_1m - history.return_mean) / history.return_std

                if ta_features:
                    gb = history.groupby('symbol', group_keys=False)
                    # gb = history
                    history = gb.apply(lambda x: add_features(x, ta_features))

                if extra_featuredata:
                    dataNames = list(set([item.split('@')[0] for item in extra_featuredata]))
                    history = history.reset_index()
                    for dataName in dataNames:
                        nasdaqDataSymbol = self.NasdaqDataSymbols[dataName]
                        if start and end:
                            nasdaqHistory = self.algo.History(nasdaqDataSymbol, start, end, self.resolution)
                        else:
                            if lookback:
                                nasdaqHistory = self.algo.History(nasdaqDataSymbol, lookback, self.resolution)
                            else:
                                nasdaqHistory = self.algo.History(nasdaqDataSymbol, 1, self.resolution)
                        
                        dropcolumns = [item for item in nasdaqHistory.columns if dataName + "@" +item not in extra_featuredata]
                        nasdaqHistory = nasdaqHistory.drop(columns=dropcolumns)

                        datacolumns = []
                        for column in list(nasdaqHistory.columns):

                            newname = dataName + "@" + column
                            datacolumns.append(newname)
                            nasdaqHistory.rename(columns={column: newname}, inplace=True)
                        nasdaqHistory = nasdaqHistory.reset_index().drop('symbol', axis=1, errors='ignore')

                        if not nasdaqHistory.empty:
                            # Merge DataFrames using the index as merge keys
                            history = history.merge(nasdaqHistory, how='left', left_on='time', right_on='time')

                            # Forward-fill the NaN values in the 'value' column with the last known value
                            history[datacolumns] = history[datacolumns].fillna(method='ffill')

                    history.set_index(['time', 'symbol'], inplace=True)
                    
                if vix:
                    if start and end:
                        vix_data = self.algo.History(self.vix, start, end, self.resolution)  # Getting current VIX value
                    else:
                        if lookback:
                            vix_data = self.algo.History(self.vix, lookback, self.resolution)  # Getting current VIX value
                        else:
                            vix_data = self.algo.History(self.vix, 1, self.resolution)  # Getting current VIX value
                    history = history.join(vix_data.droplevel("symbol")["close"].rename("VIX"))

                # remove all Columns with more than x% NaNs - adjust percent figure if needed!
                # history = self.RemoveNaNColumns(history, self.nan_percentage_threshold)

                # history = history.set_index(['symbol', 'time'])

                history = history.reset_index().set_index('time').sort_index()
                history.index = history.index.normalize()
                history = history.set_index('symbol', append=True)

                history = history.dropna(axis=1, how='all')

                if include_y:
                    history = history.dropna()

                    # Drop our Y columns
                    X = history.drop(
                        columns=['returns_1d', 'returns_1w', 'returns_1m', 'variable_returns', 'return_std', 'return_mean',
                                'return_last',
                                'return_zscore', 'zscore',
                                'close', 'high', 'low', 'open', 'volume',
                                'askclose', 'askhigh', 'asklow', 'askopen', 'asksize',
                                'bidclose', 'bidhigh', 'bidlow', 'bidopen', 'bidsize',
                                ], errors='ignore')
                    if target in history:
                        y = history[target].shift(-shift) > 0
                        returns = history[target].shift(-shift)
                    else:
                        X = pd.DataFrame()
                else:
                    # Drop our Y columns
                    X = history.drop(
                        columns=['returns_1d', 'returns_1w', 'returns_1m', 'variable_returns', 'return_std', 'return_mean',
                                'return_last',
                                'return_zscore', 'zscore',
                                'close', 'high', 'low', 'open', 'volume',
                                'askclose', 'askhigh', 'asklow', 'askopen', 'asksize',
                                'bidclose', 'bidhigh', 'bidlow', 'bidopen', 'bidsize',
                                ], errors='ignore')
                    X = X.dropna()
            else:

                self.algo.Error("Error retrieving history for " + str(symbol.Value))

            if include_y:
                return X, y, returns
            else:
                return X

    def RemoveNaNColumns(self, df, threshold=0.2):
        missing_percentage = df.isna().mean().sort_values(ascending=False)
        columns_to_drop = missing_percentage[missing_percentage > threshold].index
        return df.drop(columns_to_drop, axis=1)

    def getAvailableNasdaqFeatures(self):
        self.NasdaqDataSymbols = {}
        NasdaqDataFeed = {}
        datacolumns = []
        count = 0
        for dataName in self.allNasdaqDataNames:
            dataFeed = dataName.split('/')[0]
            self.NasdaqDataSymbols[dataName] = self.algo.AddData(NasdaqDataLink, dataName, self.resolution).Symbol
            count += 1
            nasdaqHistory = self.algo.History(self.NasdaqDataSymbols[dataName], 252, self.resolution)
            
            for column in list(nasdaqHistory.columns):
                datacolumns.append(dataName + "@" + column)

            if dataFeed not in NasdaqDataFeed:
                # self.algo.Debug("Calls made so far: "+str(count)+" now starting "+dataFeed)
                NasdaqDataFeed[dataFeed] = len(list(nasdaqHistory.columns))
            else:
                NasdaqDataFeed[dataFeed] = NasdaqDataFeed[dataFeed] + len(list(nasdaqHistory.columns))
            
            # if count > 299:
            #     count = 0
            # time.sleep(0.34)

            # self.algo.Debug(dataName+" added "+str(len(list(nasdaqHistory.columns)))+ " features")

        # for dataFeed in NasdaqDataFeed:
        #     self.algo.Debug(dataFeed+" added "+str(NasdaqDataFeed[dataFeed])+ " features")

        # self.algo.Debug("Total calls made: "+str(count))

        # return datacolumns
        return Nasdaq.MANUAL_INC_COLUMNS
#region imports
from AlgorithmImports import *
#endregion
from sklearn.model_selection import train_test_split
from optimize import *
import numpy as np
import pandas as pd

class EnsembleModel():

    def __init__(self, algo):
        self.algo = algo
        self.models = None
        self.optimizer = None
        self.features = None
        self.kelly_size = 0

    # Build a set of models
    def Train(self, X, y, returns):
        self.optimizer = ModelOptimizer(self.algo)
        try:
            self.models = self.optimizer.BuildModels(X, y, returns)
        except Exception as e:
            self.algo.Log('Unexpected error when building a set of models:' + str(e))
            raise

    # Return prediction as a +/- Z-Score of the prediction from the the threshold
    def Predict(self, X):
        z = 0

        if self.models:
            total_weight = sum(model.test_score for model in self.models)
            

            for model in self.models:
                try:
                    result = model.Predict(X)
                    # Weight the result based on the models test score
                    z = z + result * (model.test_score/total_weight)
                except:
                    pass
            
        return z

    def getFeatures(self):
        
        features = []
        if self.models:
            for model in self.models:
                features.append(model.model.feature_names_in_)

        all_identical = all(np.array_equal(sublist, features[0]) for sublist in features)

        first_set = set(features[0])
        all_same_features = all(set(sublist) == first_set for sublist in features)

        if not all_identical:
            if all_same_features:
                self.algo.Error("Models have all the same features, but not in the same order!")
            else:
                self.algo.Error("Models have different features!")

        seen = set()
        condensed_list = [item for sublist in features for item in sublist if item not in seen and not seen.add(item)]

        return sorted(condensed_list)

    def OptimizeFeatures(self, symbol, num_features):

        importances = []
        if self.models:
            for model in self.models:
                importances.append(dict(zip(model.model.feature_names_in_, model.model.feature_importances_)))

        # Empty dictionaries to store cumulative sums and counts
        cumulative_sums = {}
        counts = {}

        # Update the cumulative sums and counts
        for feature_dict in importances:
            for feature, importance in feature_dict.items():
                cumulative_sums[feature] = cumulative_sums.get(feature, 0) + importance
                counts[feature] = counts.get(feature, 0) + 1

        # Calculate the average importances
        average_importances = {feature: total / counts[feature] for feature, total in cumulative_sums.items()}

        sorted_features = sorted(average_importances.items(), key=lambda x: x[1], reverse=True)

        selected_features = [tup[0] for tup in sorted_features[:num_features]]

        # number_of_features = len(features)

        # all_feature_importances = [0] * number_of_features

        # sorted_features = []

        # if self.models:
        #     number_of_features_model = self.models[0].model.estimators_[0].n_features_in_
        #     if number_of_features == number_of_features_model:

        #         for model in self.models:
        #             all_feature_importances = all_feature_importances + np.std(
        #                 [tree.feature_importances_ for tree in
        #                     model.model.estimators_],
        #                 axis=0)

        #         sorted_features = list(np.array(features)[
        #                                     (-all_feature_importances).argsort()])
        #     else:
        #         sorted_features = []
        #         self.algo.Error("Feature Optimization numbers don't line up!")

        # selected_features = sorted_features[:num_features]

        return sorted(selected_features)
#region imports
from AlgorithmImports import *
#endregion
import talib
from talib import func
import numpy as np
import pandas as pd

#
# This helper class allows us to easily add features to our dataset
# add_features(df, ['EMA_7'])
#
# Other examples
# EMA_7_28 gives you the ratio of these two EMA
# EMA_7_28_diff gives you the difference of the current ratio and the last ratio for those two EMA
#

def ichimoku_a(high, low, n1 = 9, n2 = 26, n3 = 52):
    conv = 0.5 * (high.rolling(n1, min_periods=0).max()
                  + low.rolling(n1, min_periods=0).min())
    base = 0.5 * (high.rolling(n2, min_periods=0).max()
                  + low.rolling(n2, min_periods=0).min())
    spana = 0.5 * (conv + base)
    return pd.Series(spana)

def ichimoku_b(high, low, n1 = 9, n2 = 26, n3 = 52):
    spanb = 0.5 * (high.rolling(n3, min_periods=0).max()
       + low.rolling(n3, min_periods=0).min())
    return pd.Series(spanb)

def obv_rolling_percent(close, volume, n, fillna=False):
    df = pd.DataFrame([close, volume]).transpose()
    df['OBV'] = 0
    c1 = close < close.shift(1)
    c2 = close > close.shift(1)
    if c1.any():
        df.loc[c1, 'OBV'] = - volume
    if c2.any():
        df.loc[c2, 'OBV'] = volume
    obv = df['OBV'].rolling(n).sum() / df[volume.name].rolling(n).sum()
    if fillna:
        obv = obv.replace([np.inf, -np.inf], np.nan).fillna(0)
    return pd.Series(obv, name='obv')

def kst(close, r1 = 3, r2 = 7, r3 = 14, r4 = 28, n1 = 10, n2 = 3, n3 = 7, n4 = 14):
    rocma1 = ((close - close.shift(r1))
            / close.shift(r1)).rolling(n1, min_periods=0).mean()
    rocma2 = ((close - close.shift(r2))
              / close.shift(r2)).rolling(n2, min_periods=0).mean()
    rocma3 = ((close - close.shift(r3))
              / close.shift(r3)).rolling(n3, min_periods=0).mean()
    rocma4 = ((close - close.shift(r4))
              / close.shift(r4)).rolling(n4, min_periods=0).mean()
    return 100 * (rocma1 + 2 * rocma2 + 3 * rocma3 + 4 * rocma4)
    
def kst_sig(close, r1 = 3, r2 = 7, r3 = 14, r4 = 28, n1 = 10, n2 = 3, n3 = 7, n4 = 14, nsig = 6):
    kst_val = kst(clse, r1, r2, r3, r4, n1, n2, n3, n4)
    kstsig = kst_val.rolling(nsig, minperiods=0).mean()
    return kstsig

def check_feature_cache(cache, name, f, args):
    if not name in cache:
        cache[name] = f(*args)
    return cache[name]

def add_features(df, features, close="close", high="high", low="low", volume="volume"):

    fmap = {'MFI':'money_flow_index','ICHA':'ichimoku_a','ICHB':'ichimoku_b','BOLLH':'bollinger_hband', \
            'BOLLL':'bollinger_lband','KCC':'keltner_channel_central','NVI':'negative_volume_index', \
            'OBVP' : 'obv_rolling_percent', 'KST' : 'kst', 'KST_SIG' : 'kst_sig'}

    # others = ['VIX']
    others = []


    cache = {}


    for feature in features:
        # parse string.  Style is func_period1_period2:COL=ColumnName1 (column name optional)

        col = None
        col_idx = feature.find(':')
        if col_idx > -1:
            col = feature[col_idx+1:]
            feature = feature[0:col_idx]

        p = feature.split('_')
        if not col is None:
            feature = feature + "_" + col

        fname = p[0].upper()

        # If DM, DI, or HT function will have underscore in name, need to add suffix back and shift params back
        if len(p) > 1 and (p[1] in ['DM','DI'] or p[0] in ['HT']):
            fname += '_' + p[1]
            for i in range(2,len(p)):
                p[i-1] = p[i]
            del p[-1]

        p1 = p[1].upper() if len(p) > 1 else None
        p2 = p[2].upper() if len(p) > 2 else None
        p3 = p[3].upper() if len(p) > 3 else None

        if fname in fmap:
            if fmap[fname].find('.') > -1:
                s = fmap[fname].split('.')
                cls = s[0]
                f = getattr(globals()[cls], s[1])
            else:
                f = globals()[fmap[fname].lower()]
        elif fname in talib.__TA_FUNCTION_NAMES__:
            f = getattr(func, fname)
        elif fname.lower() in globals():
            f = globals()[fname.lower()]
        elif fname not in others:
            raise Exception(f'Could not find function. fname: {fname} feature: {feature}')
            # pass


        if fname.endswith('MA') or fname == 'T3':
            args = [df[close], int(p1)]
            if p2 is None:
                df[feature] = (check_feature_cache(cache, feature, f, args ))
            elif p2 == 'DIFF':
                ma1 = check_feature_cache(cache, fname + '_' + p1, f, args)
                df[feature] = ma1.pct_change()
                p2 = None # So it doesn't get diffed at end of method
            else:
                ma1 = check_feature_cache(cache, fname + '_' + p1, f, args)
                args = [df[close], int(p2)]
                ma2 = check_feature_cache(cache, fname + '_' + p2, f, args)
                df[feature] = (ma1 - ma2) / ma1
                df[feature].replace([np.inf, -np.inf], 0, inplace=True)


        elif fname in ['CMO','TRIX','ROCP','ROCR100','ROC','BOLLH','BOLLL', 'RSI','MOM']:
            df[feature] = f(df[close], int(p1))


        elif fname in ['MINUS_DM', 'PLUS_DM']:
            df[feature] = f(df[high], df[low], int(p1))

        elif fname in ['ADX','ATR','KCC','MINUS_DI','PLUS_DI','WILLR']:
            try:
                if df[close].isnull().all():
                    df[feature] = np.nan
                elif p2 is None or p2.upper() == 'DIFF':
                    df[feature] = f(df[high], df[low], df[close], int(p1))
                    # Change all to percent, except WILLR
                    if not fname in ['WILLR','ADX']:
                        df[feature] = df[feature]/df[close]
                else:
                    #params = {'close' : df[close], 'high' : df[high],'low' : df[low], 'timeperiod' : int(p1)}
                    args = [df[high], df[low], df[close], int(p1)]
                    f1 = check_feature_cache(cache, fname + '_' + p1, f, args)
                    args = [df[high], df[low], df[close], int(p2)]
                    f2 = check_feature_cache(cache, fname + '_' + p2, f, args)
                    df[feature] = (f1-f2)/f1
                    df[feature].replace([np.inf, -np.inf], 0, inplace=True)
            except Exception as ex:
                if str(ex) == 'inputs are all NaN':
                    df[feature] = np.nan
                else:
                    raise


        elif fname in ['MFI']:
            df[feature] = f(df[high], df[low], df[close], df[volume], int(p1))

        elif fname in ['MACD', 'PPO', 'TSI']:
             df[feature] = f(df[close], int(p1), int(p2))

        elif fname in ['ICHA', 'ICHB', 'AO']:
            # Normalize
            df[feature] = f(df[high], df[low], int(p1), int(p2))
#             if fname.startswith('ICH'):
#                 df[feature] = df[feature]/ df[close]

        elif fname in ['NVI']:
            df[feature] = f(df[close], df[volume])

        elif fname in ['SAR', 'SAREXT']:
            # Normalize
            df[feature] = f(df[high], df[low]) #/ df[close]

        elif fname == 'KST':
            df[feature] = f(df[close], r1=10, r2=15, r3=20, r4=30, n1=10, n2=10, n3=10, n4=15)

        elif fname == 'KST_SIG':
            df[feature] = f(df[close], r1=10, r2=15, r3=20, r4=30, n1=10, n2=10, n3=10, n4=15, nsig=9)

        elif fname == 'AROON':
            df[feature] = f(df[high], df[low], int(p1))[int(p2)-1]

        elif fname == 'ULTOSC':
            df[feature] = f(df[high], df[low], df[close])

        elif fname in ['OBVP']:
            df[feature] = f(df[close],df[volume],int(p1))

        elif fname in ['OBTP']:
            df[feature] = f(df[close],df["Trades"],int(p1))

        elif fname in ['HT_DCPERIOD','HT_DCPHASE','HT_PHASOR','HT_SINE', 'HT_TRENDMODE','STOCHRSI' ]:
            df[feature] = f(df[close])

        elif fname not in others:
            raise Exception('Feature not found: ' + feature + ' ' + fname )
            # pass

        # Difference those that are 1 period diffs
        if p3 == 'DIFF' or p2 == 'DIFF':
            df[feature] = df[feature].diff()


    return df
    
def get_exhaustive_ma_features_list():

    features = []
    periods = [7, 14, 28, 42, 70]

    mas = ["SMA", "DEMA", "KAMA", "EMA", "TEMA", "TRIMA", "WMA"]
    # left out: "T3"
    for p in periods:
        for ma in mas:
            features.append(ma + "_" + str(p))

    for p1 in periods:
        for p2 in periods:
            if p2 <= p1:
                continue

            for ma in mas:
                ma1 = ma + str(p1)
                ma2 = ma + str(p2)
                features.append(ma + "_" + str(p1) + "_" + str(p2))
                features.append(features[-1] + "_diff")

    return features

def get_exhaustive_features_list(diffs=True):

    features = get_exhaustive_ma_features_list()

    periods = [3,7,14,20,30]
    band_periods = [7,14,21,28]
    hi_lo_periods = [[4,9],[7,14],[10,21],[12,26]]

    # pfs = ['CMO','MINUS_DI','MINUS_DM','PLUS_DI','PLUS_DM','ROCP','ATR','ADX',
    #                    'TRIX','WILLR']
    pfs = ['CMO','MINUS_DI','MINUS_DM','PLUS_DI','PLUS_DM','ROCP','ATR','ADX',
                       'TRIX','WILLR']
    # Left out: 'MOM','RSI', 'VIN', 'VIP', 'ROC', 'ROCR', 'OBVM', 'EOM', 'DPI', 'STOCH', 'STOCH_SIG', 'FI'
    for p in periods:

        features.append('AROON_' + str(p) + '_1')
        features.append('AROON_' + str(p) + '_2')
        for pf in pfs:
            if pf == 'ADX' and p == 3:
                continue
            features.append(pf + '_' + str(p))
            if diffs:
                features.append(features[-1] + "_diff")
    if diffs:
        for p1 in periods:
            for p2 in periods:
                if p2 <= p1:
                    continue

                for pf in pfs:
                    pf1 = pf + str(p1)
                    pf2 = pf + str(p2)
                    features.append(pf + "_" + str(p1) + "_" + str(p2))
                    features.append(features[-1] + "_diff")


    hlfs = ['ICHA','ICHB']
    # Exclude PPO, same as our MA setups
    # hi lo Indicators
    for hl in hi_lo_periods:
        for hlf in hlfs:
            features.append(hlf + '_' + str(hl[0]) + '_' + str(hl[1]))

    # other indicators
    otfs = ['SAR','SAREXT','HT_DCPERIOD','ULTOSC','OBVP_10','OBVP_20','OBVP_40','OBVP_80']
    for otf in otfs:
        features.append(otf)

    return features
#region imports
from AlgorithmImports import *
#endregion

class Fed:

    FED = ['FED/SUBLPDMHS_XWB_N_Q', 'FED/SUBLPDMHD_XWB_N_Q', 'FED/SUBLPDMBS_XWB_N_Q', 'FED/SUBLPDMBD_XWB_N_Q', 'FED/SUBLPDMOS_XWB_N_Q', 'FED/SUBLPDMOD_XWB_N_Q', 'FED/SUBLPDMCO_N_Q', 'FED/SUBLPDCIRTSV_LG_N_Q', 'FED/SUBLPDCIRTSV_OTH_N_Q', 'FED/SUBLPDCIRTSN_LG_N_Q', 'FED/SUBLPDCIRTSN_OTH_N_Q', 'FED/SUBLPDCIRTRN_OTH_N_Q', 'FED/SUBLPDCIRTSS_OTH_N_Q', 'FED/SUBLPDCIRTSS_LG_N_Q', 'FED/SUBLPDCIRTRS_OTH_N_Q', 'FED/SUBLPDCIRTRV_OTH_N_Q', 'FED/SUBLPDCIRTRS_LG_N_Q', 'FED/SUBLPDCIRTRV_LG_N_Q', 'FED/SUBLPDCIRTRN_LG_N_Q', 'FED/SUBLPDCIRTOV_OTH_N_Q', 'FED/SUBLPDCIRTOS_OTH_N_Q', 'FED/SUBLPDCIRTOV_LG_N_Q', 'FED/SUBLPDCIRTOS_LG_N_Q', 'FED/SUBLPDCIRTLV_OTH_N_Q', 'FED/SUBLPDCIRTON_OTH_N_Q', 'FED/SUBLPDCIRTLN_LG_N_Q', 'FED/SUBLPDCIRTON_LG_N_Q', 'FED/SUBLPDCIRTLS_OTH_N_Q', 'FED/SUBLPDCIRTLS_LG_N_Q', 'FED/SUBLPDCIRTLV_LG_N_Q', 'FED/SUBLPDCIRTLN_OTH_N_Q', 'FED/SUBLPDCIRTIV_OTH_N_Q', 'FED/SUBLPDCIRTIN_LG_N_Q', 'FED/SUBLPDCIRTIS_OTH_N_Q', 'FED/SUBLPDCIRTIV_LG_N_Q', 'FED/SUBLPDCIRTIS_LG_N_Q', 'FED/SUBLPDCIRTEV_LG_N_Q', 'FED/SUBLPDCIRTES_OTH_N_Q', 'FED/SUBLPDCIRTIN_OTH_N_Q', 'FED/SUBLPDCIRTEV_OTH_N_Q', 'FED/SUBLPDCIRTES_LG_N_Q', 'FED/SUBLPDCIRTEN_OTH_N_Q', 'FED/SUBLPDCIRTEN_LG_N_Q', 'FED/SUBLPDCIRTCV_OTH_N_Q', 'FED/SUBLPDCIRESS_OTH_N_Q', 'FED/SUBLPDCIRESV_LG_N_Q', 'FED/SUBLPDCIRTCV_LG_N_Q', 'FED/SUBLPDCIRTCS_OTH_N_Q', 'FED/SUBLPDCIRTCN_OTH_N_Q', 'FED/SUBLPDCIRTCS_LG_N_Q', 'FED/SUBLPDCIRTCN_LG_N_Q', 'FED/SUBLPDCIRESV_OTH_N_Q', 'FED/SUBLPDCIRESS_LG_N_Q', 'FED/SUBLPDCIRERV_LG_N_Q', 'FED/SUBLPDCIRESN_OTH_N_Q', 'FED/SUBLPDCIRESN_LG_N_Q', 'FED/SUBLPDCIRERN_OTH_N_Q', 'FED/SUBLPDCIRERV_OTH_N_Q', 'FED/SUBLPDCIRERS_OTH_N_Q', 'FED/SUBLPDCIRERS_LG_N_Q', 'FED/SUBLPDCIREOS_LG_N_Q', 'FED/SUBLPDCIRERN_LG_N_Q', 'FED/SUBLPDCIREOV_OTH_N_Q', 'FED/SUBLPDCIREOS_OTH_N_Q', 'FED/SUBLPDCIRELS_OTH_N_Q', 'FED/SUBLPDCIREOV_LG_N_Q', 'FED/SUBLPDCIRELV_OTH_N_Q', 'FED/SUBLPDCIRELS_LG_N_Q', 'FED/SUBLPDCIRELV_LG_N_Q', 'FED/SUBLPDCIREON_OTH_N_Q', 'FED/SUBLPDCIREON_LG_N_Q', 'FED/SUBLPDCIRELN_LG_N_Q', 'FED/SUBLPDCIREIV_OTH_N_Q', 'FED/SUBLPDCIRELN_OTH_N_Q', 'FED/SUBLPDCIREIV_LG_N_Q', 'FED/SUBLPDCIREIS_OTH_N_Q', 'FED/SUBLPDCIREIS_LG_N_Q', 'FED/SUBLPDCIREEV_OTH_N_Q', 'FED/SUBLPDCIREIN_OTH_N_Q', 'FED/SUBLPDCIREIN_LG_N_Q', 'FED/SUBLPDCIREEN_LG_N_Q', 'FED/SUBLPDCIREEV_LG_N_Q', 'FED/SUBLPDCIREEN_OTH_N_Q', 'FED/SUBLPDCIREES_LG_N_Q', 'FED/SUBLPDCIREES_OTH_N_Q', 'FED/SUBLPDCIRECV_LG_N_Q', 'FED/SUBLPDCIRECS_OTH_N_Q', 'FED/SUBLPDCIRECV_OTH_N_Q', 'FED/SUBLPDCIRECS_LG_N_Q', 'FED/SUBLPDCIRECN_OTH_N_Q', 'FED/SUBLPDCIRECN_LG_N_Q', 'FED/SUBLPDCIRWSS_OTH_N_Q', 'FED/SUBLPDCIRWSV_LG_N_Q', 'FED/SUBLPDCIRWSV_OTH_N_Q', 'FED/SUBLPDCIRWSN_LG_N_Q', 'FED/SUBLPDCIRWSS_LG_N_Q', 'FED/SUBLPDCIRWSN_OTH_N_Q', 'FED/SUBLPDCIRWPV_LG_N_Q', 'FED/SUBLPDCIRWPV_OTH_N_Q', 'FED/SUBLPDCIRWPS_LG_N_Q', 'FED/SUBLPDCIRWPN_LG_N_Q', 'FED/SUBLPDCIRWMV_OTH_N_Q', 'FED/SUBLPDCIRWPS_OTH_N_Q', 'FED/SUBLPDCIRWPN_OTH_N_Q', 'FED/SUBLPDCIRWMS_LG_N_Q', 'FED/SUBLPDCIRWMV_LG_N_Q', 'FED/SUBLPDCIRWMS_OTH_N_Q', 'FED/SUBLPDCIRWMN_OTH_N_Q', 'FED/SUBLPDCIRWMN_LG_N_Q', 'FED/SUBLPDCIRWIS_LG_N_Q', 'FED/SUBLPDCIRWIS_OTH_N_Q', 'FED/SUBLPDCIRWIV_LG_N_Q', 'FED/SUBLPDCIRWIV_OTH_N_Q', 'FED/SUBLPDCIRWIN_OTH_N_Q', 'FED/SUBLPDCIRWIN_LG_N_Q', 'FED/SUBLPDCIRWGS_LG_N_Q', 'FED/SUBLPDCIRWGV_OTH_N_Q', 'FED/SUBLPDCIRWGN_OTH_N_Q', 'FED/SUBLPDCIRWGV_LG_N_Q', 'FED/SUBLPDCIRWGS_OTH_N_Q', 'FED/SUBLPDCIRWES_LG_N_Q', 'FED/SUBLPDCIRWGN_LG_N_Q', 'FED/SUBLPDCIRWEV_OTH_N_Q', 'FED/SUBLPDCIRWEV_LG_N_Q', 'FED/SUBLPDCIRWEN_OTH_N_Q', 'FED/SUBLPDCIRWAV_OTH_N_Q', 'FED/SUBLPDCIRWAS_OTH_N_Q', 'FED/SUBLPDCIRWEN_LG_N_Q', 'FED/SUBLPDCIRWES_OTH_N_Q', 'FED/SUBLPDCIRWAN_LG_N_Q', 'FED/SUBLPDCIRWAN_OTH_N_Q', 'FED/SUBLPDCIRSSS_OTH_N_Q', 'FED/SUBLPDCIRWAS_LG_N_Q', 'FED/SUBLPDCIRWAV_LG_N_Q', 'FED/SUBLPDCIRSSV_OTH_N_Q', 'FED/SUBLPDCIRSSV_LG_N_Q', 'FED/SUBLPDCIRSSN_OTH_N_Q', 'FED/SUBLPDCIRSSN_LG_N_Q', 'FED/SUBLPDCIRSSS_LG_N_Q', 'FED/SUBLPDCIRSPS_OTH_N_Q', 'FED/SUBLPDCIRSPS_LG_N_Q', 'FED/SUBLPDCIRSPV_LG_N_Q', 'FED/SUBLPDCIRSPV_OTH_N_Q', 'FED/SUBLPDCIRSMV_OTH_N_Q', 'FED/SUBLPDCIRSMV_LG_N_Q', 'FED/SUBLPDCIRSPN_OTH_N_Q', 'FED/SUBLPDCIRSMS_LG_N_Q', 'FED/SUBLPDCIRSMN_LG_N_Q', 'FED/SUBLPDCIRSPN_LG_N_Q', 'FED/SUBLPDCIRSMS_OTH_N_Q', 'FED/SUBLPDCIRSIV_LG_N_Q', 'FED/SUBLPDCIRSIV_OTH_N_Q', 'FED/SUBLPDCIRSMN_OTH_N_Q', 'FED/SUBLPDCIRSIS_OTH_N_Q', 'FED/SUBLPDCIRSIS_LG_N_Q', 'FED/SUBLPDCIRSIN_LG_N_Q', 'FED/SUBLPDCIRSGV_LG_N_Q', 'FED/SUBLPDCIRSIN_OTH_N_Q', 'FED/SUBLPDCIRSGS_OTH_N_Q', 'FED/SUBLPDCIRSGS_LG_N_Q', 'FED/SUBLPDCIRSGV_OTH_N_Q', 'FED/SUBLPDCIRSGN_LG_N_Q', 'FED/SUBLPDCIRSEV_LG_N_Q', 'FED/SUBLPDCIRSEN_OTH_N_Q', 'FED/SUBLPDCIRSES_OTH_N_Q', 'FED/SUBLPDCIRSEV_OTH_N_Q', 'FED/SUBLPDCIRSES_LG_N_Q', 'FED/SUBLPDCIRSGN_OTH_N_Q', 'FED/SUBLPDCIRSEN_LG_N_Q', 'FED/SUBLPDCIRSAS_OTH_N_Q', 'FED/SUBLPDCIRSAV_OTH_N_Q', 'FED/SUBLPDCIRSAV_LG_N_Q', 'FED/SUBLPDCIRSAS_LG_N_Q', 'FED/SUBLPDCIRSAN_OTH_N_Q', 'FED/SUBLPDCIRSAN_LG_N_Q', 'FED/SUBLPDCIRTAS_LG_N_Q', 'FED/SUBLPDCIRTAN_LG_N_Q', 'FED/SUBLPDCIRTAN_OTH_N_Q', 'FED/SUBLPDCIRTAV_OTH_N_Q', 'FED/SUBLPDCIRTAS_OTH_N_Q', 'FED/SUBLPDCIRTAV_LG_N_Q', 'FED/SUBLPDCIREAN_LG_N_Q', 'FED/SUBLPDCIREAV_OTH_N_Q', 'FED/SUBLPDCIREAV_LG_N_Q', 'FED/SUBLPDCIREAN_OTH_N_Q', 'FED/SUBLPDCIREAS_OTH_N_Q', 'FED/SUBLPDCIREAS_LG_N_Q', 'FED/SUBLPDRCSC_LG_N_Q', 'FED/SUBLPDRCSM_OTH_N_Q', 'FED/SUBLPDRCSM_LG_N_Q', 'FED/SUBLPDRCSN_LG_N_Q', 'FED/SUBLPDRCSN_OTH_N_Q', 'FED/SUBLPDRCSC_OTH_N_Q', 'FED/SUBLPDRCDC_OTH_N_Q', 'FED/SUBLPDRCDN_OTH_N_Q', 'FED/SUBLPDRCDN_LG_N_Q', 'FED/SUBLPDRCDC_LG_N_Q', 'FED/SUBLPDHMSS_OTH_N_Q', 'FED/SUBLPDHMSK_OTH_N_Q', 'FED/SUBLPDRCDM_OTH_N_Q', 'FED/SUBLPDHMSM_OTH_N_Q', 'FED/SUBLPDHMSK_LG_N_Q', 'FED/SUBLPDRCDM_LG_N_Q', 'FED/SUBLPDHMSJ_OTH_N_Q', 'FED/SUBLPDHMSM_LG_N_Q', 'FED/SUBLPDHMSJ_LG_N_Q', 'FED/SUBLPDHMSQ_LG_N_Q', 'FED/SUBLPDHMSQ_OTH_N_Q', 'FED/SUBLPDHMSG_OTH_N_Q', 'FED/SUBLPDHMSG_LG_N_Q', 'FED/SUBLPDHMSE_OTH_N_Q', 'FED/SUBLPDHMSE_LG_N_Q', 'FED/SUBLPDHMDQ_LG_N_Q', 'FED/SUBLPDHMDM_OTH_N_Q', 'FED/SUBLPDHMDS_OTH_N_Q', 'FED/SUBLPDHMDK_OTH_N_Q', 'FED/SUBLPDHMDM_LG_N_Q', 'FED/SUBLPDHMDJ_LG_N_Q', 'FED/SUBLPDHMDK_LG_N_Q', 'FED/SUBLPDHMDQ_OTH_N_Q', 'FED/SUBLPDHMDJ_OTH_N_Q', 'FED/SUBLPDHMDG_LG_N_Q', 'FED/SUBLPDCLHD_OTH_N_Q', 'FED/SUBLPDHMDG_OTH_N_Q', 'FED/SUBLPDHMDE_OTH_N_Q', 'FED/SUBLPDCLHS_OTH_N_Q', 'FED/SUBLPDHMDE_LG_N_Q', 'FED/SUBLPDCLHS_LG_N_Q', 'FED/SUBLPDCLXTS_OTH_N_Q', 'FED/SUBLPDCLHD_LG_N_Q', 'FED/SUBLPDCLXTR_LG_N_Q', 'FED/SUBLPDCLXTM_OTH_N_Q', 'FED/SUBLPDCLXTS_LG_N_Q', 'FED/SUBLPDCLXTR_OTH_N_Q', 'FED/SUBLPDCLXTM_LG_N_Q', 'FED/SUBLPDCLXTE_OTH_N_Q', 'FED/SUBLPDCLXTE_LG_N_Q', 'FED/SUBLPDCLXD_OTH_N_Q', 'FED/SUBLPDCLXS_OTH_N_Q', 'FED/SUBLPDCLXD_LG_N_Q', 'FED/SUBLPDCLXS_LG_N_Q', 'FED/SUBLPDCLXTD_OTH_N_Q', 'FED/SUBLPDCLXTD_LG_N_Q', 'FED/SUBLPDCLIW_OTH_N_Q', 'FED/SUBLPDCLIW_LG_N_Q', 'FED/SUBLPDCLCTS_OTH_N_Q', 'FED/SUBLPDCLCTS_LG_N_Q', 'FED/SUBLPDCLCTR_OTH_N_Q', 'FED/SUBLPDCLCTE_LG_N_Q', 'FED/SUBLPDCLCTM_LG_N_Q', 'FED/SUBLPDCLCTM_OTH_N_Q', 'FED/SUBLPDCLCTR_LG_N_Q', 'FED/SUBLPDCLCTE_OTH_N_Q', 'FED/SUBLPDCLCTC_OTH_N_Q', 'FED/SUBLPDCLCTC_LG_N_Q', 'FED/SUBLPDCLCD_OTH_N_Q', 'FED/SUBLPDCLCD_LG_N_Q', 'FED/SUBLPDCLATR_OTH_N_Q', 'FED/SUBLPDCLCS_LG_N_Q', 'FED/SUBLPDCLCS_OTH_N_Q', 'FED/SUBLPDCLATS_LG_N_Q', 'FED/SUBLPDCLATS_OTH_N_Q', 'FED/SUBLPDCLATM_LG_N_Q', 'FED/SUBLPDCLATM_OTH_N_Q', 'FED/SUBLPDCLATR_LG_N_Q', 'FED/SUBLPDCLATE_OTH_N_Q', 'FED/SUBLPDCLATD_OTH_N_Q', 'FED/SUBLPDCLATE_LG_N_Q', 'FED/SUBLPDCLATD_LG_N_Q', 'FED/SUBLPDCLAS_LG_N_Q', 'FED/SUBLPDCLAD_OTH_N_Q', 'FED/SUBLPDCLAD_LG_N_Q', 'FED/SUBLPDCLAS_OTH_N_Q', 'FED/SUBLPDCISTM_LG_N_Q', 'FED/SUBLPDCISTR_OTH_N_Q', 'FED/SUBLPDCISTS_OTH_N_Q', 'FED/SUBLPDCISTR_LG_N_Q', 'FED/SUBLPDCISTS_LG_N_Q', 'FED/SUBLPDCISTM_OTH_N_Q', 'FED/SUBLPDCISTQ_LG_N_Q', 'FED/SUBLPDCISTQ_OTH_N_Q', 'FED/SUBLPDCISTL_OTH_N_Q', 'FED/SUBLPDCISTC_LG_N_Q', 'FED/SUBLPDCISTL_LG_N_Q', 'FED/SUBLPDCISTC_OTH_N_Q', 'FED/SUBLPDCISS_LG_N_Q', 'FED/SUBLPDCISD_OTH_N_Q', 'FED/SUBLPDCISS_OTH_N_Q', 'FED/SUBLPDCILTR_LG_N_Q', 'FED/SUBLPDCISD_LG_N_Q', 'FED/SUBLPDCILTM_OTH_N_Q', 'FED/SUBLPDCILTS_LG_N_Q', 'FED/SUBLPDCILTR_OTH_N_Q', 'FED/SUBLPDCILTS_OTH_N_Q', 'FED/SUBLPDCILTL_LG_N_Q', 'FED/SUBLPDCILTM_LG_N_Q', 'FED/SUBLPDCILTQ_OTH_N_Q', 'FED/SUBLPDCILTL_OTH_N_Q', 'FED/SUBLPDCILTC_OTH_N_Q', 'FED/SUBLPDCILS_LG_N_Q', 'FED/SUBLPDCILTQ_LG_N_Q', 'FED/SUBLPDCILS_OTH_N_Q', 'FED/SUBLPDCILTC_LG_N_Q', 'FED/SUBLPDCILD_OTH_N_Q', 'FED/SUBLPDCILD_LG_N_Q', 'FED/SUBLPDCISTA_OTH_N_Q', 'FED/SUBLPDCISTF_OTH_N_Q', 'FED/SUBLPDCISTF_LG_N_Q', 'FED/SUBLPDCILTF_OTH_N_Q', 'FED/SUBLPDCILTA_LG_N_Q', 'FED/SUBLPDCISTA_LG_N_Q', 'FED/SUBLPDCILTF_LG_N_Q', 'FED/SUBLPDCIAI_LG_N_Q', 'FED/SUBLPDCIAI_OTH_N_Q', 'FED/SUBLPDCILTA_OTH_N_Q', 'FED/SUBLPDCIRTSN_N_Q', 'FED/SUBLPDCIRTSV_N_Q', 'FED/SUBLPDCIRTSS_N_Q', 'FED/SUBLPDCIRTRN_N_Q', 'FED/SUBLPDCIRTRV_N_Q', 'FED/SUBLPDCIRTOS_N_Q', 'FED/SUBLPDCIRTON_N_Q', 'FED/SUBLPDCIRTRS_N_Q', 'FED/SUBLPDCIRTLS_N_Q', 'FED/SUBLPDCIRTOV_N_Q', 'FED/SUBLPDCIRTLV_N_Q', 'FED/SUBLPDCIRTLN_N_Q', 'FED/SUBLPDCIRTIS_N_Q', 'FED/SUBLPDCIRTIV_N_Q', 'FED/SUBLPDCIRTIN_N_Q', 'FED/SUBLPDCIRTEV_N_Q', 'FED/SUBLPDCIRTEN_N_Q', 'FED/SUBLPDCIRTES_N_Q', 'FED/SUBLPDCIRTCV_N_Q', 'FED/SUBLPDCIRTCS_N_Q', 'FED/SUBLPDCIRESV_N_Q', 'FED/SUBLPDCIRTCN_N_Q', 'FED/SUBLPDCIRESS_N_Q', 'FED/SUBLPDCIRESN_N_Q', 'FED/SUBLPDCIREON_N_Q', 'FED/SUBLPDCIRERV_N_Q', 'FED/SUBLPDCIRERS_N_Q', 'FED/SUBLPDCIRERN_N_Q', 'FED/SUBLPDCIREOV_N_Q', 'FED/SUBLPDCIREOS_N_Q', 'FED/SUBLPDCIRELV_N_Q', 'FED/SUBLPDCIRELS_N_Q', 'FED/SUBLPDCIRELN_N_Q', 'FED/SUBLPDCIREIN_N_Q', 'FED/SUBLPDCIREIV_N_Q', 'FED/SUBLPDCIREIS_N_Q', 'FED/SUBLPDCIREEN_N_Q', 'FED/SUBLPDCIREEV_N_Q', 'FED/SUBLPDCIREES_N_Q', 'FED/SUBLPDCIRECV_N_Q', 'FED/SUBLPDCIRECS_N_Q', 'FED/SUBLPDCIRECN_N_Q', 'FED/SUBLPDCIRWSN_N_Q', 'FED/SUBLPDCIRWSV_N_Q', 'FED/SUBLPDCIRWSS_N_Q', 'FED/SUBLPDCIRWPV_N_Q', 'FED/SUBLPDCIRWPS_N_Q', 'FED/SUBLPDCIRWPN_N_Q', 'FED/SUBLPDCIRWMV_N_Q', 'FED/SUBLPDCIRWMS_N_Q', 'FED/SUBLPDCIRWMN_N_Q', 'FED/SUBLPDCIRWIV_N_Q', 'FED/SUBLPDCIRWGV_N_Q', 'FED/SUBLPDCIRWIN_N_Q', 'FED/SUBLPDCIRWIS_N_Q', 'FED/SUBLPDCIRWES_N_Q', 'FED/SUBLPDCIRWGN_N_Q', 'FED/SUBLPDCIRWEV_N_Q', 'FED/SUBLPDCIRWGS_N_Q', 'FED/SUBLPDCIRWAV_N_Q', 'FED/SUBLPDCIRWEN_N_Q', 'FED/SUBLPDCIRWAS_N_Q', 'FED/SUBLPDCIRSSN_N_Q', 'FED/SUBLPDCIRWAN_N_Q', 'FED/SUBLPDCIRSSV_N_Q', 'FED/SUBLPDCIRSSS_N_Q', 'FED/SUBLPDCIRSPS_N_Q', 'FED/SUBLPDCIRSPV_N_Q', 'FED/SUBLPDCIRSMV_N_Q', 'FED/SUBLPDCIRSMS_N_Q', 'FED/SUBLPDCIRSPN_N_Q', 'FED/SUBLPDCIRSGS_N_Q', 'FED/SUBLPDCIRSIS_N_Q', 'FED/SUBLPDCIRSMN_N_Q', 'FED/SUBLPDCIRSIV_N_Q', 'FED/SUBLPDCIRSIN_N_Q', 'FED/SUBLPDCIRSGV_N_Q', 'FED/SUBLPDCIRSEV_N_Q', 'FED/SUBLPDCIRSGN_N_Q', 'FED/SUBLPDCIRSES_N_Q', 'FED/SUBLPDCIRSEN_N_Q', 'FED/SUBLPDCIRSAV_N_Q', 'FED/SUBLPDCIRSAS_N_Q', 'FED/SUBLPDCIRSAN_N_Q', 'FED/SUBLPFCIREOS_N_Q', 'FED/SUBLPFCIREOV_N_Q', 'FED/SUBLPFCIREON_N_Q', 'FED/SUBLPDCIRTAV_N_Q', 'FED/SUBLPDCIRTAS_N_Q', 'FED/SUBLPDCIRTAN_N_Q', 'FED/SUBLPDCIREAV_N_Q', 'FED/SUBLPDCIREAS_N_Q', 'FED/SUBLPFRCD_N_Q', 'FED/SUBLPDCIREAN_N_Q', 'FED/SUBLPFRCS_N_Q', 'FED/SUBLPFCITS_N_Q', 'FED/SUBLPFCITQ_N_Q', 'FED/SUBLPFCITC_N_Q', 'FED/SUBLPFCID_N_Q', 'FED/SUBLPFCITR_N_Q', 'FED/SUBLPFCITM_N_Q', 'FED/SUBLPFCITL_N_Q', 'FED/SUBLPFCIS_N_Q', 'FED/SUBLPDRCSM_N_Q', 'FED/SUBLPDRCSN_N_Q', 'FED/SUBLPDRCSC_N_Q', 'FED/SUBLPDRCDN_N_Q', 'FED/SUBLPDRCDC_N_Q', 'FED/SUBLPDHMSM_N_Q', 'FED/SUBLPDRCDM_N_Q', 'FED/SUBLPDHMSS_N_Q', 'FED/SUBLPDHMSK_N_Q', 'FED/SUBLPDHMSJ_N_Q', 'FED/SUBLPDHMSQ_N_Q', 'FED/SUBLPDHMSG_N_Q', 'FED/SUBLPDHMSE_N_Q', 'FED/SUBLPDHMDS_N_Q', 'FED/SUBLPDHMDK_N_Q', 'FED/SUBLPDHMDM_N_Q', 'FED/SUBLPDHMDQ_N_Q', 'FED/SUBLPDHMDG_N_Q', 'FED/SUBLPDHMDJ_N_Q', 'FED/SUBLPDHMDE_N_Q', 'FED/SUBLPDCLHS_N_Q', 'FED/SUBLPDCLHD_N_Q', 'FED/SUBLPDCLXTM_N_Q', 'FED/SUBLPDCLXTD_N_Q', 'FED/SUBLPDCLXTS_N_Q', 'FED/SUBLPDCLXTR_N_Q', 'FED/SUBLPDCLXTE_N_Q', 'FED/SUBLPDCLXS_N_Q', 'FED/SUBLPDCLXD_N_Q', 'FED/SUBLPDCLIW_N_Q', 'FED/SUBLPDCLCTS_N_Q', 'FED/SUBLPDCLCTR_N_Q', 'FED/SUBLPDCLCTM_N_Q', 'FED/SUBLPDCLCTC_N_Q', 'FED/SUBLPDCLCS_N_Q', 'FED/SUBLPDCLCTE_N_Q', 'FED/SUBLPDCLCD_N_Q', 'FED/SUBLPDCLATS_N_Q', 'FED/SUBLPDCLATR_N_Q', 'FED/SUBLPDCLATM_N_Q', 'FED/SUBLPDCLATD_N_Q', 'FED/SUBLPDCLATE_N_Q', 'FED/SUBLPDCLAD_N_Q', 'FED/SUBLPDCLAS_N_Q', 'FED/SUBLPDCISTQ_N_Q', 'FED/SUBLPDCISTS_N_Q', 'FED/SUBLPDCISTC_N_Q', 'FED/SUBLPDCISTR_N_Q', 'FED/SUBLPDCISTL_N_Q', 'FED/SUBLPDCISTM_N_Q', 'FED/SUBLPDCILTS_N_Q', 'FED/SUBLPDCISS_N_Q', 'FED/SUBLPDCISD_N_Q', 'FED/SUBLPDCILTR_N_Q', 'FED/SUBLPDCILTL_N_Q', 'FED/SUBLPDCILTQ_N_Q', 'FED/SUBLPDCILTM_N_Q', 'FED/SUBLPDCILTC_N_Q', 'FED/SUBLPDCILD_N_Q', 'FED/SUBLPDCILS_N_Q', 'FED/SUBLPFCITA_N_Q', 'FED/SUBLPFCITF_N_Q', 'FED/SUBLPDCISTF_N_Q', 'FED/SUBLPDCISTA_N_Q', 'FED/SUBLPDCILTF_N_Q', 'FED/SUBLPDCILTA_N_Q', 'FED/SUBLPFCII_N_Q', 'FED/SUBLPDCIAI_N_Q', 'FED/RESPPALDMY01_N_WW', 'FED/RESPPALDOTAL2_N_WW', 'FED/RESPPALDOE_N_WW', 'FED/RESPPALDOD_N_WW', 'FED/RESPPALDOC2_N_WW', 'FED/RESPPALDOB_N_WW', 'FED/RESPPAATAL2LY01T05_N_WW', 'FED/RESPPAATAL2LY01_N_WW', 'FED/RESPPAATAL2LD16T90_N_WW', 'FED/RESPPAATAL2LD15_N_WW', 'FED/RESPPAATAL2L_N_WW', 'FED/RESPPAATAL2HC_N_WW', 'FED/RESPPAATAL2HA_N_WW', 'FED/RESPPAATAL2H_XCH52_N_WW', 'FED/RESPPAATAL2H_XCH1_N_WW', 'FED/RESPPAATAL2H_XAW_XCH52_N_WW', 'FED/RESPPAATAL2H_XAW_XCH1_N_WW', 'FED/RESPPAATAL2H_XAW_N_WW', 'FED/RESPPAATAL2H_N_WW', 'FED/RESPPAATAL2H_F12_N_WW', 'FED/RESPPAATAL2H_F11_N_WW', 'FED/RESPPAATAL2H_F10_N_WW', 'FED/RESPPAATAL2H_F09_N_WW', 'FED/RESPPAATAL2H_F08_N_WW', 'FED/RESPPAATAL2H_F07_N_WW', 'FED/RESPPAATAL2H_F06_N_WW', 'FED/RESPPAATAL2H_F05_N_WW', 'FED/RESPPAATAL2H_F04_N_WW', 'FED/RESPPAATAL2H_F03_N_WW', 'FED/RESPPAATAL2H_F02_N_WW', 'FED/RESPPAATAL2H_F01_N_WW', 'FED/RESPPAAEHC_N_WW', 'FED/RESPPAAEHA_N_WW', 'FED/RESPPAADHC_N_WW', 'FED/RESPPAADHA_N_WW', 'FED/RESPPAAC2HC_N_WW', 'FED/RESPPAAC2HA_N_WW', 'FED/RESPPAABHC_N_WW', 'FED/RESPPAABHA_N_WW', 'FED/RESPPAABH_XCH52_N_WW', 'FED/RESPPAABH_XCH1_N_WW', 'FED/RESPPAABH_XAW_XCH52_N_WW', 'FED/RESPPAABH_XAW_XCH1_N_WW', 'FED/RESPPAABH_XAW_N_WW', 'FED/RESPPAABH_N_WW', 'FED/RESPPAABH_F12_N_WW', 'FED/RESPPAABH_F11_N_WW', 'FED/RESPPAABH_F10_N_WW', 'FED/RESPPAABH_F09_N_WW', 'FED/RESPPAABH_F08_N_WW', 'FED/RESPPAABH_F07_N_WW', 'FED/RESPPAABH_F06_N_WW', 'FED/RESPPAABH_F05_N_WW', 'FED/RESPPAABH_F04_N_WW', 'FED/RESPPAABH_F03_N_WW', 'FED/RESPPAABH_F02_N_WW', 'FED/RESPPAABH_F01_N_WW', 'FED/RESPPAAEHLY01T05_N_WW', 'FED/RESPPAAEHLY01_N_WW', 'FED/RESPPAAEHLD16T90_N_WW', 'FED/RESPPAAEHLD15_N_WW', 'FED/RESPPAAEHL_N_WW', 'FED/RESPPAAEH_XCH52_N_WW', 'FED/RESPPAAEH_XCH1_N_WW', 'FED/RESPPAAEH_XAW_XCH52_N_WW', 'FED/RESPPAAEH_XAW_XCH1_N_WW', 'FED/RESPPAAEH_XAW_N_WW', 'FED/RESPPAAEH_N_WW', 'FED/RESPPAAEH_F12_N_WW', 'FED/RESPPAAEH_F11_N_WW', 'FED/RESPPAAEH_F10_N_WW', 'FED/RESPPAAEH_F09_N_WW', 'FED/RESPPAAEH_F08_N_WW', 'FED/RESPPAAEH_F07_N_WW', 'FED/RESPPAAEH_F06_N_WW', 'FED/RESPPAAEH_F05_N_WW', 'FED/RESPPAAEH_F04_N_WW', 'FED/RESPPAAEH_F03_N_WW', 'FED/RESPPAAEH_F02_N_WW', 'FED/RESPPAAEH_F01_N_WW', 'FED/RESPPAADHUY01T05_N_WW', 'FED/RESPPAADHUY01_N_WW', 'FED/RESPPAADHUD16T90_N_WW', 'FED/RESPPAADHUD15_N_WW', 'FED/RESPPAADHU_N_WW', 'FED/RESPPAADH_XCH52_N_WW', 'FED/RESPPAADH_XCH1_N_WW', 'FED/RESPPAADH_XAW_XCH52_N_WW', 'FED/RESPPAADH_XAW_XCH1_N_WW', 'FED/RESPPAADH_XAW_N_WW', 'FED/RESPPAADH_N_WW', 'FED/RESPPAADH_F12_N_WW', 'FED/RESPPAADH_F11_N_WW', 'FED/RESPPAADH_F10_N_WW', 'FED/RESPPAADH_F09_N_WW', 'FED/RESPPAADH_F08_N_WW', 'FED/RESPPAADH_F07_N_WW', 'FED/RESPPAADH_F06_N_WW', 'FED/RESPPAADH_F05_N_WW', 'FED/RESPPAADH_F04_N_WW', 'FED/RESPPAADH_F03_N_WW', 'FED/RESPPAADH_F02_N_WW', 'FED/RESPPAADH_F01_N_WW', 'FED/RESPPAAC2MBY01_N_WW', 'FED/RESPPAAC2MBD16T90_N_WW', 'FED/RESPPAAC2MBD15_N_WW', 'FED/RESPPAAC2MB_N_WW', 'FED/RESH4E_XCH52_N_WW', 'FED/RESH4E_XCH1_N_WW', 'FED/RESH4E_XAW_XCH52_N_WW', 'FED/RESH4E_XAW_XCH1_N_WW', 'FED/RESH4E_XAW_N_WW', 'FED/RESH4E_N_WW', 'FED/RESH4E_F12_N_WW', 'FED/RESH4E_F11_N_WW', 'FED/RESH4E_F10_N_WW', 'FED/RESH4E_F09_N_WW', 'FED/RESH4E_F08_N_WW', 'FED/RESH4E_F07_N_WW', 'FED/RESH4E_F06_N_WW', 'FED/RESH4E_F05_N_WW', 'FED/RESH4E_F04_N_WW', 'FED/RESH4E_F03_N_WW', 'FED/RESH4E_F02_N_WW', 'FED/RESH4E_F01_N_WW', 'FED/RESPPALDJ_XAW_XCH52_N_WW', 'FED/RESPPALDJ_XAW_XCH1_N_WW', 'FED/RESPPALDJ_XAW_N_WW', 'FED/RESPPALDJ_N_WW', 'FED/RESPPAAC2H_XCH52_N_WW', 'FED/RESPPAAC2H_XCH1_N_WW', 'FED/RESPPAAC2H_XAW_XCH52_N_WW', 'FED/RESPPAAC2H_XAW_XCH1_N_WW', 'FED/RESPPAAC2H_XAW_N_WW', 'FED/RESPPAAC2H_N_WW', 'FED/RESPPAAC2H_F12_N_WW', 'FED/RESPPAAC2H_F11_N_WW', 'FED/RESPPAAC2H_F10_N_WW', 'FED/RESPPAAC2H_F09_N_WW', 'FED/RESPPAAC2H_F08_N_WW', 'FED/RESPPAAC2H_F07_N_WW', 'FED/RESPPAAC2H_F06_N_WW', 'FED/RESPPAAC2H_F05_N_WW', 'FED/RESPPAAC2H_F04_N_WW', 'FED/RESPPAAC2H_F03_N_WW', 'FED/RESPPAAC2H_F02_N_WW', 'FED/RESPPAAC2H_F01_N_WW', 'FED/RESPPALGTRO_XAW_XCH52_N_WW', 'FED/RESPPALGTRO_XAW_XCH1_N_WW', 'FED/RESPPALGTRO_XAW_N_WW', 'FED/RESPPALGTRO_N_WW', 'FED/RESPPALGTRF_XAW_XCH52_N_WW', 'FED/RESPPALGTRF_XAW_XCH1_N_WW', 'FED/RESPPALGTRF_XAW_N_WW', 'FED/RESPPALGTRF_N_WW', 'FED/RESPPALGASMS_N_WW', 'FED/RESPPALGASMR_N_WW', 'FED/RESPPALDH_XAW_N_WW', 'FED/RESPPALDH_XAW_XCH52_N_WW', 'FED/RESPPALDH_XAW_XCH1_N_WW', 'FED/RESPPALDH_N_WW', 'FED/RESPPALDB_XAW_XCH52_N_WW', 'FED/RESPPALDB_XAW_N_WW', 'FED/RESPPALDB_XAW_XCH1_N_WW', 'FED/RESPPALDB_N_WW', 'FED/RESPPLLE_N_WW', 'FED/RESPPLLE_F10_N_WW', 'FED/RESPPLLE_F12_N_WW', 'FED/RESPPLLE_F09_N_WW', 'FED/RESPPLLE_F08_N_WW', 'FED/RESPPLLE_F11_N_WW', 'FED/RESPPLLE_F06_N_WW', 'FED/RESPPLLE_F07_N_WW', 'FED/RESPPLLE_F05_N_WW', 'FED/RESPPLLE_F04_N_WW', 'FED/RESPPLLE_F03_N_WW', 'FED/RESPPLLE_F02_N_WW', 'FED/RESPPLLE_F01_N_WW', 'FED/RESPPLLDE_F12_N_WW', 'FED/RESPPLLDE_N_WW', 'FED/RESPPLLDE_F10_N_WW', 'FED/RESPPLLDE_F11_N_WW', 'FED/RESPPLLDE_F04_N_WW', 'FED/RESPPLLDE_F08_N_WW', 'FED/RESPPLLDE_F07_N_WW', 'FED/RESPPLLDE_F09_N_WW', 'FED/RESPPLLDE_F05_N_WW', 'FED/RESPPLLDE_F06_N_WW', 'FED/RESPPLLDE_F03_N_WW', 'FED/RESPPLLDE_F01_N_WW', 'FED/RESPPLLDE_F02_N_WW', 'FED/RESPPAR_F06_N_WW', 'FED/RESPPAR_F09_N_WW', 'FED/RESPPAR_F12_N_WW', 'FED/RESPPAR_N_WW', 'FED/RESPPAR_F04_N_WW', 'FED/RESPPAR_F11_N_WW', 'FED/RESPPAR_F10_N_WW', 'FED/RESPPAR_F08_N_WW', 'FED/RESPPAR_F07_N_WW', 'FED/RESPPAR_F05_N_WW', 'FED/RESPPAR_F01_N_WW', 'FED/RESPPAR_F03_N_WW', 'FED/RESPPAR_F02_N_WW', 'FED/RESPPAE_F12_N_WW', 'FED/RESPPAE_F11_N_WW', 'FED/RESPPAE_N_WW', 'FED/RESPPAE_F05_N_WW', 'FED/RESPPAE_F10_N_WW', 'FED/RESPPAE_F06_N_WW', 'FED/RESPPAE_F07_N_WW', 'FED/RESPPAE_F09_N_WW', 'FED/RESPPAE_F08_N_WW', 'FED/RESPPAE_F03_N_WW', 'FED/RESPPAE_F01_N_WW', 'FED/RESPPAE_F04_N_WW', 'FED/RESPPAE_F02_N_WW', 'FED/RESPPALDV_N_WW', 'FED/RIFSPFF_N_BWAW', 'FED/RIFSPFF_N_D', 'FED/RIFSPFF_N_WW', 'FED/RIFSRP_F02_N_WW', 'FED/RIFSRP_F02_N_D', 'FED/RIFSPBLP_N_D', 'FED/RIFSPBLP_N_WW', 'FED/RESPPLCU_XCH52_N_WW', 'FED/RESPPLCU_XCH1_N_WW', 'FED/RESPPLCU_N_WW', 'FED/RESPPLCU_F12_N_WW', 'FED/RESPPLCU_F11_N_WW', 'FED/RESPPLCU_F10_N_WW', 'FED/RESPPLCU_F09_N_WW', 'FED/RESPPLCU_F08_N_WW', 'FED/RESPPLCU_F07_N_WW', 'FED/RESPPLCU_F06_N_WW', 'FED/RESPPLCU_F05_N_WW', 'FED/RESPPLCU_F04_N_WW', 'FED/RESPPLCU_F03_N_WW', 'FED/RESPPLCU_F02_N_WW', 'FED/RESPPLCU_F01_N_WW', 'FED/RESPPLC_XCH52_N_WW', 'FED/RESPPLC_XCH1_N_WW', 'FED/RESPPLC_N_WW', 'FED/RESPPL_N_WW', 'FED/RESPPL_F12_N_WW', 'FED/RESPPL_F11_N_WW', 'FED/RESPPL_F10_N_WW', 'FED/RESPPL_F09_N_WW', 'FED/RESPPL_F08_N_WW', 'FED/RESPPL_F07_N_WW', 'FED/RESPPL_F06_N_WW', 'FED/RESPPL_F05_N_WW', 'FED/RESPPL_F03_N_WW', 'FED/RESPPL_F04_N_WW', 'FED/RESPPL_F01_N_WW', 'FED/RESPPL_F02_N_WW', 'FED/RESPPAOF_XCH1_N_WW', 'FED/RESPPAOF_XCH52_N_WW', 'FED/RESPPAOF_XAW_XCH52_N_WW', 'FED/RESPPAOF_XAW_XCH1_N_WW', 'FED/RESPPAOF_XAW_N_WW', 'FED/RESPPAOF_N_WW', 'FED/RESPPAOF_F11_N_WW', 'FED/RESPPAOF_F12_N_WW', 'FED/RESPPAOF_F10_N_WW', 'FED/RESPPAOF_F09_N_WW', 'FED/RESPPAOF_F08_N_WW', 'FED/RESPPAOF_F07_N_WW', 'FED/RESPPAOF_F06_N_WW', 'FED/RESPPAOF_F05_N_WW', 'FED/RESPPAOF_F04_N_WW', 'FED/RESPPAOF_F02_N_WW', 'FED/RESPPAOF_F03_N_WW', 'FED/RESPPAOF_F01_N_WW', 'FED/RESPPALTD16T90_N_WW', 'FED/RESPPALTD15_N_WW', 'FED/RESPPALT_XCH52_N_WW', 'FED/RESPPALT_XCH1_N_WW', 'FED/RESPPALT_XAW_N_WW', 'FED/RESPPALT_XAW_XCH1_N_WW', 'FED/RESPPALT_XAW_XCH52_N_WW', 'FED/RESPPALT_N_WW', 'FED/RESPPALSP_XCH52_N_WW', 'FED/RESPPALSP_XCH1_N_WW', 'FED/RESPPALSP_XAW_XCH52_N_WW', 'FED/RESPPALSP_XAW_XCH1_N_WW', 'FED/RESPPALSP_XAW_N_WW', 'FED/RESPPALSP_N_WW', 'FED/RESPPALSD_XCH52_N_WW', 'FED/RESPPALSD_XAW_XCH1_N_WW', 'FED/RESPPALSD_XCH1_N_WW', 'FED/RESPPALSD_XAW_N_WW', 'FED/RESPPALSD_XAW_XCH52_N_WW', 'FED/RESPPALSD_N_WW', 'FED/RESH4R_XAW_XCH52_N_WW', 'FED/RESH4R_XAW_XCH1_N_WW', 'FED/RESH4R_XAW_N_WW', 'FED/RESH4R_N_WW', 'FED/RESH4FO_XAW_XCH52_N_WW', 'FED/RESH4FO_XAW_N_WW', 'FED/RESH4FO_XAW_XCH1_N_WW', 'FED/RESH4FG_N_WW', 'FED/RESH4FG_XAW_XCH1_N_WW', 'FED/RESH4FO_N_WW', 'FED/RESH4FG_XAW_XCH52_N_WW', 'FED/RESH4FG_XAW_N_WW', 'FED/RESH4FA_XAW_XCH52_N_WW', 'FED/RESH4FA_XAW_XCH1_N_WW', 'FED/RESH4FA_XAW_N_WW', 'FED/RESH4FA_N_WW', 'FED/RESH4F_XAW_XCH52_N_WW', 'FED/RESH4F_XAW_XCH1_N_WW', 'FED/RESH4F_XAW_N_WW', 'FED/RESH4F_N_WW', 'FED/RESH4DOT_XAW_XCH52_N_WW', 'FED/RESH4DOT_XAW_N_WW', 'FED/RESH4DOT_N_WW', 'FED/RESH4DOF_XAW_XCH52_N_WW', 'FED/RESH4DOF_XAW_XCH1_N_WW', 'FED/RESH4DOF_N_WW', 'FED/RESH4DO_XAW_XCH52_N_WW', 'FED/RESH4DO_XAW_XCH1_N_WW', 'FED/RESH4DO_XAW_N_WW', 'FED/RESH4DO_N_WW', 'FED/RESH4AO_XAW_XCH52_N_WW', 'FED/RESH4AO_XAW_XCH1_N_WW', 'FED/RESH4AO_N_WW', 'FED/RESH4AO_XAW_N_WW', 'FED/RESH4A_XAW_XCH52_N_WW', 'FED/RESH4A_XAW_XCH1_N_WW', 'FED/RESH4A_XAW_N_WW', 'FED/H0_RESPPLLDS_XCH52_N_WW', 'FED/H0_RESPPLLDS_XCH1_N_WW', 'FED/RESH4A_N_WW', 'FED/H0_RESPPLLDS_XAW_XCH1_N_WW', 'FED/H0_RESPPLLDS_XAW_XCH52_N_WW', 'FED/H0_RESPPLLDS_XAW_N_WW', 'FED/H0_RESPPLLDS_N_WW', 'FED/H0_RESPPLLDS_F12_N_WW', 'FED/H0_RESPPLLDS_F05_N_WW', 'FED/H0_RESPPLLDS_F11_N_WW', 'FED/H0_RESPPLLDS_F10_N_WW', 'FED/H0_RESPPLLDS_F09_N_WW', 'FED/H0_RESPPLLDS_F08_N_WW', 'FED/H0_RESPPLLDS_F04_N_WW', 'FED/H0_RESPPLLDS_F07_N_WW', 'FED/H0_RESPPLLDS_F06_N_WW', 'FED/H0_RESPPLLDS_F02_N_WW', 'FED/H0_RESPPLLDS_F03_N_WW', 'FED/H0_RESPPLLDS_F01_N_WW', 'FED/MKT_GT80_MKT_VOL', 'FED/MKT_41_80_MKT_VOL', 'FED/MKT_21_40_MKT_VOL', 'FED/MKT_10_20_MKT_VOL', 'FED/MKT_5_9_MKT_VOL', 'FED/MKT_1_4_MKT_VOL', 'FED/AB_GT80_AA_VOL', 'FED/AB_41_80_AA_VOL', 'FED/AB_21_40_AA_VOL', 'FED/AB_10_20_AA_VOL', 'FED/AB_5_9_AA_VOL', 'FED/AB_1_4_AA_VOL', 'FED/FIN_GT80_AA_VOL', 'FED/FIN_41_80_AA_VOL', 'FED/FIN_21_40_AA_VOL', 'FED/FIN_10_20_AA_VOL', 'FED/FIN_5_9_AA_VOL', 'FED/FIN_1_4_AA_VOL', 'FED/NONFIN_GT80_A2P2_VOL', 'FED/NONFIN_41_80_A2P2_VOL', 'FED/NONFIN_21_40_A2P2_VOL', 'FED/NONFIN_10_20_A2P2_VOL', 'FED/NONFIN_5_9_A2P2_VOL', 'FED/NONFIN_1_4_A2P2_VOL', 'FED/NONFIN_GT80_AA_VOL', 'FED/NONFIN_41_80_AA_VOL', 'FED/NONFIN_21_40_AA_VOL', 'FED/NONFIN_10_20_AA_VOL', 'FED/NONFIN_5_9_AA_VOL', 'FED/NONFIN_1_4_AA_VOL', 'FED/MKT_GT80_MKT_AMT', 'FED/MKT_41_80_MKT_AMT', 'FED/MKT_21_40_MKT_AMT', 'FED/MKT_10_20_MKT_AMT', 'FED/MKT_5_9_MKT_AMT', 'FED/MKT_1_4_MKT_AMT', 'FED/AB_GT80_AA_AMT', 'FED/AB_41_80_AA_AMT', 'FED/AB_21_40_AA_AMT', 'FED/AB_10_20_AA_AMT', 'FED/AB_5_9_AA_AMT', 'FED/AB_1_4_AA_AMT', 'FED/FIN_GT80_AA_AMT', 'FED/FIN_41_80_AA_AMT', 'FED/FIN_21_40_AA_AMT', 'FED/FIN_10_20_AA_AMT', 'FED/FIN_5_9_AA_AMT', 'FED/FIN_1_4_AA_AMT', 'FED/NONFIN_GT80_A2P2_AMT', 'FED/NONFIN_41_80_A2P2_AMT', 'FED/NONFIN_21_40_A2P2_AMT', 'FED/NONFIN_10_20_A2P2_AMT', 'FED/NONFIN_5_9_A2P2_AMT', 'FED/NONFIN_1_4_A2P2_AMT', 'FED/NONFIN_GT80_AA_AMT', 'FED/NONFIN_41_80_AA_AMT', 'FED/NONFIN_21_40_AA_AMT', 'FED/NONFIN_10_20_AA_AMT', 'FED/NONFIN_5_9_AA_AMT', 'FED/NONFIN_1_4_AA_AMT', 'FED/RIFLGFL_XII_N_B', 'FED/RIFLGFCY30_XII_N_B', 'FED/RIFLGFCY20_XII_N_B', 'FED/RIFLGFCY10_XII_N_B', 'FED/RIFLGFCY07_XII_N_B', 'FED/RIFLGFCY05_XII_N_B', 'FED/RIFLGFCY30_N_B', 'FED/RIFLGFCY20_N_B', 'FED/RIFLGFCY10_N_B', 'FED/RIFLGFCY07_N_B', 'FED/RIFLGFCY05_N_B', 'FED/RIFLGFCY03_N_B', 'FED/RIFLGFCY02_N_B', 'FED/RIFLGFCY01_N_B', 'FED/RIFLGFCM06_N_B', 'FED/RIFLGFCM03_N_B', 'FED/RIFLGFCM01_N_B', 'FED/RIFSGFSY01_N_B', 'FED/RIFSGFSM06_N_B', 'FED/RIFSGFSM03_N_B', 'FED/RIFSGFSW04_N_B', 'FED/RIFSRP_F02_N_B', 'FED/RIFSPBLP_N_B', 'FED/RIFSPFF_N_B', 'FED/DTBSPCKO_WW', 'FED/DTBSPCKA_WW', 'FED/DTBSPCKFO_WW', 'FED/DTBSPCKFF_WW', 'FED/DTBSPCKFD_WW', 'FED/DTBSPCKF_WW', 'FED/DTBSPCKNO_WW', 'FED/DTBSPCKNF_WW', 'FED/DTBSPCKND_WW', 'FED/DTBSPCKN_WW', 'FED/DTBSPCK_WW', 'FED/DTBSPCKPLO_N_WW', 'FED/DTBSPCKPLA_N_WW', 'FED/DTBSPCKPLF_N_WW', 'FED/DTBSPCKPLN_N_WW', 'FED/DTBSPCKPTO_N_WW', 'FED/DTBSPCKPTA_N_WW', 'FED/DTBSPCKPTF_N_WW', 'FED/DTBSPCKPTN_N_WW', 'FED/DTBSPCKCT2_N_WW', 'FED/DTBSPCKCT1_N_WW', 'FED/DTBSPCKO_N_WW', 'FED/DTBSPCKA_N_WW', 'FED/DTBSPCKFO_N_WW', 'FED/DTBSPCKFFO_N_WW', 'FED/DTBSPCKFFB_N_WW', 'FED/DTBSPCKFF_N_WW', 'FED/DTBSPCKFDO_N_WW', 'FED/DTBSPCKFDN_N_WW', 'FED/DTBSPCKFDB_N_WW', 'FED/DTBSPCKFDU_N_WW', 'FED/DTBSPCKFD_N_WW', 'FED/DTBSPCKF_N_WW', 'FED/DTBSPCKNO_N_WW', 'FED/DTBSPCKNF_N_WW', 'FED/DTBSPCKND_N_WW', 'FED/DTBSPCKN_N_WW', 'FED/DTBSPCK_N_WW', 'FED/RIFSPPAAAD90_N_B', 'FED/RIFSPPAAAD60_N_B', 'FED/RIFSPPAAAD30_N_B', 'FED/RIFSPPAAAD15_N_B', 'FED/RIFSPPAAAD07_N_B', 'FED/RIFSPPAAAD01_N_B', 'FED/RIFSPPFAAD90_N_B', 'FED/RIFSPPFAAD07_N_B', 'FED/RIFSPPFAAD01_N_B', 'FED/RIFSPPNA2P2D90_N_B', 'FED/RIFSPPNA2P2D60_N_B', 'FED/RIFSPPNA2P2D30_N_B', 'FED/RIFSPPNA2P2D15_N_B', 'FED/RIFSPPNA2P2D07_N_B', 'FED/RIFSPPNA2P2D01_N_B', 'FED/RIFSPPNAAD30_N_B', 'FED/RIFSPPNAAD15_N_B', 'FED/RIFSPPNAAD07_N_B', 'FED/RIFSPPNAAD01_N_B', 'FED/RESPPNTEP_N_WW', 'FED/RESH4MF_N_WW', 'FED/RESPPNT_N_WW', 'FED/RESPPNO_N_WW', 'FED/RESPPNTEPP_N_WW', 'FED/RESPPNS_N_WW', 'FED/RESPPNG_N_WW', 'FED/RESPPN_N_WW', 'FED/RESPPLLNOC_N_WW', 'FED/RESPPLLNON_N_WW', 'FED/RESPPLCS_F12_N_WW', 'FED/RESPPLCS_F11_N_WW', 'FED/RESPPLCS_F10_N_WW', 'FED/RESPPLCS_F09_N_WW', 'FED/RESPPLCS_F08_N_WW', 'FED/RESPPLCS_F07_N_WW', 'FED/RESPPLCS_F06_N_WW', 'FED/RESPPLCS_F05_N_WW', 'FED/RESPPLCS_F04_N_WW', 'FED/RESPPLCS_F03_N_WW', 'FED/RESPPLCS_F02_N_WW', 'FED/RESPPLCS_F01_N_WW', 'FED/RESPPLCP_F12_N_WW', 'FED/RESPPLCP_F11_N_WW', 'FED/RESPPLCP_F10_N_WW', 'FED/RESPPLCP_F09_N_WW', 'FED/RESPPLCP_F08_N_WW', 'FED/RESPPLCP_F07_N_WW', 'FED/RESPPLCP_F06_N_WW', 'FED/RESPPLCP_F05_N_WW', 'FED/RESPPLCP_F04_N_WW', 'FED/RESPPLCP_F03_N_WW', 'FED/RESPPLCP_F02_N_WW', 'FED/RESPPLCP_F01_N_WW', 'FED/RESPPLL_F12_N_WW', 'FED/RESPPLL_F11_N_WW', 'FED/RESPPLL_F10_N_WW', 'FED/RESPPLL_F09_N_WW', 'FED/RESPPLL_F08_N_WW', 'FED/RESPPLL_F07_N_WW', 'FED/RESPPLL_F06_N_WW', 'FED/RESPPLL_F05_N_WW', 'FED/RESPPLL_F04_N_WW', 'FED/RESPPLL_F03_N_WW', 'FED/RESPPLL_F02_N_WW', 'FED/RESPPLL_F01_N_WW', 'FED/RESPPLL_N_WW', 'FED/RESPPLLOP_F12_N_WW', 'FED/RESPPLLOP_F11_N_WW', 'FED/RESPPLLOP_F10_N_WW', 'FED/RESPPLLOP_F09_N_WW', 'FED/RESPPLLOP_F08_N_WW', 'FED/RESPPLLOP_F07_N_WW', 'FED/RESPPLLOP_F06_N_WW', 'FED/RESPPLLOP_F05_N_WW', 'FED/RESPPLLOP_F04_N_WW', 'FED/RESPPLLOP_F03_N_WW', 'FED/RESPPLLOP_F02_N_WW', 'FED/RESPPLLOP_F01_N_WW', 'FED/RESPPLLOP_N_WW', 'FED/RESPPLLC_N_WW', 'FED/RESPPMLLDO_F12_N_WW', 'FED/RESPPMLLDO_F11_N_WW', 'FED/RESPPMLLDO_F10_N_WW', 'FED/RESPPMLLDO_F09_N_WW', 'FED/RESPPMLLDO_F08_N_WW', 'FED/RESPPMLLDO_F07_N_WW', 'FED/RESPPMLLDO_F06_N_WW', 'FED/RESPPMLLDO_F05_N_WW', 'FED/RESPPMLLDO_F04_N_WW', 'FED/RESPPMLLDO_F03_N_WW', 'FED/RESPPMLLDO_F02_N_WW', 'FED/RESPPMLLDO_F01_N_WW', 'FED/RESPPMLLDO_N_WW', 'FED/RESPPLLDF_F12_N_WW', 'FED/RESPPLLDF_F11_N_WW', 'FED/RESPPLLDF_F10_N_WW', 'FED/RESPPLLDF_F09_N_WW', 'FED/RESPPLLDF_F08_N_WW', 'FED/RESPPLLDF_F07_N_WW', 'FED/RESPPLLDF_F06_N_WW', 'FED/RESPPLLDF_F05_N_WW', 'FED/RESPPLLDF_F04_N_WW', 'FED/RESPPLLDF_F03_N_WW', 'FED/RESPPLLDF_F02_N_WW', 'FED/RESPPLLDF_F01_N_WW', 'FED/RESPPLLDT_F12_N_WW', 'FED/RESPPLLDT_F11_N_WW', 'FED/RESPPLLDT_F10_N_WW', 'FED/RESPPLLDT_F09_N_WW', 'FED/RESPPLLDT_F08_N_WW', 'FED/RESPPLLDT_F07_N_WW', 'FED/RESPPLLDT_F06_N_WW', 'FED/RESPPLLDT_F05_N_WW', 'FED/RESPPLLDT_F04_N_WW', 'FED/RESPPLLDT_F03_N_WW', 'FED/RESPPLLDT_F02_N_WW', 'FED/RESPPLLDT_F01_N_WW', 'FED/RESPPLLD_F12_N_WW', 'FED/RESPPLLD_F11_N_WW', 'FED/RESPPLLD_F10_N_WW', 'FED/RESPPLLD_F09_N_WW', 'FED/RESPPLLD_F08_N_WW', 'FED/RESPPLLD_F07_N_WW', 'FED/RESPPLLD_F06_N_WW', 'FED/RESPPLLD_F05_N_WW', 'FED/RESPPLLD_F04_N_WW', 'FED/RESPPLLD_F03_N_WW', 'FED/RESPPLLD_F02_N_WW', 'FED/RESPPLLD_F01_N_WW', 'FED/RESPPLLD_N_WW', 'FED/RESPPLLR_F12_N_WW', 'FED/RESPPLLR_F11_N_WW', 'FED/RESPPLLR_F10_N_WW', 'FED/RESPPLLR_F09_N_WW', 'FED/RESPPLLR_F08_N_WW', 'FED/RESPPLLR_F07_N_WW', 'FED/RESPPLLR_F06_N_WW', 'FED/RESPPLLR_F05_N_WW', 'FED/RESPPLLR_F04_N_WW', 'FED/RESPPLLR_F03_N_WW', 'FED/RESPPLLR_F02_N_WW', 'FED/RESPPLLR_F01_N_WW', 'FED/RESPPLLN_F12_N_WW', 'FED/RESPPLLN_F11_N_WW', 'FED/RESPPLLN_F10_N_WW', 'FED/RESPPLLN_F09_N_WW', 'FED/RESPPLLN_F08_N_WW', 'FED/RESPPLLN_F07_N_WW', 'FED/RESPPLLN_F06_N_WW', 'FED/RESPPLLN_F05_N_WW', 'FED/RESPPLLN_F04_N_WW', 'FED/RESPPLLN_F03_N_WW', 'FED/RESPPLLN_F02_N_WW', 'FED/RESPPLLN_F01_N_WW', 'FED/RESPPLLNH_N_WW', 'FED/RESPPLLNO_N_WW', 'FED/RESPPA_F12_N_WW', 'FED/RESPPA_F11_N_WW', 'FED/RESPPA_F10_N_WW', 'FED/RESPPA_F09_N_WW', 'FED/RESPPA_F08_N_WW', 'FED/RESPPA_F07_N_WW', 'FED/RESPPA_F06_N_WW', 'FED/RESPPA_F05_N_WW', 'FED/RESPPA_F04_N_WW', 'FED/RESPPA_F03_N_WW', 'FED/RESPPA_F02_N_WW', 'FED/RESPPA_F01_N_WW', 'FED/RESPPA_N_WW', 'FED/RESPPAN_F12_N_WW', 'FED/RESPPAN_F11_N_WW', 'FED/RESPPAN_F10_N_WW', 'FED/RESPPAN_F09_N_WW', 'FED/RESPPAN_F08_N_WW', 'FED/RESPPAN_F07_N_WW', 'FED/RESPPAN_F06_N_WW', 'FED/RESPPAN_F05_N_WW', 'FED/RESPPAN_F04_N_WW', 'FED/RESPPAN_F03_N_WW', 'FED/RESPPAN_F02_N_WW', 'FED/RESPPAN_F01_N_WW', 'FED/RESPPAN_N_WW', 'FED/RESH4SCS_F12_N_WW', 'FED/RESH4SCS_F11_N_WW', 'FED/RESH4SCS_F10_N_WW', 'FED/RESH4SCS_F09_N_WW', 'FED/RESH4SCS_F08_N_WW', 'FED/RESH4SCS_F07_N_WW', 'FED/RESH4SCS_F06_N_WW', 'FED/RESH4SCS_F05_N_WW', 'FED/RESH4SCS_F04_N_WW', 'FED/RESH4SCS_F03_N_WW', 'FED/RESH4SCS_F02_N_WW', 'FED/RESH4SCS_F01_N_WW', 'FED/RESPPAI_N_WW', 'FED/RESPPALGUON_N_WW', 'FED/RESPPAL_F12_N_WW', 'FED/RESPPAL_F11_N_WW', 'FED/RESPPAL_F10_N_WW', 'FED/RESPPAL_F09_N_WW', 'FED/RESPPAL_F08_N_WW', 'FED/RESPPAL_F07_N_WW', 'FED/RESPPAL_F06_N_WW', 'FED/RESPPAL_F05_N_WW', 'FED/RESPPAL_F04_N_WW', 'FED/RESPPAL_F03_N_WW', 'FED/RESPPAL_F02_N_WW', 'FED/RESPPAL_F01_N_WW', 'FED/RESPPAC_F12_N_WW', 'FED/RESPPAC_F11_N_WW', 'FED/RESPPAC_F10_N_WW', 'FED/RESPPAC_F09_N_WW', 'FED/RESPPAC_F08_N_WW', 'FED/RESPPAC_F07_N_WW', 'FED/RESPPAC_F06_N_WW', 'FED/RESPPAC_F05_N_WW', 'FED/RESPPAC_F04_N_WW', 'FED/RESPPAC_F03_N_WW', 'FED/RESPPAC_F02_N_WW', 'FED/RESPPAC_F01_N_WW', 'FED/RESPPLCS_XCH52_N_WW', 'FED/RESPPLCS_XCH1_N_WW', 'FED/RESPPLCS_N_WW', 'FED/RESPPLCP_XCH52_N_WW', 'FED/RESPPLCP_XCH1_N_WW', 'FED/RESPPLCP_N_WW', 'FED/RESPPMLL_XCH52_N_WW', 'FED/RESPPMLL_XCH1_N_WW', 'FED/RESPPMLL_N_WW', 'FED/RESPPMLLX_N_WW', 'FED/RESPPLLO_XCH52_N_WW', 'FED/RESPPLLO_XCH1_N_WW', 'FED/RESPPLLO_N_WW', 'FED/RESPPMLLC_XCH52_N_WW', 'FED/RESPPMLLC_XCH1_N_WW', 'FED/RESPPMLLC_N_WW', 'FED/RESPPMLLCX_N_WW', 'FED/RESPPLLDO_XCH52_N_WW', 'FED/RESPPLLDO_XCH1_N_WW', 'FED/RESPPMLLDOX_N_WW', 'FED/RESPPLLDF_XCH52_N_WW', 'FED/RESPPLLDF_XCH1_N_WW', 'FED/RESPPLLDT_XCH52_N_WW', 'FED/RESPPLLDT_XCH1_N_WW', 'FED/RESPPLLDD_XCH52_N_WW', 'FED/RESPPLLDD_XCH1_N_WW', 'FED/RESPPLLDD_N_WW', 'FED/RESPPLLDA_XCH52_N_WW', 'FED/RESPPLLDA_XCH1_N_WW', 'FED/RESPPMLLD_XCH52_N_WW', 'FED/RESPPMLLD_XCH1_N_WW', 'FED/RESPPMLLD_N_WW', 'FED/RESPPMLLDX_N_WW', 'FED/RESPPLLR_XCH52_N_WW', 'FED/RESPPLLR_XCH1_N_WW', 'FED/RESPPLLN_XCH52_N_WW', 'FED/RESPPLLN_XCH1_N_WW', 'FED/RESPPLLN_N_WW', 'FED/RESPPMA_XCH52_N_WW', 'FED/RESPPMA_XCH1_N_WW', 'FED/RESPPMA_N_WW', 'FED/RESPPMAX_N_WW', 'FED/RESPPAO_XCH52_N_WW', 'FED/RESPPAO_XCH1_N_WW', 'FED/RESPPAO_N_WW', 'FED/RESH4SCS_XCH52_N_WW', 'FED/RESH4SCS_XCH1_N_WW', 'FED/RESPPAP_XCH52_N_WW', 'FED/RESPPAP_XCH1_N_WW', 'FED/RESPPAP_N_WW', 'FED/RESPPMAI_XCH52_N_WW', 'FED/RESPPMAI_XCH1_N_WW', 'FED/RESPPMAI_N_WW', 'FED/RESPPMAIX_N_WW', 'FED/RESPPALD_XCH52_N_WW', 'FED/RESPPALD_XCH1_N_WW', 'FED/RESPPALGTR_XCH52_N_WW', 'FED/RESPPALGTR_XCH1_N_WW', 'FED/RESPPALGASMO_XCH52_N_WW', 'FED/RESPPALGAO_XCH52_N_WW', 'FED/RESPPALGAO_XCH1_N_WW', 'FED/RESPPALGUOMC_XCH52_N_WW', 'FED/RESPPALGUOMC_XCH1_N_WW', 'FED/RESPPALGUOMI_XCH52_N_WW', 'FED/RESPPALGUOMI_XCH1_N_WW', 'FED/RESPPALGUOMN_XCH52_N_WW', 'FED/RESPPALGUOMN_XCH1_N_WW', 'FED/RESPPALGUOB_XCH52_N_WW', 'FED/RESPPALGUOB_XCH1_N_WW', 'FED/RESPPALGUO_XCH52_N_WW', 'FED/RESPPALGUO_XCH1_N_WW', 'FED/RESPPALG_XCH52_N_WW', 'FED/RESPPALG_XCH1_N_WW', 'FED/RESPPAL_XCH52_N_WW', 'FED/RESPPAL_XCH1_N_WW', 'FED/RESPPAL_N_WW', 'FED/RESPPAC_XCH52_N_WW', 'FED/RESPPAC_XCH1_N_WW', 'FED/RESPPAC_N_WW', 'FED/RESPPAS_XCH52_N_WW', 'FED/RESPPAS_XCH1_N_WW', 'FED/RESPPAG_XCH52_N_WW', 'FED/RESPPAG_XCH1_N_WW', 'FED/RESPPAG_N_WW', 'FED/RESPPLAML3LT_N_WW', 'FED/RESPPAAML3LI_N_WW', 'FED/RESPPAAML3LP_N_WW', 'FED/RESPPLAML2LT_N_WW', 'FED/RESPPAAML2LI_N_WW', 'FED/RESPPAAML2LP_N_WW', 'FED/RESPPLAML1LT_N_WW', 'FED/RESPPAAML1LI_N_WW', 'FED/RESPPAAML1LP_N_WW', 'FED/RESPPALGASME_N_WW', 'FED/RESPPALGASMCS_N_WW', 'FED/RESPPALGASMCB_N_WW', 'FED/RESPPLLDAY01_N_WW', 'FED/RESPPLLDAD16T90_N_WW', 'FED/RESPPLLDAD15_N_WW', 'FED/RESPPALRD16T90_N_WW', 'FED/RESPPALRD15_N_WW', 'FED/RESH4SCSY10P_N_WW', 'FED/RESH4SCSY05T10_N_WW', 'FED/RESH4SCSY01T05_N_WW', 'FED/RESH4SCSY01_N_WW', 'FED/RESH4SCSD16T90_N_WW', 'FED/RESH4SCSD15_N_WW', 'FED/RESPPALGTRD16T90_N_WW', 'FED/RESPPALGTRD15_N_WW', 'FED/RESPPALGASMO_XCH1_N_WW', 'FED/RESPPALGASMOY10P_XCH1_N_WW', 'FED/RESPPALGASMOY05T10_XCH1_N_WW', 'FED/RESPPALGASMOY01T05_XCH1_N_WW', 'FED/RESPPALGASMOY01_XCH1_N_WW', 'FED/RESPPALGASMOD16T90_XCH1_N_WW', 'FED/RESPPALGASMOD15_XCH1_N_WW', 'FED/RESPPALGASMOY10P_N_WW', 'FED/RESPPALGASMOY05T10_N_WW', 'FED/RESPPALGASMOY01T05_N_WW', 'FED/RESPPALGASMOY01_N_WW', 'FED/RESPPALGASMOD16T90_N_WW', 'FED/RESPPALGASMOD15_N_WW', 'FED/RESPPALGAM_XCH1_N_WW', 'FED/RESPPALGAMY10P_XCH1_N_WW', 'FED/RESPPALGAMY05T10_XCH1_N_WW', 'FED/RESPPALGAMY01T05_XCH1_N_WW', 'FED/RESPPALGAMY01_XCH1_N_WW', 'FED/RESPPALGAMD16T90_XCH1_N_WW', 'FED/RESPPALGAMD15_XCH1_N_WW', 'FED/RESPPALGAM_N_WW', 'FED/RESPPALGAMY10P_N_WW', 'FED/RESPPALGAMY05T10_N_WW', 'FED/RESPPALGAMY01T05_N_WW', 'FED/RESPPALGAMY01_N_WW', 'FED/RESPPALGAMD16T90_N_WW', 'FED/RESPPALGAMD15_N_WW', 'FED/RESPPALGUM_XCH1_N_WW', 'FED/RESPPALGUMY10P_XCH1_N_WW', 'FED/RESPPALGUMY05T10_XCH1_N_WW', 'FED/RESPPALGUMY01T05_XCH1_N_WW', 'FED/RESPPALGUMY01_XCH1_N_WW', 'FED/RESPPALGUMD16T90_XCH1_N_WW', 'FED/RESPPALGUMD15_XCH1_N_WW', 'FED/RESPPALGUM_N_WW', 'FED/RESPPALGUMY10P_N_WW', 'FED/RESPPALGUMY05T10_N_WW', 'FED/RESPPALGUMY01T05_N_WW', 'FED/RESPPALGUMY01_N_WW', 'FED/RESPPALGUMD16T90_N_WW', 'FED/RESPPALGUMD15_N_WW', 'FED/RESPPALDMY05T10_N_WW', 'FED/RESPPALDMY01T05_N_WW', 'FED/RESPPALDMD16T90_N_WW', 'FED/RESPPALDMD15_N_WW', 'FED/RESH4DOF_XAW_N_WW', 'FED/RESH4DOT_XAW_XCH1_N_WW', 'FED/RESH4D_N_WW', 'FED/RESH4D_XAW_XCH52_N_WW', 'FED/RESH4D_XAW_XCH1_N_WW', 'FED/RESH4D_XAW_N_WW', 'FED/RESPPLLDO_N_WW', 'FED/RESPPLLDO_XAW_XCH52_N_WW', 'FED/RESPPLLDO_XAW_XCH1_N_WW', 'FED/RESPPLLDO_XAW_N_WW', 'FED/RESPPLLDF_N_WW', 'FED/RESPPLLDF_XAW_XCH52_N_WW', 'FED/RESPPLLDF_XAW_XCH1_N_WW', 'FED/RESPPLLDF_XAW_N_WW', 'FED/RESPPLLDT_N_WW', 'FED/RESPPLLDT_XAW_XCH52_N_WW', 'FED/RESPPLLDT_XAW_XCH1_N_WW', 'FED/RESPPLLDT_XAW_N_WW', 'FED/RESPPLLDA_N_WW', 'FED/RESPPLLDA_XAW_XCH52_N_WW', 'FED/RESPPLLDA_XAW_XCH1_N_WW', 'FED/RESPPLLDA_XAW_N_WW', 'FED/RESPPLLB_N_WW', 'FED/RESPPLLB_XAW_XCH52_N_WW', 'FED/RESPPLLB_XAW_XCH1_N_WW', 'FED/RESPPLLB_XAW_N_WW', 'FED/RESTBHT_N_WW', 'FED/RESTBHT_XAW_XCH52_N_WW', 'FED/RESTBHT_XAW_XCH1_N_WW', 'FED/RESTBHT_XAW_N_WW', 'FED/RESPPLLRD_N_WW', 'FED/RESPPLLRD_XAW_XCH52_N_WW', 'FED/RESPPLLRD_XAW_XCH1_N_WW', 'FED/RESPPLLRD_XAW_N_WW', 'FED/RESPPLLRF_N_WW', 'FED/RESPPLLRF_XAW_XCH52_N_WW', 'FED/RESPPLLRF_XAW_XCH1_N_WW', 'FED/RESPPLLRF_XAW_N_WW', 'FED/RESPPLLR_N_WW', 'FED/RESPPLLR_XAW_XCH52_N_WW', 'FED/RESPPLLR_XAW_XCH1_N_WW', 'FED/RESPPLLR_XAW_N_WW', 'FED/RESTBC_N_WW', 'FED/RESTBC_XAW_XCH52_N_WW', 'FED/RESTBC_XAW_XCH1_N_WW', 'FED/RESTBC_XAW_N_WW', 'FED/RESH4S_N_WW', 'FED/RESH4S_XAW_XCH52_N_WW', 'FED/RESH4S_XAW_XCH1_N_WW', 'FED/RESH4S_XAW_N_WW', 'FED/RESTBMT_N_WW', 'FED/RESTBMT_XAW_XCH52_N_WW', 'FED/RESTBMT_XAW_XCH1_N_WW', 'FED/RESTBMT_XAW_N_WW', 'FED/RESPPAS_N_WW', 'FED/RESPPAS_XAW_XCH52_N_WW', 'FED/RESPPAS_XAW_XCH1_N_WW', 'FED/RESPPAS_XAW_N_WW', 'FED/RESTBMG_N_WW', 'FED/RESTBMG_XAW_XCH52_N_WW', 'FED/RESTBMG_XAW_XCH1_N_WW', 'FED/RESTBMG_XAW_N_WW', 'FED/RESH4SO_N_WW', 'FED/RESH4SO_XAW_XCH52_N_WW', 'FED/RESH4SO_XAW_XCH1_N_WW', 'FED/RESH4SO_XAW_N_WW', 'FED/RESH4SCS_N_WW', 'FED/RESH4SCS_XAW_XCH52_N_WW', 'FED/RESH4SCS_XAW_XCH1_N_WW', 'FED/RESH4SCS_XAW_N_WW', 'FED/RESH4SCF_N_WW', 'FED/RESH4SCF_XAW_XCH52_N_WW', 'FED/RESH4SCF_XAW_XCH1_N_WW', 'FED/RESH4SCF_XAW_N_WW', 'FED/RESPPALDC_N_WW', 'FED/RESPPALDC_XAW_XCH52_N_WW', 'FED/RESPPALDC_XAW_XCH1_N_WW', 'FED/RESPPALDC_XAW_N_WW', 'FED/RESPPALDT_N_WW', 'FED/RESPPALDT_XAW_XCH52_N_WW', 'FED/RESPPALDT_XAW_XCH1_N_WW', 'FED/RESPPALDT_XAW_N_WW', 'FED/RESPPALDS_N_WW', 'FED/RESPPALDS_XAW_XCH52_N_WW', 'FED/RESPPALDS_XAW_XCH1_N_WW', 'FED/RESPPALDS_XAW_N_WW', 'FED/RESPPALDQ_N_WW', 'FED/RESPPALDQ_XAW_XCH52_N_WW', 'FED/RESPPALDQ_XAW_XCH1_N_WW', 'FED/RESPPALDQ_XAW_N_WW', 'FED/RESPPALDP_N_WW', 'FED/RESPPALDP_XAW_XCH52_N_WW', 'FED/RESPPALDP_XAW_XCH1_N_WW', 'FED/RESPPALDP_XAW_N_WW', 'FED/RESPPALD_N_WW', 'FED/RESPPALD_XAW_XCH52_N_WW', 'FED/RESPPALD_XAW_XCH1_N_WW', 'FED/RESPPALD_XAW_N_WW', 'FED/RESPPALGTR_N_WW', 'FED/RESPPALGTR_XAW_XCH52_N_WW', 'FED/RESPPALGTR_XAW_XCH1_N_WW', 'FED/RESPPALGTR_XAW_N_WW', 'FED/RESPPALGASMO_N_WW', 'FED/RESPPALGASMO_XAW_XCH52_N_WW', 'FED/RESPPALGASMO_XAW_XCH1_N_WW', 'FED/RESPPALGASMO_XAW_N_WW', 'FED/RESPPALGAO_N_WW', 'FED/RESPPALGAO_XAW_XCH52_N_WW', 'FED/RESPPALGAO_XAW_XCH1_N_WW', 'FED/RESPPALGAO_XAW_N_WW', 'FED/RESPPALGUOMC_N_WW', 'FED/RESPPALGUOMC_XAW_XCH52_N_WW', 'FED/RESPPALGUOMC_XAW_XCH1_N_WW', 'FED/RESPPALGUOMC_XAW_N_WW', 'FED/RESPPALGUOMI_N_WW', 'FED/RESPPALGUOMI_XAW_XCH52_N_WW', 'FED/RESPPALGUOMI_XAW_XCH1_N_WW', 'FED/RESPPALGUOMI_XAW_N_WW', 'FED/RESPPALGUOMN_N_WW', 'FED/RESPPALGUOMN_XAW_XCH52_N_WW', 'FED/RESPPALGUOMN_XAW_XCH1_N_WW', 'FED/RESPPALGUOMN_XAW_N_WW', 'FED/RESPPALGUOB_N_WW', 'FED/RESPPALGUOB_XAW_XCH52_N_WW', 'FED/RESPPALGUOB_XAW_XCH1_N_WW', 'FED/RESPPALGUOB_XAW_N_WW', 'FED/RESPPALGUO_N_WW', 'FED/RESPPALGUO_XAW_XCH52_N_WW', 'FED/RESPPALGUO_XAW_XCH1_N_WW', 'FED/RESPPALGUO_XAW_N_WW', 'FED/RESPPALG_N_WW', 'FED/RESPPALG_XAW_XCH52_N_WW', 'FED/RESPPALG_XAW_XCH1_N_WW', 'FED/RESPPALG_XAW_N_WW', 'FED/RESH4SC_N_WW', 'FED/RESH4SC_XAW_XCH52_N_WW', 'FED/RESH4SC_XAW_XCH1_N_WW', 'FED/RESH4SC_XAW_N_WW', 'FED/RIFSPPFAAD30_N_B', 'FED/RIFSPPNAAD60_N_B', 'FED/RXI_N_B_VES', 'FED/RIFSPPFAAD90_N_WF', 'FED/RIFSPPNAAD90_N_WF', 'FED/RIFSPPNAAD60_N_WF', 'FED/RIFSPPNAAD30_N_WF', 'FED/RIFLGFL_XII_N_WF', 'FED/RIFLGFCY30_XII_N_WF', 'FED/RIFLGFCY20_XII_N_WF', 'FED/RIFLGFCY10_XII_N_WF', 'FED/RIFLGFCY07_XII_N_WF', 'FED/RIFLGFCY05_XII_N_WF', 'FED/RIFLGFCY30_N_WF', 'FED/RIFLGFCY20_N_WF', 'FED/RIFLGFCY10_N_WF', 'FED/RIFLGFCY07_N_WF', 'FED/RIFLGFCY05_N_WF', 'FED/RIFLGFCY03_N_WF', 'FED/RIFLGFCY02_N_WF', 'FED/RIFLGFCY01_N_WF', 'FED/RIFLGFCM06_N_WF', 'FED/RIFLGFCM03_N_WF', 'FED/RIFLGFCM01_N_WF', 'FED/RIFSGFSY01_N_WF', 'FED/RIFSGFSM06_N_WF', 'FED/RIFSGFSM03_N_WF', 'FED/RIFSGFSW04_N_WF', 'FED/PARAMS', 'FED/SVEN1F', 'FED/SVENY', 'FED/SVENF', 'FED/SVENPY', 'FED/RXI_N_B_TH', 'FED/RXI_N_B_SZ', 'FED/RXI_N_B_SL', 'FED/RXI_N_B_KO', 'FED/RXI_N_B_SI', 'FED/RXI_N_B_SF', 'FED/RXI_N_B_NO', 'FED/RXI_N_B_MX', 'FED/RXI_N_B_IN', 'FED/RXI_N_B_HK', 'FED/RXI_N_B_DN', 'FED/RXI_N_B_CH', 'FED/RXI_N_B_BZ', 'FED/RXI_US_N_B_UK', 'FED/RXI_US_N_B_NZ', 'FED/RXI_US_N_B_EU', 'FED/RXI_US_N_B_AL', 'FED/RXI_N_B_TA', 'FED/RXI_N_B_SD', 'FED/RXI_N_B_MA', 'FED/RXI_N_B_JA', 'FED/RXI_N_B_CA', 'FED/JRXWTFO_N_B', 'FED/JRXWTFN_N_B', 'FED/JRXWTFB_N_B', 'FED/RIFSPPNAAD90_N_B', 'FED/RIFSPPFAAD60_N_WF', 'FED/RIFSPPFAAD30_N_WF', 'FED/RIFSPPFAAD15_N_B', 'FED/B3095NFRD', 'FED/B3094NFRD', 'FED/B3053NFRD', 'FED/B3092NFRD', 'FED/B3095NFRA', 'FED/B3094NFRA', 'FED/B3053NFRA', 'FED/B3092NFRA', 'FED/B3095NSMD', 'FED/B3094NSMD', 'FED/B3053NSMD', 'FED/B3092NSMD', 'FED/B3095NSMA', 'FED/B3094NSMA', 'FED/B3053NSMA', 'FED/B3092NSMA', 'FED/B3095NLGD', 'FED/B3094NLGD', 'FED/B3053NLGD', 'FED/B3092NLGD', 'FED/B3095NLGA', 'FED/B3094NLGA', 'FED/B3053NLGA', 'FED/B3092NLGA', 'FED/B3095NDMD', 'FED/B3094NDMD', 'FED/B3053NDMD', 'FED/B3092NDMD', 'FED/B3095NDMA', 'FED/B3094NDMA', 'FED/B3053NDMA', 'FED/B3092NDMA', 'FED/B3095NCBD', 'FED/B3094NCBD', 'FED/B3092NCBD', 'FED/B3053NCBD', 'FED/B3095NCBA', 'FED/B3094NCBA', 'FED/B3053NCBA', 'FED/B3092NCBA', 'FED/B8321NFRD', 'FED/B1310NFRD', 'FED/B1030NFRD', 'FED/B3305NFRD', 'FED/B1245NFRD', 'FED/B1243NFRD', 'FED/B3248NFRD', 'FED/B1218NFRD', 'FED/B1217NFRD', 'FED/B1216NFRD', 'FED/B1215NFRD', 'FED/B3219NFRD', 'FED/B1221NFRD', 'FED/B8321NFRA', 'FED/B1310NFRA', 'FED/B1030NFRA', 'FED/B3305NFRA', 'FED/B1245NFRA', 'FED/B1243NFRA', 'FED/B3248NFRA', 'FED/B1218NFRA', 'FED/B1217NFRA', 'FED/B1215NFRA', 'FED/B1216NFRA', 'FED/B3219NFRA', 'FED/B1221NFRA', 'FED/B8321NSMD', 'FED/B1310NSMD', 'FED/B1030NSMD', 'FED/B3305NSMD', 'FED/B1243NSMD', 'FED/B1245NSMD', 'FED/B3248NSMD', 'FED/B1218NSMD', 'FED/B1217NSMD', 'FED/B1216NSMD', 'FED/B1215NSMD', 'FED/B3219NSMD', 'FED/B1221NSMD', 'FED/B8321NSMA', 'FED/B1310NSMA', 'FED/B1030NSMA', 'FED/B3305NSMA', 'FED/B1245NSMA', 'FED/B1243NSMA', 'FED/B3248NSMA', 'FED/B1218NSMA', 'FED/B1217NSMA', 'FED/B1216NSMA', 'FED/B1215NSMA', 'FED/B3219NSMA', 'FED/B1221NSMA', 'FED/B8321NLGD', 'FED/B1310NLGD', 'FED/B1030NLGD', 'FED/B3305NLGD', 'FED/B1245NLGD', 'FED/B1243NLGD', 'FED/B3248NLGD', 'FED/B1218NLGD', 'FED/B1217NLGD', 'FED/B1216NLGD', 'FED/B1215NLGD', 'FED/B3219NLGD', 'FED/B1221NLGD', 'FED/B8321NLGA', 'FED/B1310NLGA', 'FED/B1030NLGA', 'FED/B3305NLGA', 'FED/B1245NLGA', 'FED/B1243NLGA', 'FED/B3248NLGA', 'FED/B1218NLGA', 'FED/B1217NLGA', 'FED/B1216NLGA', 'FED/B1215NLGA', 'FED/B3219NLGA', 'FED/B1221NLGA', 'FED/B8321NDMD', 'FED/B1310NDMD', 'FED/B1030NDMD', 'FED/B3305NDMD', 'FED/B1245NDMD', 'FED/B3248NDMD', 'FED/B1243NDMD', 'FED/B1218NDMD', 'FED/B1217NDMD', 'FED/B1216NDMD', 'FED/B1215NDMD', 'FED/B3219NDMD', 'FED/B1221NDMD', 'FED/B8321NDMA', 'FED/B1310NDMA', 'FED/B1030NDMA', 'FED/B3305NDMA', 'FED/B1245NDMA', 'FED/B1243NDMA', 'FED/B3248NDMA', 'FED/B1218NDMA', 'FED/B1217NDMA', 'FED/B1216NDMA', 'FED/B1215NDMA', 'FED/B3219NDMA', 'FED/B1221NDMA', 'FED/B8321NCBD', 'FED/B1310NCBD', 'FED/B1030NCBD', 'FED/B3305NCBD', 'FED/B1245NCBD', 'FED/B1243NCBD', 'FED/B3248NCBD', 'FED/B1218NCBD', 'FED/B1217NCBD', 'FED/B1216NCBD', 'FED/B1215NCBD', 'FED/B3219NCBD', 'FED/B1221NCBD', 'FED/B8321NCBA', 'FED/B1310NCBA', 'FED/B1030NCBA', 'FED/B3305NCBA', 'FED/B1245NCBA', 'FED/B1243NCBA', 'FED/B3248NCBA', 'FED/B1218NCBA', 'FED/B1217NCBA', 'FED/B1216NCBA', 'FED/B1215NCBA', 'FED/B3219NCBA', 'FED/B1221NCBA', 'FED/B1231NFRD', 'FED/B1091NFRD', 'FED/B1152NFRD', 'FED/B1100NFRD', 'FED/B1110NFRD', 'FED/B1072NFRD', 'FED/B1058NFRD', 'FED/B1151NFRD', 'FED/B1048NFRD', 'FED/B1047NFRD', 'FED/B1043NFRD', 'FED/B1247NFRD', 'FED/B1029NFRD', 'FED/B1220NFRD', 'FED/B1027NFRD', 'FED/B1026NFRD', 'FED/B1023NFRD', 'FED/B1020NFRD', 'FED/B1304NFRD', 'FED/B1303NFRD', 'FED/B1011NFRD', 'FED/B1302NFRD', 'FED/B1301NFRD', 'FED/B1003NFRD', 'FED/B1002NFRD', 'FED/B1001NFRD', 'FED/B1231NFRA', 'FED/B1091NFRA', 'FED/B1152NFRA', 'FED/B1100NFRA', 'FED/B1110NFRA', 'FED/B1072NFRA', 'FED/B1058NFRA', 'FED/B1151NFRA', 'FED/B1048NFRA', 'FED/B1047NFRA', 'FED/B1043NFRA', 'FED/B1247NFRA', 'FED/B1029NFRA', 'FED/B1220NFRA', 'FED/B1027NFRA', 'FED/B1026NFRA', 'FED/B1023NFRA', 'FED/B1020NFRA', 'FED/B1304NFRA', 'FED/B1303NFRA', 'FED/B1011NFRA', 'FED/B1302NFRA', 'FED/B1301NFRA', 'FED/B1003NFRA', 'FED/B1002NFRA', 'FED/B1001NFRA', 'FED/B1231NSMD', 'FED/B1091NSMD', 'FED/B1152NSMD', 'FED/B1100NSMD', 'FED/B1110NSMD', 'FED/B1072NSMD', 'FED/B1058NSMD', 'FED/B1151NSMD', 'FED/B1048NSMD', 'FED/B1047NSMD', 'FED/B1043NSMD', 'FED/B1247NSMD', 'FED/B1029NSMD', 'FED/B1220NSMD', 'FED/B1027NSMD', 'FED/B1026NSMD', 'FED/B1023NSMD', 'FED/B1020NSMD', 'FED/B1304NSMD', 'FED/B1303NSMD', 'FED/B1011NSMD', 'FED/B1302NSMD', 'FED/B1301NSMD', 'FED/B1003NSMD', 'FED/B1002NSMD', 'FED/B1001NSMD', 'FED/B1231NSMA', 'FED/B1091NSMA', 'FED/B1152NSMA', 'FED/B1100NSMA', 'FED/B1110NSMA', 'FED/B1072NSMA', 'FED/B1058NSMA', 'FED/B1151NSMA', 'FED/B1048NSMA', 'FED/B1047NSMA', 'FED/B1043NSMA', 'FED/B1247NSMA', 'FED/B1029NSMA', 'FED/B1220NSMA', 'FED/B1027NSMA', 'FED/B1026NSMA', 'FED/B1023NSMA', 'FED/B1020NSMA', 'FED/B1304NSMA', 'FED/B1303NSMA', 'FED/B1011NSMA', 'FED/B1302NSMA', 'FED/B1301NSMA', 'FED/B1003NSMA', 'FED/B1002NSMA', 'FED/B1001NSMA', 'FED/B1231NLGD', 'FED/B1091NLGD', 'FED/B1152NLGD', 'FED/B1100NLGD', 'FED/B1110NLGD', 'FED/B1072NLGD', 'FED/B1058NLGD', 'FED/B1151NLGD', 'FED/B1048NLGD', 'FED/B1047NLGD', 'FED/B1043NLGD', 'FED/B1247NLGD', 'FED/B1029NLGD', 'FED/B1220NLGD', 'FED/B1027NLGD', 'FED/B1026NLGD', 'FED/B1023NLGD', 'FED/B1020NLGD', 'FED/B1304NLGD', 'FED/B1303NLGD', 'FED/B1011NLGD', 'FED/B1302NLGD', 'FED/B1301NLGD', 'FED/B1003NLGD', 'FED/B1002NLGD', 'FED/B1001NLGD', 'FED/B1231NLGA', 'FED/B1091NLGA', 'FED/B1152NLGA', 'FED/B1100NLGA', 'FED/B1110NLGA', 'FED/B1072NLGA', 'FED/B1058NLGA', 'FED/B1151NLGA', 'FED/B1048NLGA', 'FED/B1047NLGA', 'FED/B1043NLGA', 'FED/B1247NLGA', 'FED/B1029NLGA', 'FED/B1220NLGA', 'FED/B1027NLGA', 'FED/B1026NLGA', 'FED/B1023NLGA', 'FED/B1020NLGA', 'FED/B1304NLGA', 'FED/B1303NLGA', 'FED/B1011NLGA', 'FED/B1302NLGA', 'FED/B1301NLGA', 'FED/B1003NLGA', 'FED/B1002NLGA', 'FED/B1001NLGA', 'FED/B1231NDMD', 'FED/B1091NDMD', 'FED/B1152NDMD', 'FED/B1100NDMD', 'FED/B1110NDMD', 'FED/B1072NDMD', 'FED/B1058NDMD', 'FED/B1151NDMD', 'FED/B1048NDMD', 'FED/B1047NDMD', 'FED/B1043NDMD', 'FED/B1247NDMD', 'FED/B1029NDMD', 'FED/B1220NDMD', 'FED/B1027NDMD', 'FED/B1026NDMD', 'FED/B1023NDMD', 'FED/B1020NDMD', 'FED/B1304NDMD', 'FED/B1303NDMD', 'FED/B1011NDMD', 'FED/B1302NDMD', 'FED/B1301NDMD', 'FED/B1003NDMD', 'FED/B1002NDMD', 'FED/B1001NDMD', 'FED/B1231NDMA', 'FED/B1091NDMA', 'FED/B1152NDMA', 'FED/B1100NDMA', 'FED/B1110NDMA', 'FED/B1072NDMA', 'FED/B1058NDMA', 'FED/B1151NDMA', 'FED/B1048NDMA', 'FED/B1047NDMA', 'FED/B1043NDMA', 'FED/B1247NDMA', 'FED/B1029NDMA', 'FED/B1220NDMA', 'FED/B1027NDMA', 'FED/B1026NDMA', 'FED/B1023NDMA', 'FED/B1020NDMA', 'FED/B1304NDMA', 'FED/B1303NDMA', 'FED/B1011NDMA', 'FED/B1302NDMA', 'FED/B1301NDMA', 'FED/B1003NDMA', 'FED/B1002NDMA', 'FED/B1001NDMA', 'FED/B1231NCBD', 'FED/B1091NCBD', 'FED/B1152NCBD', 'FED/B1100NCBD', 'FED/B1110NCBD', 'FED/B1072NCBD', 'FED/B1058NCBD', 'FED/B1151NCBD', 'FED/B1048NCBD', 'FED/B1047NCBD', 'FED/B1043NCBD', 'FED/B1247NCBD', 'FED/B1029NCBD', 'FED/B1220NCBD', 'FED/B1027NCBD', 'FED/B1026NCBD', 'FED/B1023NCBD', 'FED/B1020NCBD', 'FED/B1304NCBD', 'FED/B1303NCBD', 'FED/B1011NCBD', 'FED/B1302NCBD', 'FED/B1301NCBD', 'FED/B1003NCBD', 'FED/B1002NCBD', 'FED/B1001NCBD', 'FED/B1231NCBA', 'FED/B1091NCBA', 'FED/B1152NCBA', 'FED/B1100NCBA', 'FED/B1110NCBA', 'FED/B1072NCBA', 'FED/B1058NCBA', 'FED/B1151NCBA', 'FED/B1048NCBA', 'FED/B1047NCBA', 'FED/B1043NCBA', 'FED/B1247NCBA', 'FED/B1029NCBA', 'FED/B1220NCBA', 'FED/B1027NCBA', 'FED/B1026NCBA', 'FED/B1023NCBA', 'FED/B1020NCBA', 'FED/B1304NCBA', 'FED/B1303NCBA', 'FED/B1011NCBA', 'FED/B1302NCBA', 'FED/B1301NCBA', 'FED/B1003NCBA', 'FED/B1002NCBA', 'FED/B1001NCBA', 'FED/RIFSPPFAAD60_N_B', 'FED/MDL_N_WM', 'FED/MMFGB_N_WM', 'FED/MDTS_N_WM', 'FED/MDD_N_WM', 'FED/MCU_N_WM', 'FED/M2_N_WM', 'FED/M1_N_WM', 'FED/RIW_G327213_S', 'FED/IP_G327213_N', 'FED/IP_G327213_S', 'FED/RIW_G21113PQ_S', 'FED/RIW_G21113_S', 'FED/RIW_G21112_S', 'FED/IP_G21113PQ_N', 'FED/IP_G21113PQ_S', 'FED/IP_G21113_N', 'FED/IP_G21113_S', 'FED/IP_G21112_N', 'FED/IP_G21112_S', 'FED/MIKD_N_M', 'FED/MDL_N_M', 'FED/MDL_M', 'FED/RIW_G32522_S', 'FED/CAPUTL_G32522_S', 'FED/CAP_G32522_S', 'FED/IP_G32522_N', 'FED/IP_G32522_S', 'FED/RIW_G221111A4T8_S', 'FED/IP_G221111A4T8_S', 'FED/IP_G221111A4T8_N', 'FED/B3095NFRDM', 'FED/B3094NFRDM', 'FED/B3053NFRDM', 'FED/B3092NFRDM', 'FED/B3095NFRCMG', 'FED/B3095NFRAM', 'FED/B3094NFRAM']

#region imports
from AlgorithmImports import *
#endregion

class Fred:

    FRED = ['FRED/NROUST', 'FRED/GDPPOT', 'FRED/NGDPPOT', 'FRED/NROU', 'FRED/UNRATEMD', 'FRED/GDPC1MD', 'FRED/PCECTPIMD', 'FRED/JCXFEMD', 'FRED/FEDTARRL', 'FRED/FEDTARRM', 'FRED/FEDTARRH', 'FRED/FEDTARCTL', 'FRED/FEDTARCTM', 'FRED/FEDTARMD', 'FRED/FEDTARCTH', 'FRED/PCECTPIRM', 'FRED/JCXFERM', 'FRED/JCXFERL', 'FRED/JCXFERH', 'FRED/JCXFECTL', 'FRED/PCECTPIRL', 'FRED/JCXFECTM', 'FRED/GDPC1RL', 'FRED/UNRATERL', 'FRED/JCXFECTH', 'FRED/UNRATERH', 'FRED/GDPC1RH', 'FRED/UNRATERM', 'FRED/PCECTPIRH', 'FRED/UNRATECTL', 'FRED/GDPC1CTH', 'FRED/PCECTPICTL', 'FRED/PCECTPICTH', 'FRED/GDPC1RM', 'FRED/UNRATECTM', 'FRED/GDPC1CTL', 'FRED/PCECTPICTM', 'FRED/GDPC1CTM', 'FRED/UNRATECTH', 'FRED/RPTSYD', 'FRED/RPTTLD', 'FRED/RPONMBSD', 'FRED/RPONTSYD', 'FRED/RPONTTLD', 'FRED/RPONAGYD', 'FRED/RPMBSD', 'FRED/RPAGYD', 'FRED/RRPTTLD', 'FRED/RRPONTTLD', 'FRED/RRPTSYD', 'FRED/RRPONTSYD', 'FRED/T10Y2Y', 'FRED/T5YIE', 'FRED/T10Y3M', 'FRED/T10YIE', 'FRED/T5YIFR', 'FRED/FLEXSC', 'FRED/WUPSHO', 'FRED/WUDSHO', 'FRED/WSEFINOL', 'FRED/WSEFINTL1', 'FRED/WSEFINT1', 'FRED/WMTSEC1', 'FRED/WMTSECL1', 'FRED/WFASECL1', 'FRED/WFASEC1', 'FRED/WFCDA', 'FRED/WSEFINO', 'FRED/EFFR75', 'FRED/EFFR25', 'FRED/EFFR99', 'FRED/EFFRVOL', 'FRED/OBFR1', 'FRED/OBFR25', 'FRED/OBFR75', 'FRED/OBFRVOL', 'FRED/EFFR', 'FRED/EFFR1', 'FRED/OBFR', 'FRED/OBFR99', 'FRED/DTP10L25', 'FRED/D9WFCDA', 'FRED/D8WFCDA', 'FRED/D7WFCDA', 'FRED/D6WFCDA', 'FRED/D5WFCDA', 'FRED/D4WFCDA', 'FRED/D3WFCDA', 'FRED/D2WFCDA', 'FRED/D1WFCDA', 'FRED/D12WFCDA', 'FRED/D11WFCDA', 'FRED/D10WFCDA', 'FRED/NONFINGT80AAAMT', 'FRED/FINGT80AAAMT', 'FRED/ABGT80AAAMT', 'FRED/NONFINGT80A2P2AMT', 'FRED/NONFIN59AAAMT', 'FRED/FIN59AAAMT', 'FRED/AB59AAAMT', 'FRED/NONFIN59A2P2AMT', 'FRED/NONFIN4180AAAMT', 'FRED/FIN4180AAAMT', 'FRED/AB4180AAAMT', 'FRED/NONFIN4180A2P2AMT', 'FRED/NONFIN2140AAAMT', 'FRED/FIN2140AAAMT', 'FRED/AB2140AAAMT', 'FRED/NONFIN2140A2P2AMT', 'FRED/NONFIN14AAAMT', 'FRED/FIN14AAAMT', 'FRED/AB14AAAMT', 'FRED/NONFIN14A2P2AMT', 'FRED/NONFIN1020AAAMT', 'FRED/FIN1020AAAMT', 'FRED/NONFIN1020A2P2AMT', 'FRED/MKTGT80MKTAMT', 'FRED/MKT59MKTAMT', 'FRED/MKT4180MKTAMT', 'FRED/MKT2140MKTAMT', 'FRED/MKT14MKTAMT', 'FRED/MKT1020MKTAMT', 'FRED/RIFSPPNA2P2D01NB', 'FRED/FINGT80AAVOL', 'FRED/ABGT80AAVOL', 'FRED/NONFINGT80A2P2VOL', 'FRED/NONFIN59AAVOL', 'FRED/FIN59AAVOL', 'FRED/NONFIN59A2P2VOL', 'FRED/NONFIN4180AAVOL', 'FRED/FIN4180AAVOL', 'FRED/AB4180AAVOL', 'FRED/NONFIN4180A2P2VOL', 'FRED/NONFIN2140AAVOL', 'FRED/FIN2140AAVOL', 'FRED/AB2140AAVOL', 'FRED/NONFIN2140A2P2VOL', 'FRED/FIN14AAVOL', 'FRED/AB14AAVOL', 'FRED/NONFIN14A2P2VOL', 'FRED/NONFIN1020AAVOL', 'FRED/FIN1020AAVOL', 'FRED/AB1020AAVOL', 'FRED/NONFIN1020A2P2VOL', 'FRED/MKTGT80MKTVOL', 'FRED/MKT59MKTVOL', 'FRED/MKT4180MKTVOL', 'FRED/MKT2140MKTVOL', 'FRED/MKT14MKTVOL', 'FRED/MKT1020MKTVOL', 'FRED/DTBSPCKFFONWW', 'FRED/DTBSPCKFDUNWW', 'FRED/DTBSPCKFDONWW', 'FRED/DTBSPCKFDBNWW', 'FRED/DTBSPCKPTONWW', 'FRED/DTBSPCKPTNNWW', 'FRED/DTBSPCKPLONWW', 'FRED/RIFSPPNAAD07NB', 'FRED/RIFSPPAAAD07NB', 'FRED/RIFSPPNA2P2D07NB', 'FRED/RIFSPPAAAD15NB', 'FRED/RIFSPPNA2P2D15NB', 'FRED/DTBSPCKNOWW', 'FRED/DTBSPCKNONWW', 'FRED/NONFINGT80AAVOL', 'FRED/AB59AAVOL', 'FRED/DTBSPCKFFBNWW', 'FRED/DTBSPCKFDNNWW', 'FRED/DTBSPCKPTFNWW', 'FRED/DTBSPCKPLNNWW', 'FRED/DTBSPCKPLANWW', 'FRED/RIFSPPAAAD60NB', 'FRED/RIFSPPNAAD30NB', 'FRED/DTBSPCKFOWW', 'FRED/DTBSPCKFONWW', 'FRED/RIFSPPNA2P2D90NB', 'FRED/RIFSPPNAAD15NB', 'FRED/RIFSPPFAAD01NB', 'FRED/NONFIN14AAVOL', 'FRED/DTBSPCKCT2NWW', 'FRED/AB1020AAAMT', 'FRED/RIFSPPNAAD01NB', 'FRED/DTBSPCKPLFNWW', 'FRED/RIFSPPNA2P2D60NB', 'FRED/DTBSPCKPTANWW', 'FRED/RIFSPPAAAD01NB', 'FRED/RIFSPPAAAD90NB', 'FRED/RIFSPPNA2P2D30NB', 'FRED/DTBSPCKCT1NWW', 'FRED/RIFSPPFAAD07NB', 'FRED/RIFSPPAAAD30NB', 'FRED/RIFSPPFAAD90NB', 'FRED/T6MFF', 'FRED/T5YFF', 'FRED/T1YFF', 'FRED/T3MFF', 'FRED/AAAFF', 'FRED/CPFF', 'FRED/BAAFF', 'FRED/T10YFF', 'FRED/BAA10Y', 'FRED/AAA10Y', 'FRED/WLEMUINDXD', 'FRED/USEPUINDXD', 'FRED/TERM911Y', 'FRED/FEDD5T10', 'FRED/OTHL15', 'FRED/OTHL91T1Y', 'FRED/FEDD15', 'FRED/FEDD1690', 'FRED/WSDTREAA', 'FRED/WSDFDSA', 'FRED/WSDONTL', 'FRED/WLDECL', 'FRED/WLTEC', 'FRED/WSHOTSL', 'FRED/WLDACLC', 'FRED/WLRRAOL', 'FRED/WLTDHDIA', 'FRED/WLCFLSECL', 'FRED/WSHONBNA', 'FRED/WSHOFADSL', 'FRED/WSHOSHO', 'FRED/WOFDRBTHL', 'FRED/WLTLECL', 'FRED/WLDACL', 'FRED/WTCOL', 'FRED/WSHOBA', 'FRED/WTCOA', 'FRED/WLCFOCEL', 'FRED/WORAL', 'FRED/WOFSRBFL', 'FRED/WOLCL', 'FRED/WSRLL', 'FRED/WDTGAL', 'FRED/WPCLC', 'FRED/WPCL', 'FRED/WSDFDSL', 'FRED/WSDTREAL', 'FRED/WTFSRFL', 'FRED/WSHONBIIL', 'FRED/WSHONBNL', 'FRED/WSHONBIIA', 'FRED/WSHOICL', 'FRED/WSHOBL', 'FRED/WSHOICA', 'FRED/WABPL', 'FRED/WOFDRBORBL', 'FRED/WSDEALL', 'FRED/WLFN', 'FRED/WLAD', 'FRED/WLOCL', 'FRED/WOSDRL', 'FRED/WSHOTSA', 'FRED/WLCFLSCL', 'FRED/WACL', 'FRED/WOCE', 'FRED/WOFSRBFA', 'FRED/WDFOA', 'FRED/WOFDRBTHA', 'FRED/WDFOL', 'FRED/WCPCA', 'FRED/WAOAL', 'FRED/WSDONT', 'FRED/WSDEAL', 'FRED/WOFDRBORBA', 'FRED/WSB', 'FRED/WOFRAL', 'FRED/WCBLSA', 'FRED/WLCFLPCL', 'FRED/WTFORBAFA', 'FRED/WOSDRA', 'FRED/WOTHLIAB', 'FRED/WTFSRFA', 'FRED/WTFORBAFL', 'FRED/WCPIL', 'FRED/WLODLL', 'FRED/WLCFLL', 'FRED/WREPO', 'FRED/D8WLRRA', 'FRED/D8WLINT', 'FRED/D8WLTGAL', 'FRED/D8WLNNBH', 'FRED/D8WLOCL', 'FRED/D8WLFOL', 'FRED/D8WTLAC', 'FRED/D8WCPCA', 'FRED/D8WCPIL', 'FRED/D8WACL', 'FRED/REP1690', 'FRED/MBS1690', 'FRED/OTHL1690', 'FRED/MBS911Y', 'FRED/RREP1690', 'FRED/OTHL5T10', 'FRED/TERM15', 'FRED/FEDD1T5', 'FRED/OTHL1T5', 'FRED/REP15', 'FRED/TERM1690', 'FRED/FEDD10Y', 'FRED/SWP5T10', 'FRED/FEDD911Y', 'FRED/MBS1T5', 'FRED/RREP15', 'FRED/MBS5T10', 'FRED/SWP911Y', 'FRED/SWP1T5', 'FRED/SWP15', 'FRED/MBS15', 'FRED/TREAS15', 'FRED/SWP10Y', 'FRED/TREAS911Y', 'FRED/TERMT', 'FRED/SWP1690', 'FRED/TREAS1590', 'FRED/MBS10Y', 'FRED/TREAS5T10', 'FRED/TREAS1T5', 'FRED/TREAS10Y', 'FRED/FEDDT', 'FRED/TREAST', 'FRED/SWPT', 'FRED/WALL', 'FRED/WLRRAL', 'FRED/WTREGEN', 'FRED/WLODL', 'FRED/WCICL', 'FRED/WREPODEL', 'FRED/WOFSRBRBC', 'FRED/WCSL', 'FRED/WSHOMCB', 'FRED/WPC', 'FRED/WSC', 'FRED/WLDLCL', 'FRED/WOFSRBGSL', 'FRED/WCTCL', 'FRED/WOFSRBGSA', 'FRED/WMBSEC', 'FRED/WRBWFRBL', 'FRED/WFEDSEC', 'FRED/WALCL', 'FRED/WOTHAST', 'FRED/WLRRAA', 'FRED/WSECOUT', 'FRED/WGCAL', 'FRED/WREPOFOR', 'FRED/WLRRAFOIAL', 'FRED/WOTHLB', 'FRED/WRESBAL', 'FRED/WRESCRT', 'FRED/WCURCIR', 'FRED/FNFINCP', 'FRED/DNFINCPN', 'FRED/DFINCPN', 'FRED/NFINCP', 'FRED/FINCPN', 'FRED/FFINCPN', 'FRED/ABCOMPN', 'FRED/DFINCP', 'FRED/COMPUTN', 'FRED/DNFINCP', 'FRED/FFINCP', 'FRED/FINCP', 'FRED/OTHCOMPN', 'FRED/FNFINCPN', 'FRED/OTHCOMP', 'FRED/D5WLTOTL', 'FRED/D5WLRRA', 'FRED/D5WLINT', 'FRED/D5WLNNBH', 'FRED/D5WLTGAL', 'FRED/D5WLFOL', 'FRED/D5WLOCL', 'FRED/D5WCSL', 'FRED/D5WCPCA', 'FRED/D5WTLAC', 'FRED/D5WCPIL', 'FRED/D5WATAL', 'FRED/D5WACL', 'FRED/D5WLDEP', 'FRED/D5WACBS', 'FRED/D5WSRLL', 'FRED/D5WAISAL', 'FRED/D8WLTOTL', 'FRED/D8WLDEP', 'FRED/D8WCSL', 'FRED/D8WSRLL', 'FRED/D8WATAL', 'FRED/D8WACBS', 'FRED/D8WAISAL', 'FRED/D12WLTOTL', 'FRED/D12WLRRA', 'FRED/D12WLINT', 'FRED/D12WLTGAL', 'FRED/D12WLOCL', 'FRED/D12WLFOL', 'FRED/D12WLDEP', 'FRED/D12WCSL', 'FRED/D12WTLAC', 'FRED/D12WCPCA', 'FRED/D12WCPIL', 'FRED/D12WSRLL', 'FRED/D12WATAL', 'FRED/D12WACL', 'FRED/D12WLNNBH', 'FRED/D12WAISAL', 'FRED/D12WACBS', 'FRED/D3WLTOTL', 'FRED/D3WLINT', 'FRED/D3WLNNBH', 'FRED/D3WLFOL', 'FRED/D3WLTGAL', 'FRED/D3WLOCL', 'FRED/D3WLDEP', 'FRED/D3WTLAC', 'FRED/D3WCSL', 'FRED/D3WCPCA', 'FRED/D3WCPIL', 'FRED/D3WSRLL', 'FRED/D3WACL', 'FRED/D3WLRRA', 'FRED/D3WATAL', 'FRED/D3WACBS', 'FRED/D3WAISAL', 'FRED/D10WLRRA', 'FRED/D10WLTOTL', 'FRED/D10WLTGAL', 'FRED/D10WLDEP', 'FRED/D10WLFOL', 'FRED/D10WLOCL', 'FRED/D10WCPIL', 'FRED/D10WATAL', 'FRED/D10WCPCA', 'FRED/D10WTLAC', 'FRED/D10WSRLL', 'FRED/D10WACL', 'FRED/D10WCSL', 'FRED/D10WACBS', 'FRED/D10WLNNBH', 'FRED/D10WLINT', 'FRED/D10WAISAL', 'FRED/D9WLTOTL', 'FRED/D9WLRRA', 'FRED/D9WLNNBH', 'FRED/D9WLTGAL', 'FRED/D9WLOCL', 'FRED/D9WLFOL', 'FRED/D9WLDEP', 'FRED/D9WTLAC', 'FRED/D9WCSL', 'FRED/D9WCPCA', 'FRED/D9WCPIL', 'FRED/D9WSRLL', 'FRED/D9WACL', 'FRED/D9WLINT', 'FRED/D9WATAL', 'FRED/D9WACBS', 'FRED/D9WAISAL', 'FRED/D2WLTOTL', 'FRED/D2WLINT', 'FRED/D2WLNNBH', 'FRED/D2WLFOL', 'FRED/D2WCSL', 'FRED/D2WTLAC', 'FRED/D2WCPIL', 'FRED/D2WCPCA', 'FRED/D2WLRRA', 'FRED/D2WLOCL', 'FRED/D2WATAL', 'FRED/D2WLDEP', 'FRED/D2WLTGAL', 'FRED/D2WACL', 'FRED/D2WSRLL', 'FRED/D2WACBS', 'FRED/D2WAISAL', 'FRED/D11WLTOTL', 'FRED/D11WLRRA', 'FRED/D11WLINT', 'FRED/D11WLNNBH', 'FRED/D11WLTGAL', 'FRED/D11WLFOL', 'FRED/D11WLDEP', 'FRED/D11WLOCL', 'FRED/D11WCPCA', 'FRED/D11WTLAC', 'FRED/D11WCSL', 'FRED/D11WATAL', 'FRED/D11WCPIL', 'FRED/D11WSRLL', 'FRED/D11WACL', 'FRED/D11WAISAL', 'FRED/D11WACBS', 'FRED/D4WLTOTL', 'FRED/D4WLRRA', 'FRED/D4WLNNBH', 'FRED/D4WLINT', 'FRED/D4WLTGAL', 'FRED/D4WLFOL', 'FRED/D4WLOCL', 'FRED/D4WCPCA', 'FRED/D4WCPIL', 'FRED/D4WACL', 'FRED/D4WLDEP', 'FRED/D4WTLAC', 'FRED/D4WSRLL', 'FRED/D4WCSL', 'FRED/D4WATAL', 'FRED/D4WACBS', 'FRED/D4WAISAL', 'FRED/D7WLRRA', 'FRED/D7WLTOTL', 'FRED/D7WLINT', 'FRED/D7WLTGAL', 'FRED/D7WLNNBH', 'FRED/D7WLFOL', 'FRED/D7WLOCL', 'FRED/D7WLDEP', 'FRED/D7WCPIL', 'FRED/D7WACL', 'FRED/D7WTLAC', 'FRED/D7WCSL', 'FRED/D7WCPCA', 'FRED/D7WATAL', 'FRED/D7WACBS', 'FRED/D7WSRLL', 'FRED/D7WAISAL', 'FRED/D1WLTOTL', 'FRED/D1WLRRA', 'FRED/D1WLINT', 'FRED/D1WLNNBH', 'FRED/D1WLTGAL', 'FRED/D1WLOCL', 'FRED/D1WLFOL', 'FRED/D1WLDEP', 'FRED/D1WCPCA', 'FRED/D1WCSL', 'FRED/D1WCPIL', 'FRED/D1WSRLL', 'FRED/D1WTLAC', 'FRED/D1WATAL', 'FRED/D1WACBS', 'FRED/D1WACL', 'FRED/D1WAISAL', 'FRED/D6WLTOTL', 'FRED/D6WLRRA', 'FRED/D6WLNNBH', 'FRED/D6WLTGAL', 'FRED/D6WLFOL', 'FRED/D6WLDEP', 'FRED/D6WLOCL', 'FRED/D6WTLAC', 'FRED/D6WCPCA', 'FRED/D6WCPIL', 'FRED/D6WLINT', 'FRED/D6WACL', 'FRED/D6WATAL', 'FRED/D6WCSL', 'FRED/D6WSRLL', 'FRED/D6WACBS', 'FRED/D6WAISAL', 'FRED/DLTIIT', 'FRED/DFII7', 'FRED/DGS6MO', 'FRED/DFII30', 'FRED/DGS30', 'FRED/DTB6', 'FRED/DTB1YR', 'FRED/WPCREDIT', 'FRED/DFEDTARL', 'FRED/DPCREDIT', 'FRED/DFEDTARU', 'FRED/DCPN30', 'FRED/DCPF3M', 'FRED/TOTBORR', 'FRED/WPRIME', 'FRED/DFII20', 'FRED/DGS7', 'FRED/DTB4WK', 'FRED/DGS3', 'FRED/DGS1MO', 'FRED/DFII5', 'FRED/DGS3MO', 'FRED/DGS2', 'FRED/DPRIME', 'FRED/FF', 'FRED/DGS1', 'FRED/DGS20', 'FRED/DGS5', 'FRED/DFII10', 'FRED/DFF', 'FRED/USRECDP', 'FRED/USRECDM', 'FRED/USRECD', 'FRED/ABCOMP', 'FRED/COMPAPER', 'FRED/COMPOUT', 'FRED/DTB3', 'FRED/DGS10', 'FRED/DHHNGSP', 'FRED/RIFSPPNAAD60NB', 'FRED/RIFSPPFAAD30NB', 'FRED/DCPN2M', 'FRED/DCPF1M', 'FRED/GASREGREFW', 'FRED/GASREGCOVW', 'FRED/GASPRMREFW', 'FRED/GASPRMCOVW', 'FRED/GASMIDREFW', 'FRED/GASMIDCOVW', 'FRED/GASDESLSW', 'FRED/GASALLREFW', 'FRED/GASALLCOVW', 'FRED/GASREGREFWCW', 'FRED/GASREGCOVWCW', 'FRED/GASPRMREFWCW', 'FRED/GASPRMCOVWCW', 'FRED/GASDESLSWCW', 'FRED/GASMIDREFWCW', 'FRED/GASMIDCOVWCW', 'FRED/GASALLREFWCW', 'FRED/GASALLCOVWCW', 'FRED/GASREGCOVRMW', 'FRED/GASPRMCOVRMW', 'FRED/GASDESLSRMW', 'FRED/GASMIDCOVRMW', 'FRED/GASALLCOVRMW', 'FRED/GASREGREFMWW', 'FRED/GASREGCOVMWW', 'FRED/GASPRMREFMWW', 'FRED/GASPRMCOVMWW', 'FRED/GASDESLSMWW', 'FRED/GASMIDREFMWW', 'FRED/GASMIDCOVMWW', 'FRED/GASALLREFMWW', 'FRED/GASALLCOVMWW', 'FRED/GASREGREFGCW', 'FRED/GASREGCOVGCW', 'FRED/GASPRMREFGCW', 'FRED/GASPRMCOVGCW', 'FRED/GASDESLSGCW', 'FRED/GASMIDREFGCW', 'FRED/GASMIDCOVGCW', 'FRED/GASALLREFGCW', 'FRED/GASALLCOVGCW', 'FRED/GASREGREFECW', 'FRED/GASREGCOVECW', 'FRED/GASPRMREFECW', 'FRED/GASPRMCOVECW', 'FRED/GASDESLSECW', 'FRED/GASMIDREFECW', 'FRED/GASMIDCOVECW', 'FRED/GASALLREFECW', 'FRED/GASALLCOVECW', 'FRED/GASMIDWCW', 'FRED/GASMIDRMW', 'FRED/GASPRMRMW', 'FRED/GASPRMMWW', 'FRED/GASMIDMWW', 'FRED/GASALLMWW', 'FRED/DDFUELNYH', 'FRED/DJFUELUSGULF', 'FRED/DGASNYH', 'FRED/DRGASLA', 'FRED/DDFUELLA', 'FRED/DGASUSGULF', 'FRED/DDFUELUSGULF', 'FRED/DHOILNYH', 'FRED/DPROPANEMBTX', 'FRED/DCOILWTICO', 'FRED/DCOILBRENTEU', 'FRED/GASPRMGCW', 'FRED/GASMIDGCW', 'FRED/GASPRMECW', 'FRED/GASALLGCW', 'FRED/GASPRMWCW', 'FRED/GASALLWCW', 'FRED/GASREGRMW', 'FRED/GASREGWCW', 'FRED/GASREGMWW', 'FRED/GASALLRMW', 'FRED/GASREGGCW', 'FRED/GASMIDECW', 'FRED/GASDESRMW', 'FRED/GASDESGCW', 'FRED/GASMIDW', 'FRED/GASDESMWW', 'FRED/GASREGECW', 'FRED/GASDESWCW', 'FRED/GASDESECW', 'FRED/GASPRMW', 'FRED/GASALLECW', 'FRED/GASALLW', 'FRED/GASDESW', 'FRED/GASREGW', 'FRED/ICNSA', 'FRED/ICSA', 'FRED/IC4WSA', 'FRED/STLFSI2', 'FRED/DTWEXBGS', 'FRED/THREEFYTP8', 'FRED/THREEFYTP9', 'FRED/THREEFYTP7', 'FRED/THREEFYTP6', 'FRED/THREEFYTP4', 'FRED/THREEFYTP3', 'FRED/THREEFYTP5', 'FRED/THREEFYTP2', 'FRED/THREEFYTP10', 'FRED/THREEFYTP1', 'FRED/THREEFY8', 'FRED/THREEFY9', 'FRED/THREEFY5', 'FRED/THREEFY3', 'FRED/THREEFY6', 'FRED/THREEFY7', 'FRED/THREEFY4', 'FRED/THREEFY2', 'FRED/THREEFY10', 'FRED/THREEFFTP9', 'FRED/THREEFFTP8', 'FRED/THREEFFTP7', 'FRED/THREEFY1', 'FRED/THREEFFTP10', 'FRED/THREEFFTP6', 'FRED/THREEFF8', 'FRED/THREEFFTP4', 'FRED/THREEFF5', 'FRED/THREEFF1', 'FRED/THREEFFTP3', 'FRED/THREEFFTP5', 'FRED/THREEFFTP1', 'FRED/THREEFF4', 'FRED/THREEFF7', 'FRED/THREEFF2', 'FRED/THREEFF9', 'FRED/THREEFFTP2', 'FRED/THREEFF6', 'FRED/THREEFF3', 'FRED/THREEFF10', 'FRED/WHHNGSP', 'FRED/RIFSPPNAAD90NB', 'FRED/NFCINONFINLEVERAGE', 'FRED/NFCIRISK', 'FRED/NFCILEVERAGE', 'FRED/NFCICREDIT', 'FRED/WLTIIT', 'FRED/WFII7', 'FRED/WFII30', 'FRED/WFII20', 'FRED/WFII5', 'FRED/WGS7YR', 'FRED/WGS1MO', 'FRED/WGS6MO', 'FRED/WGS20YR', 'FRED/WFII10', 'FRED/WGS3YR', 'FRED/WGS30YR', 'FRED/WTB6MS', 'FRED/WTB4WK', 'FRED/WTB1YR', 'FRED/WCPN2M', 'FRED/WCPN3M', 'FRED/WCPN1M', 'FRED/WCPF3M', 'FRED/DCPN3M', 'FRED/WGS3MO', 'FRED/WGS2YR', 'FRED/WGS5YR', 'FRED/WGS1YR', 'FRED/DEXVZUS', 'FRED/DEXNOUS', 'FRED/DEXSLUS', 'FRED/DEXDNUS', 'FRED/DEXHKUS', 'FRED/DEXSDUS', 'FRED/DEXTHUS', 'FRED/DEXSFUS', 'FRED/DEXSIUS', 'FRED/DEXUSNZ', 'FRED/DEXMAUS', 'FRED/DEXKOUS', 'FRED/DEXTAUS', 'FRED/DEXBZUS', 'FRED/DEXINUS', 'FRED/DEXSZUS', 'FRED/DEXUSAL', 'FRED/DEXUSUK', 'FRED/DEXCAUS', 'FRED/DEXMXUS', 'FRED/DEXCHUS', 'FRED/DEXJPUS', 'FRED/WDFUELNYH', 'FRED/WGASNYH', 'FRED/WPROPANEMBTX', 'FRED/WHOILNYH', 'FRED/WDFUELUSGULF', 'FRED/WRGASLA', 'FRED/WGASUSGULF', 'FRED/WDFUELLA', 'FRED/WJFUELUSGULF', 'FRED/WCOILBRENTEU', 'FRED/WCOILWTICO', 'FRED/NFCI', 'FRED/ANFCI', 'FRED/WGS10YR', 'FRED/WTB3MS', 'FRED/DEXUSEU', 'FRED/TEDRATE', 'FRED/VIRICLAIMS', 'FRED/PRIICLAIMS', 'FRED/WYICLAIMS', 'FRED/WVICLAIMS', 'FRED/SDICLAIMS', 'FRED/PAICLAIMS', 'FRED/TNICLAIMS', 'FRED/NMICLAIMS', 'FRED/NDICLAIMS', 'FRED/NHICLAIMS', 'FRED/NEICLAIMS', 'FRED/MTICLAIMS', 'FRED/MNICLAIMS', 'FRED/MSICLAIMS', 'FRED/KYICLAIMS', 'FRED/DCICLAIMS', 'FRED/DEICLAIMS', 'FRED/COICLAIMS', 'FRED/ARICLAIMS', 'FRED/AKICLAIMS', 'FRED/VAICLAIMS', 'FRED/WIICLAIMS', 'FRED/WAICLAIMS', 'FRED/TXICLAIMS', 'FRED/UTICLAIMS', 'FRED/VTICLAIMS', 'FRED/ORICLAIMS', 'FRED/RIICLAIMS', 'FRED/SCICLAIMS', 'FRED/OHICLAIMS', 'FRED/OKICLAIMS', 'FRED/NVICLAIMS', 'FRED/NYICLAIMS', 'FRED/NCICLAIMS', 'FRED/MOICLAIMS', 'FRED/NJICLAIMS', 'FRED/MDICLAIMS', 'FRED/MIICLAIMS', 'FRED/MAICLAIMS', 'FRED/MEICLAIMS', 'FRED/LAICLAIMS', 'FRED/KSICLAIMS', 'FRED/IAICLAIMS', 'FRED/ILICLAIMS', 'FRED/HIICLAIMS', 'FRED/INICLAIMS', 'FRED/IDICLAIMS', 'FRED/CTICLAIMS', 'FRED/GAICLAIMS', 'FRED/FLICLAIMS', 'FRED/CAICLAIMS', 'FRED/AZICLAIMS', 'FRED/ALICLAIMS', 'FRED/CCNSA', 'FRED/CC4WSA', 'FRED/IURNSA', 'FRED/IURSA', 'FRED/CCSA', 'FRED/RIFSPPFAAD15NB', 'FRED/WCPF2M', 'FRED/WCPF1M', 'FRED/OSEDCBW027NBOG', 'FRED/SNFSCBW027SBOG', 'FRED/SNFSCBW027NBOG', 'FRED/SNFLCBW027SBOG', 'FRED/SNFLCBW027NBOG', 'FRED/SNFFRIW027SBOG', 'FRED/SNFFRIW027NBOG', 'FRED/SNFACBW027NBOG', 'FRED/SNFACBW027SBOG', 'FRED/SNFDCBW027NBOG', 'FRED/SNFDCBW027SBOG', 'FRED/SMPSCBW027SBOG', 'FRED/SMPSCBW027NBOG', 'FRED/SMPLCBW027SBOG', 'FRED/SMPLCBW027NBOG', 'FRED/SMPFRIW027NBOG', 'FRED/SMPFRIW027SBOG', 'FRED/SMPDCBW027SBOG', 'FRED/SMPDCBW027NBOG', 'FRED/SMPACBW027SBOG', 'FRED/SMPACBW027NBOG', 'FRED/SBFSCBW027SBOG', 'FRED/SBFSCBW027NBOG', 'FRED/SBFLCBW027SBOG', 'FRED/SBFLCBW027NBOG', 'FRED/SBFFRIW027SBOG', 'FRED/SBFFRIW027NBOG', 'FRED/SBFDCBW027SBOG', 'FRED/SBFDCBW027NBOG', 'FRED/SBFACBW027NBOG', 'FRED/SBFACBW027SBOG', 'FRED/RRESCBW027SBOG', 'FRED/RRESCBW027NBOG', 'FRED/RRELCBW027SBOG', 'FRED/RRELCBW027NBOG', 'FRED/RREFRIW027SBOG', 'FRED/RREFRIW027NBOG', 'FRED/RREDCBW027SBOG', 'FRED/RREDCBW027NBOG', 'FRED/RREACBW027SBOG', 'FRED/RREACBW027NBOG', 'FRED/TAMLCBW027SBOG', 'FRED/TAMSCBW027SBOG', 'FRED/TAMSCBW027NBOG', 'FRED/TAMLCBW027NBOG', 'FRED/TAMDCBW027SBOG', 'FRED/TAMDCBW027NBOG', 'FRED/TAMFRIW027SBOG', 'FRED/TAMFRIW027NBOG', 'FRED/TAMACBW027SBOG', 'FRED/TAMACBW027NBOG', 'FRED/LNFSCBW027NBOG', 'FRED/LNFSCBW027SBOG', 'FRED/LNFLCBW027NBOG', 'FRED/LNFLCBW027SBOG', 'FRED/LNFFRIW027SBOG', 'FRED/LNFFRIW027NBOG', 'FRED/LNFDCBW027SBOG', 'FRED/LNFDCBW027NBOG', 'FRED/LNFACBW027SBOG', 'FRED/LNFACBW027NBOG', 'FRED/OLNSCBW027SBOG', 'FRED/OLNSCBW027NBOG', 'FRED/OLNLCBW027SBOG', 'FRED/OLNLCBW027NBOG', 'FRED/OLNACBW027NBOG', 'FRED/OLNACBW027SBOG', 'FRED/OLNDCBW027SBOG', 'FRED/OLNFRIW027NBOG', 'FRED/OLNDCBW027NBOG', 'FRED/OLNFRIW027SBOG', 'FRED/CLDSCBW027NBOG', 'FRED/CLDSCBW027SBOG', 'FRED/CLDFRIW027NBOG', 'FRED/CLDFRIW027SBOG', 'FRED/CLDLCBW027NBOG', 'FRED/CLDLCBW027SBOG', 'FRED/CLDDCBW027NBOG', 'FRED/CLDACBW027NBOG', 'FRED/CLDDCBW027SBOG', 'FRED/CLDACBW027SBOG', 'FRED/CARSCBW027NBOG', 'FRED/CARSCBW027SBOG', 'FRED/CARLCBW027SBOG', 'FRED/CARLCBW027NBOG', 'FRED/CARFRIW027SBOG', 'FRED/CARFRIW027NBOG', 'FRED/CARDCBW027SBOG', 'FRED/CARDCBW027NBOG', 'FRED/CARACBW027SBOG', 'FRED/CARACBW027NBOG', 'FRED/AOCSCBW027NBOG', 'FRED/AOCSCBW027SBOG', 'FRED/AOCLCBW027SBOG', 'FRED/AOCLCBW027NBOG', 'FRED/AOCFRIW027SBOG', 'FRED/AOCFRIW027NBOG', 'FRED/AOCDCBW027SBOG', 'FRED/AOCDCBW027NBOG', 'FRED/AOCACBW027SBOG', 'FRED/AOCACBW027NBOG', 'FRED/TASSCBW027SBOG', 'FRED/TASSCBW027NBOG', 'FRED/TNMSCBW027SBOG', 'FRED/TNMSCBW027NBOG', 'FRED/TNMLCBW027SBOG', 'FRED/TNMLCBW027NBOG', 'FRED/TNMFRIW027NBOG', 'FRED/TNMFRIW027SBOG', 'FRED/TNMDCBW027NBOG', 'FRED/TNMDCBW027SBOG', 'FRED/TNMACBW027SBOG', 'FRED/TNMACBW027NBOG', 'FRED/TMBSCBW027NBOG', 'FRED/TMBSCBW027SBOG', 'FRED/TMBLCBW027NBOG', 'FRED/TMBLCBW027SBOG', 'FRED/TMBFRIW027NBOG', 'FRED/TMBFRIW027SBOG', 'FRED/TMBDCBW027SBOG', 'FRED/TMBDCBW027NBOG', 'FRED/TMBACBW027NBOG', 'FRED/TMBACBW027SBOG', 'FRED/TASLCBW027SBOG', 'FRED/TASLCBW027NBOG', 'FRED/TASFRIW027SBOG', 'FRED/TASFRIW027NBOG', 'FRED/TASDCBW027NBOG', 'FRED/TASDCBW027SBOG', 'FRED/TASACBW027NBOG', 'FRED/TASACBW027SBOG', 'FRED/TLBSCBW027NBOG', 'FRED/TLBSCBW027SBOG', 'FRED/TLBLCBW027SBOG', 'FRED/TLBLCBW027NBOG', 'FRED/TLBFRIW027NBOG', 'FRED/TLBFRIW027SBOG', 'FRED/TLBDCBW027SBOG', 'FRED/TLBDCBW027NBOG', 'FRED/TLBACBW027SBOG', 'FRED/TLBACBW027NBOG', 'FRED/TLASCBW027NBOG', 'FRED/TLASCBW027SBOG', 'FRED/TLALCBW027SBOG', 'FRED/TLALCBW027NBOG', 'FRED/TLAFRIW027SBOG', 'FRED/TLAFRIW027NBOG', 'FRED/TLADCBW027NBOG', 'FRED/TLADCBW027SBOG', 'FRED/TLAACBW027SBOG', 'FRED/TLAACBW027NBOG', 'FRED/SBCSCBW027SBOG', 'FRED/SBCSCBW027NBOG', 'FRED/SBCLCBW027NBOG', 'FRED/SBCLCBW027SBOG', 'FRED/SBCFRIW027SBOG', 'FRED/SBCFRIW027NBOG', 'FRED/SBCDCBW027SBOG', 'FRED/SBCDCBW027NBOG', 'FRED/SBCACBW027NBOG', 'FRED/SBCACBW027SBOG', 'FRED/RALSCBW027NBOG', 'FRED/RALSCBW027SBOG', 'FRED/RALLCBW027SBOG', 'FRED/RALLCBW027NBOG', 'FRED/RALFRIW027NBOG', 'FRED/RALFRIW027SBOG', 'FRED/RALDCBW027NBOG', 'FRED/RALDCBW027SBOG', 'FRED/RALACBW027SBOG', 'FRED/RALACBW027NBOG', 'FRED/RELSCBW027NBOG', 'FRED/RELSCBW027SBOG', 'FRED/RHESCBW027NBOG', 'FRED/RHESCBW027SBOG', 'FRED/RHELCBW027SBOG', 'FRED/RHELCBW027NBOG', 'FRED/RHEFRIW027SBOG', 'FRED/RHEFRIW027NBOG', 'FRED/RHEDCBW027SBOG', 'FRED/RHEDCBW027NBOG', 'FRED/RHEACBW027NBOG', 'FRED/RHEACBW027SBOG', 'FRED/RELLCBW027SBOG', 'FRED/RELLCBW027NBOG', 'FRED/RELFRIW027SBOG', 'FRED/RELFRIW027NBOG', 'FRED/RELDCBW027NBOG', 'FRED/RELDCBW027SBOG', 'FRED/CRESCBW027NBOG', 'FRED/CRESCBW027SBOG', 'FRED/CRELCBW027SBOG', 'FRED/CRELCBW027NBOG', 'FRED/CREFRIW027NBOG', 'FRED/CREFRIW027SBOG', 'FRED/CREDCBW027SBOG', 'FRED/CREDCBW027NBOG', 'FRED/CREACBW027NBOG', 'FRED/CREACBW027SBOG', 'FRED/CRLSCBW027SBOG', 'FRED/CRLSCBW027NBOG', 'FRED/CRLLCBW027SBOG', 'FRED/CRLLCBW027NBOG', 'FRED/CRLFRIW027SBOG', 'FRED/CRLFRIW027NBOG', 'FRED/CRLDCBW027NBOG', 'FRED/CRLDCBW027SBOG', 'FRED/CRLACBW027SBOG', 'FRED/CRLACBW027NBOG', 'FRED/RELACBW027SBOG', 'FRED/RELACBW027NBOG', 'FRED/OSESCBW027SBOG', 'FRED/OSESCBW027NBOG', 'FRED/ONMSCBW027NBOG', 'FRED/ONMSCBW027SBOG', 'FRED/ONMLCBW027NBOG', 'FRED/ONMLCBW027SBOG', 'FRED/ONMFRIW027SBOG', 'FRED/ONMFRIW027NBOG', 'FRED/ONMDCBW027NBOG', 'FRED/ONMDCBW027SBOG', 'FRED/ONMACBW027SBOG', 'FRED/ONMACBW027NBOG', 'FRED/OMBSCBW027NBOG', 'FRED/OMBSCBW027SBOG', 'FRED/OMBLCBW027SBOG', 'FRED/OMBLCBW027NBOG', 'FRED/OMBFRIW027NBOG', 'FRED/OMBFRIW027SBOG', 'FRED/OMBDCBW027NBOG', 'FRED/OMBDCBW027SBOG', 'FRED/OMBACBW027NBOG', 'FRED/OMBACBW027SBOG', 'FRED/OSELCBW027NBOG', 'FRED/OSELCBW027SBOG', 'FRED/OSEFRIW027SBOG', 'FRED/OSEFRIW027NBOG', 'FRED/OSEDCBW027SBOG', 'FRED/OSEACBW027NBOG', 'FRED/OSEACBW027SBOG', 'FRED/AOLSCBW027SBOG', 'FRED/AOLSCBW027NBOG', 'FRED/AOLLCBW027SBOG', 'FRED/AOLLCBW027NBOG', 'FRED/AOLFRIW027SBOG', 'FRED/AOLFRIW027NBOG', 'FRED/AOLDCBW027SBOG', 'FRED/AOLDCBW027NBOG', 'FRED/AOLACBW027SBOG', 'FRED/AOLACBW027NBOG', 'FRED/ODSSCBW027NBOG', 'FRED/ODSSCBW027SBOG', 'FRED/ODSLCBW027NBOG', 'FRED/ODSLCBW027SBOG', 'FRED/ODSFRIW027SBOG', 'FRED/ODSFRIW027NBOG', 'FRED/ODSDCBW027NBOG', 'FRED/ODSDCBW027SBOG', 'FRED/ODSACBW027NBOG', 'FRED/ODSACBW027SBOG', 'FRED/NUGSCBW027SBOG', 'FRED/NUGSCBW027NBOG', 'FRED/NUGLCBW027SBOG', 'FRED/NUGLCBW027NBOG', 'FRED/NUGFRIW027NBOG', 'FRED/NUGFRIW027SBOG', 'FRED/NUGDCBW027NBOG', 'FRED/NUGDCBW027SBOG', 'FRED/NUGACBW027SBOG', 'FRED/NUGACBW027NBOG', 'FRED/NDFSCBW027NBOG', 'FRED/NDFSCBW027SBOG', 'FRED/NDFLCBW027SBOG', 'FRED/NDFLCBW027NBOG', 'FRED/NDFFRIW027NBOG', 'FRED/NDFFRIW027SBOG', 'FRED/NDFDCBW027NBOG', 'FRED/NDFDCBW027SBOG', 'FRED/NDFACBW027SBOG', 'FRED/NDFACBW027NBOG', 'FRED/LCBSCBW027SBOG', 'FRED/LCBSCBW027NBOG', 'FRED/LCBLCBW027NBOG', 'FRED/LCBLCBW027SBOG', 'FRED/LCBFRIW027NBOG', 'FRED/LCBFRIW027SBOG', 'FRED/LCBDCBW027NBOG', 'FRED/LCBDCBW027SBOG', 'FRED/LCBACBW027SBOG', 'FRED/LCBACBW027NBOG', 'FRED/LLBSCBW027SBOG', 'FRED/LLBSCBW027NBOG', 'FRED/LLBLCBW027NBOG', 'FRED/LLBLCBW027SBOG', 'FRED/LLBFRIW027NBOG', 'FRED/LLBFRIW027SBOG', 'FRED/LLBDCBW027SBOG', 'FRED/LLBDCBW027NBOG', 'FRED/TOTLLNSA', 'FRED/LTDSCBW027NBOG', 'FRED/LTDSCBW027SBOG', 'FRED/LTDLCBW027NBOG', 'FRED/LTDLCBW027SBOG', 'FRED/LTDFRIW027SBOG', 'FRED/LTDFRIW027NBOG', 'FRED/LTDDCBW027NBOG', 'FRED/LTDDCBW027SBOG', 'FRED/LTDACBW027NBOG', 'FRED/LTDACBW027SBOG', 'FRED/DPSSCBW027NBOG', 'FRED/DPSSCBW027SBOG', 'FRED/DPSLCBW027SBOG', 'FRED/DPSLCBW027NBOG', 'FRED/DPSFRIW027NBOG', 'FRED/DPSFRIW027SBOG', 'FRED/DPSDCBW027SBOG', 'FRED/DPSDCBW027NBOG', 'FRED/DPSACBW027NBOG', 'FRED/DPSACBW027SBOG', 'FRED/CLSSCBW027SBOG', 'FRED/CLSSCBW027NBOG', 'FRED/OCLSCBW027NBOG', 'FRED/OCLSCBW027SBOG', 'FRED/OCLLCBW027NBOG', 'FRED/OCLLCBW027SBOG', 'FRED/OCLFRIW027NBOG', 'FRED/OCLFRIW027SBOG', 'FRED/OCLDCBW027SBOG', 'FRED/OCLDCBW027NBOG', 'FRED/OCLACBW027NBOG', 'FRED/OCLACBW027SBOG', 'FRED/CLSLCBW027NBOG', 'FRED/CLSLCBW027SBOG', 'FRED/CLSFRIW027NBOG', 'FRED/CLSFRIW027SBOG', 'FRED/CLSDCBW027NBOG', 'FRED/CLSDCBW027SBOG', 'FRED/CCLSCBW027SBOG', 'FRED/CCLSCBW027NBOG', 'FRED/CCLLCBW027NBOG', 'FRED/CCLLCBW027SBOG', 'FRED/CCLFRIW027NBOG', 'FRED/CCLFRIW027SBOG', 'FRED/CCLDCBW027NBOG', 'FRED/CCLDCBW027SBOG', 'FRED/CCLACBW027SBOG', 'FRED/CCLACBW027NBOG', 'FRED/CLSACBW027NBOG', 'FRED/CLSACBW027SBOG', 'FRED/CILSCBW027NBOG', 'FRED/CILSCBW027SBOG', 'FRED/CIBOARDNSA', 'FRED/CILFRIW027NBOG', 'FRED/CILFRIW027SBOG', 'FRED/CILDCBW027NBOG', 'FRED/CILDCBW027SBOG', 'FRED/TOTCINSA', 'FRED/CASSCBW027NBOG', 'FRED/CASSCBW027SBOG', 'FRED/CASLCBW027SBOG', 'FRED/CASLCBW027NBOG', 'FRED/CASFRIW027SBOG', 'FRED/CASFRIW027NBOG', 'FRED/CASDCBW027NBOG', 'FRED/CASDCBW027SBOG', 'FRED/CASACBW027SBOG', 'FRED/CASACBW027NBOG', 'FRED/BC0SCBW027NBOG', 'FRED/BC0SCBW027SBOG', 'FRED/BC0LCBW027NBOG', 'FRED/BC0LCBW027SBOG', 'FRED/BC0FRIW027NBOG', 'FRED/BC0FRIW027SBOG', 'FRED/BC0DCBW027NBOG', 'FRED/BC0DCBW027SBOG', 'FRED/TOTBKCRNSA', 'FRED/ALLSCBW027NBOG', 'FRED/ALLSCBW027SBOG', 'FRED/ALLLCBW027SBOG', 'FRED/ALLLCBW027NBOG', 'FRED/ALLFRIW027NBOG', 'FRED/ALLFRIW027SBOG', 'FRED/ALLDCBW027NBOG', 'FRED/ALLDCBW027SBOG', 'FRED/ALLACBW027SBOG', 'FRED/ALLACBW027NBOG', 'FRED/TOTCI', 'FRED/CIBOARD', 'FRED/TOTLL', 'FRED/TOTBKCR', 'FRED/RIFSPPFAAD60NB', 'FRED/DCPF2M', 'FRED/VIRCEMPLOY', 'FRED/VIRCCLAIMS', 'FRED/VIRINSUREDUR', 'FRED/PRICCLAIMS', 'FRED/PRICEMPLOY', 'FRED/PRIINSUREDUR', 'FRED/VAINSUREDUR', 'FRED/WIINSUREDUR', 'FRED/WYINSUREDUR', 'FRED/WVINSUREDUR', 'FRED/WAINSUREDUR', 'FRED/TXINSUREDUR', 'FRED/UTINSUREDUR', 'FRED/UTCCLAIMS', 'FRED/SDINSUREDUR', 'FRED/SDCEMPLOY', 'FRED/PAINSUREDUR', 'FRED/TNINSUREDUR', 'FRED/ORINSUREDUR', 'FRED/ORCCLAIMS', 'FRED/RIINSUREDUR', 'FRED/OHCEMPLOY', 'FRED/OKINSUREDUR', 'FRED/NVINSUREDUR', 'FRED/NYINSUREDUR', 'FRED/NYCCLAIMS', 'FRED/NYCEMPLOY', 'FRED/NDINSUREDUR', 'FRED/MOCCLAIMS', 'FRED/NJINSUREDUR', 'FRED/NEINSUREDUR', 'FRED/MNINSUREDUR', 'FRED/MDINSUREDUR', 'FRED/MICEMPLOY', 'FRED/MICCLAIMS', 'FRED/MAINSUREDUR', 'FRED/MEINSUREDUR', 'FRED/LACEMPLOY', 'FRED/KYINSUREDUR', 'FRED/KSINSUREDUR', 'FRED/ILINSUREDUR', 'FRED/ILCEMPLOY', 'FRED/ILCCLAIMS', 'FRED/ININSUREDUR', 'FRED/INCEMPLOY', 'FRED/INCCLAIMS', 'FRED/IDINSUREDUR', 'FRED/CTINSUREDUR', 'FRED/CTCEMPLOY', 'FRED/GAINSUREDUR', 'FRED/FLINSUREDUR', 'FRED/FLCCLAIMS', 'FRED/CAINSUREDUR', 'FRED/AZINSUREDUR', 'FRED/ARINSUREDUR', 'FRED/ARCCLAIMS', 'FRED/ALINSUREDUR', 'FRED/VACEMPLOY', 'FRED/VACCLAIMS', 'FRED/WICEMPLOY', 'FRED/WICCLAIMS', 'FRED/WYCEMPLOY', 'FRED/WYCCLAIMS', 'FRED/WVCEMPLOY', 'FRED/WVCCLAIMS', 'FRED/WACEMPLOY', 'FRED/WACCLAIMS', 'FRED/TXCEMPLOY', 'FRED/TXCCLAIMS', 'FRED/UTCEMPLOY', 'FRED/VTCEMPLOY', 'FRED/VTINSUREDUR', 'FRED/VTCCLAIMS', 'FRED/SDCCLAIMS', 'FRED/PACCLAIMS', 'FRED/PACEMPLOY', 'FRED/TNCEMPLOY', 'FRED/TNCCLAIMS', 'FRED/ORCEMPLOY', 'FRED/RICEMPLOY', 'FRED/RICCLAIMS', 'FRED/SCCEMPLOY', 'FRED/SCINSUREDUR', 'FRED/SCCCLAIMS', 'FRED/OHINSUREDUR', 'FRED/OHCCLAIMS', 'FRED/OKCCLAIMS', 'FRED/OKCEMPLOY', 'FRED/NVCEMPLOY', 'FRED/NVCCLAIMS', 'FRED/NMCCLAIMS', 'FRED/NMINSUREDUR', 'FRED/NMCEMPLOY', 'FRED/NDCEMPLOY', 'FRED/NDCCLAIMS', 'FRED/NCCEMPLOY', 'FRED/NCINSUREDUR', 'FRED/NCCCLAIMS', 'FRED/NHCEMPLOY', 'FRED/NHCCLAIMS', 'FRED/NHINSUREDUR', 'FRED/MOINSUREDUR', 'FRED/MOCEMPLOY', 'FRED/NJCEMPLOY', 'FRED/NJCCLAIMS', 'FRED/NECEMPLOY', 'FRED/NECCLAIMS', 'FRED/MTCEMPLOY', 'FRED/MTINSUREDUR', 'FRED/MTCCLAIMS', 'FRED/MNCEMPLOY', 'FRED/MNCCLAIMS', 'FRED/MSCEMPLOY', 'FRED/MSCCLAIMS', 'FRED/MSINSUREDUR', 'FRED/MDCEMPLOY', 'FRED/MDCCLAIMS', 'FRED/MIINSUREDUR', 'FRED/MACCLAIMS', 'FRED/MACEMPLOY', 'FRED/MECCLAIMS', 'FRED/MECEMPLOY', 'FRED/LAINSUREDUR', 'FRED/LACCLAIMS', 'FRED/KYCEMPLOY', 'FRED/KYCCLAIMS', 'FRED/KSCEMPLOY', 'FRED/KSCCLAIMS', 'FRED/IACEMPLOY', 'FRED/IACCLAIMS', 'FRED/IAINSUREDUR', 'FRED/HICCLAIMS', 'FRED/HIINSUREDUR', 'FRED/HICEMPLOY', 'FRED/IDCEMPLOY', 'FRED/IDCCLAIMS', 'FRED/CTCCLAIMS', 'FRED/DCCCLAIMS', 'FRED/DCCEMPLOY', 'FRED/DCINSUREDUR', 'FRED/GACEMPLOY', 'FRED/GACCLAIMS', 'FRED/FLCEMPLOY', 'FRED/DECEMPLOY', 'FRED/DECCLAIMS', 'FRED/DEINSUREDUR', 'FRED/COINSUREDUR', 'FRED/COCEMPLOY', 'FRED/COCCLAIMS', 'FRED/CACEMPLOY', 'FRED/CACCLAIMS', 'FRED/AZCCLAIMS', 'FRED/AZCEMPLOY', 'FRED/ARCEMPLOY', 'FRED/AKINSUREDUR', 'FRED/AKCCLAIMS', 'FRED/AKCEMPLOY', 'FRED/ALCEMPLOY', 'FRED/ALCCLAIMS', 'FRED/COVEMP', 'FRED/TRINTDEXR', 'FRED/WSMTMNS', 'FRED/WRMFNS', 'FRED/WCURRNS', 'FRED/WDDNS', 'FRED/WM1NS', 'FRED/WM2NS', 'FRED/RSBKCRNS', 'FRED/WBBNDEC156MNFRBPHI', 'FRED/WBBNINC156MNFRBPHI', 'FRED/WBBNDIF066MNFRBPHI', 'FRED/WBBNNC156MNFRBPHI', 'FRED/UOBNNC156MNFRBPHI', 'FRED/UOBNINC156MNFRBPHI', 'FRED/UOBNDIF066MNFRBPHI', 'FRED/UOBNDEC156MNFRBPHI', 'FRED/SRBNINC156MNFRBPHI', 'FRED/SRBNNC156MNFRBPHI', 'FRED/SRBNDIF066MNFRBPHI', 'FRED/SRBNDEC156MNFRBPHI', 'FRED/UOFNNA156MNFRBPHI', 'FRED/UOFNSA156MSFRBPHI', 'FRED/UOFISA156MSFRBPHI', 'FRED/UOFINA156MNFRBPHI', 'FRED/UOCISA156MSFRBPHI', 'FRED/UOFDNA156MNFRBPHI', 'FRED/UOFDSA156MSFRBPHI', 'FRED/UOFDFNA066MNFRBPHI', 'FRED/UOFDFSA066MSFRBPHI', 'FRED/UOCNNA156MNFRBPHI', 'FRED/UOCINA156MNFRBPHI', 'FRED/UOCDFSA066MSFRBPHI', 'FRED/UOCNSA156MSFRBPHI', 'FRED/UOCDSA156MSFRBPHI', 'FRED/UOCDNA156MNFRBPHI', 'FRED/SHFNSA156MSFRBPHI', 'FRED/SHFDSA156MSFRBPHI', 'FRED/SHFNNA156MNFRBPHI', 'FRED/SHFISA156MSFRBPHI', 'FRED/UOCDFNA066MNFRBPHI', 'FRED/SHFINA156MNFRBPHI', 'FRED/SHFDFSA066MSFRBPHI', 'FRED/SHFDNA156MNFRBPHI', 'FRED/SHFDFNA066MNFRBPHI', 'FRED/SHCNSA156MSFRBPHI', 'FRED/SHCNNA156MNFRBPHI', 'FRED/SHCISA156MSFRBPHI', 'FRED/SHCDSA156MSFRBPHI', 'FRED/SHCDNA156MNFRBPHI', 'FRED/SHCINA156MNFRBPHI', 'FRED/SHCDFSA066MSFRBPHI', 'FRED/SHCDFNA066MNFRBPHI', 'FRED/IVFNSA156MSFRBPHI', 'FRED/IVFDFSA066MSFRBPHI', 'FRED/IVFDFNA066MNFRBPHI', 'FRED/IVFNNA156MNFRBPHI', 'FRED/IVFINA156MNFRBPHI', 'FRED/IVFISA156MSFRBPHI', 'FRED/IVFDNA156MNFRBPHI', 'FRED/IVCNSA156MSFRBPHI', 'FRED/IVFDSA156MSFRBPHI', 'FRED/IVCNNA156MNFRBPHI', 'FRED/IVCINA156MNFRBPHI', 'FRED/IVCDSA156MSFRBPHI', 'FRED/IVCISA156MSFRBPHI', 'FRED/IVCDNA156MNFRBPHI', 'FRED/GAFNSA156MSFRBPHI', 'FRED/GAFNNA156MNFRBPHI', 'FRED/IVCDFNA066MNFRBPHI', 'FRED/IVCDFSA066MSFRBPHI', 'FRED/GAFISA156MSFRBPHI', 'FRED/GAFINA156MNFRBPHI', 'FRED/GAFDNA156MNFRBPHI', 'FRED/GAFDSA156MSFRBPHI', 'FRED/GACNNA156MNFRBPHI', 'FRED/GACNSA156MSFRBPHI', 'FRED/GAFDFNA066MNFRBPHI', 'FRED/GAFDFSA066MSFRBPHI', 'FRED/GACDSA156MSFRBPHI', 'FRED/GACDNA156MNFRBPHI', 'FRED/GACISA156MSFRBPHI', 'FRED/GACINA156MNFRBPHI', 'FRED/DTFNNA156MNFRBPHI', 'FRED/DTFNSA156MSFRBPHI', 'FRED/DTFISA156MSFRBPHI', 'FRED/GACDFNA066MNFRBPHI', 'FRED/GACDFSA066MSFRBPHI', 'FRED/DTCISA156MSFRBPHI', 'FRED/DTFDFSA066MSFRBPHI', 'FRED/DTFDNA156MNFRBPHI', 'FRED/DTFINA156MNFRBPHI', 'FRED/DTFDSA156MSFRBPHI', 'FRED/DTCDSA156MSFRBPHI', 'FRED/DTCNSA156MSFRBPHI', 'FRED/DTFDFNA066MNFRBPHI', 'FRED/DTCNNA156MNFRBPHI', 'FRED/DTCINA156MNFRBPHI', 'FRED/DTCDNA156MNFRBPHI', 'FRED/DTCDFNA066MNFRBPHI', 'FRED/DTCDFSA066MSFRBPHI', 'FRED/CEFDSA156MSFRBPHI', 'FRED/CEFNNA156MNFRBPHI', 'FRED/CEFNSA156MSFRBPHI', 'FRED/CEFISA156MSFRBPHI', 'FRED/CEFINA156MNFRBPHI', 'FRED/CEFDNA156MNFRBPHI', 'FRED/AWFDFSA066MSFRBPHI', 'FRED/AWFDFNA066MNFRBPHI', 'FRED/AWFDSA156MSFRBPHI', 'FRED/AWCNSA156MSFRBPHI', 'FRED/AWFISA156MSFRBPHI', 'FRED/AWFNSA156MSFRBPHI', 'FRED/CEFDFSA066MSFRBPHI', 'FRED/AWCDSA156MSFRBPHI', 'FRED/CEFDFNA066MNFRBPHI', 'FRED/AWFNNA156MNFRBPHI', 'FRED/AWFDNA156MNFRBPHI', 'FRED/AWCNNA156MNFRBPHI', 'FRED/AWFINA156MNFRBPHI', 'FRED/AWCISA156MSFRBPHI', 'FRED/AWCINA156MNFRBPHI', 'FRED/AWCDNA156MNFRBPHI', 'FRED/AWCDFNA066MNFRBPHI', 'FRED/AWCDFSA066MSFRBPHI', 'FRED/PPBNNC156MNFRBPHI', 'FRED/PPBNINC156MNFRBPHI', 'FRED/PPBNDEC156MNFRBPHI', 'FRED/PPBNDIF066MNFRBPHI', 'FRED/PPFINA156MNFRBPHI', 'FRED/PPFNNA156MNFRBPHI', 'FRED/PPFDNA156MNFRBPHI', 'FRED/PPFDFNA066MNFRBPHI', 'FRED/PPCNNA156MNFRBPHI', 'FRED/PPCINA156MNFRBPHI', 'FRED/PPCDNA156MNFRBPHI', 'FRED/PPCDFNA066MNFRBPHI', 'FRED/PRFNNA156MNFRBPHI', 'FRED/PRFINA156MNFRBPHI', 'FRED/PRFDNA156MNFRBPHI', 'FRED/PRBNNC156MNFRBPHI', 'FRED/PRFDFNA066MNFRBPHI', 'FRED/PRCNNA156MNFRBPHI', 'FRED/PRCINA156MNFRBPHI', 'FRED/PRCDNA156MNFRBPHI', 'FRED/PRCDFNA066MNFRBPHI', 'FRED/PRBNINC156MNFRBPHI', 'FRED/PRBNDEC156MNFRBPHI', 'FRED/PRBNDIF066MNFRBPHI', 'FRED/NPBNDEC156MNFRBPHI', 'FRED/NPBNNC156MNFRBPHI', 'FRED/NPBNINC156MNFRBPHI', 'FRED/NPBNDIF066MNFRBPHI', 'FRED/NOFNNA156MNFRBPHI', 'FRED/NOFINA156MNFRBPHI', 'FRED/NOFDNA156MNFRBPHI', 'FRED/NOFDFNA066MNFRBPHI', 'FRED/NOCNNA156MNFRBPHI', 'FRED/NOCINA156MNFRBPHI', 'FRED/NOCDNA156MNFRBPHI', 'FRED/NOCDFNA066MNFRBPHI', 'FRED/NEFNNA156MNFRBPHI', 'FRED/NEFINA156MNFRBPHI', 'FRED/NEFDNA156MNFRBPHI', 'FRED/NEFDFNA066MNFRBPHI', 'FRED/NECNNA156MNFRBPHI', 'FRED/NECINA156MNFRBPHI', 'FRED/NECDNA156MNFRBPHI', 'FRED/NECDFNA066MNFRBPHI', 'FRED/PPCISA156MSFRBPHI', 'FRED/PPCDSA156MSFRBPHI', 'FRED/PPCDFSA066MSFRBPHI', 'FRED/PPFDSA156MSFRBPHI', 'FRED/PPFDFSA066MSFRBPHI', 'FRED/PPCNSA156MSFRBPHI', 'FRED/PPFNSA156MSFRBPHI', 'FRED/PPFISA156MSFRBPHI', 'FRED/PRCISA156MSFRBPHI', 'FRED/PRCDSA156MSFRBPHI', 'FRED/PRCDFSA066MSFRBPHI', 'FRED/PRFDSA156MSFRBPHI', 'FRED/PRFDFSA066MSFRBPHI', 'FRED/PRCNSA156MSFRBPHI', 'FRED/PRFNSA156MSFRBPHI', 'FRED/PRFISA156MSFRBPHI', 'FRED/NECDSA156MSFRBPHI', 'FRED/NECDFSA066MSFRBPHI', 'FRED/NECISA156MSFRBPHI', 'FRED/NECNSA156MSFRBPHI', 'FRED/NEFISA156MSFRBPHI', 'FRED/NEFDSA156MSFRBPHI', 'FRED/NEFDFSA066MSFRBPHI', 'FRED/NEFNSA156MSFRBPHI', 'FRED/NOCDFSA066MSFRBPHI', 'FRED/NOCDSA156MSFRBPHI', 'FRED/NOCNSA156MSFRBPHI', 'FRED/NOCISA156MSFRBPHI', 'FRED/NOFDSA156MSFRBPHI', 'FRED/NOFISA156MSFRBPHI', 'FRED/NOFDFSA066MSFRBPHI', 'FRED/NOFNSA156MSFRBPHI', 'FRED/AWBNDIF066MNFRBPHI', 'FRED/AWBNINC156MNFRBPHI', 'FRED/AWBNNC156MNFRBPHI', 'FRED/GABNDEC156MNFRBPHI', 'FRED/CPBNNC156MNFRBPHI', 'FRED/CEBNDEC156MNFRBPHI', 'FRED/AWBNDEC156MNFRBPHI', 'FRED/CPBNDEC156MNFRBPHI', 'FRED/CEBNINC156MNFRBPHI', 'FRED/CPBNINC156MNFRBPHI', 'FRED/CEBNNC156MNFRBPHI', 'FRED/CEBNDIF066MNFRBPHI', 'FRED/GAFBNNC156MNFRBPHI', 'FRED/GAFBNINC156MNFRBPHI', 'FRED/CPBNDIF066MNFRBPHI', 'FRED/GAFBNDEC156MNFRBPHI', 'FRED/GAFBNDIF066MNFRBPHI', 'FRED/GABNNC156MNFRBPHI', 'FRED/GABNINC156MNFRBPHI', 'FRED/GABNDIF066MNFRBPHI', 'FRED/GARFBNNC156MNFRBPHI', 'FRED/GARFBNDEC156MNFRBPHI', 'FRED/GARFBNINC156MNFRBPHI', 'FRED/GARFBNDIF066MNFRBPHI', 'FRED/GARBNNC156MNFRBPHI', 'FRED/GARBNINC156MNFRBPHI', 'FRED/GARBNDEC156MNFRBPHI', 'FRED/GARBNDIF066MNFRBPHI', 'FRED/NFBNNC156MNFRBPHI', 'FRED/NFBNINC156MNFRBPHI', 'FRED/IVBNNC156MNFRBPHI', 'FRED/IVBNINC156MNFRBPHI', 'FRED/NFBNDIF066MNFRBPHI', 'FRED/NFBNDEC156MNFRBPHI', 'FRED/IVBNDEC156MNFRBPHI', 'FRED/NOBNDEC156MNFRBPHI', 'FRED/IVBNDIF066MNFRBPHI', 'FRED/NOBNDIF066MNFRBPHI', 'FRED/NOBNNC156MNFRBPHI', 'FRED/NOBNINC156MNFRBPHI', 'FRED/UOFNSA156MSFRBNY', 'FRED/UOFNNA156MNFRBNY', 'FRED/UOFISA156MSFRBNY', 'FRED/UOFINA156MNFRBNY', 'FRED/UOFDSA156MSFRBNY', 'FRED/UOFDNA156MNFRBNY', 'FRED/UOFDISA066MSFRBNY', 'FRED/UOFDINA066MNFRBNY', 'FRED/TSFNSA156MSFRBNY', 'FRED/TSFNNA156MNFRBNY', 'FRED/TSFDSA156MSFRBNY', 'FRED/TSFDNA156MNFRBNY', 'FRED/SHFNSA156MSFRBNY', 'FRED/SHFNNA156MNFRBNY', 'FRED/SHFISA156MSFRBNY', 'FRED/SHFINA156MNFRBNY', 'FRED/SHFDSA156MSFRBNY', 'FRED/SHFDNA156MNFRBNY', 'FRED/SHFDISA066MSFRBNY', 'FRED/SHFDINA066MNFRBNY', 'FRED/PRFNSA156MSFRBNY', 'FRED/PRFNNA156MNEMFRBNY', 'FRED/PRFISA156MSFRBNY', 'FRED/PRFINA156MNEMFRBNY', 'FRED/PRFDSA156MSFRBNY', 'FRED/PRFDNA156MNEMFRBNY', 'FRED/PRFDISA066MSFRBNY', 'FRED/PRFDINA066MNEMFRBNY', 'FRED/PPFNSA156MSFRBNY', 'FRED/PPFNNA156MNEMFRBNY', 'FRED/PPFDSA156MSFRBNY', 'FRED/PPFDNA156MNEMFRBNY', 'FRED/NEFNSA156MSFRBNY', 'FRED/NEFNNA156MNFRBNY', 'FRED/NEFDSA156MSFRBNY', 'FRED/NEFDNA156MNFRBNY', 'FRED/NEFDISA066MSFRBNY', 'FRED/NEFDINA066MNFRBNY', 'FRED/NOFNSA156MSFRBNY', 'FRED/NOFNNA156MNFRBNY', 'FRED/NOFISA156MSFRBNY', 'FRED/NOFINA156MNFRBNY', 'FRED/NOFDSA156MSFRBNY', 'FRED/NOFDNA156MNFRBNY', 'FRED/NOFDISA066MSFRBNY', 'FRED/NOFDINA066MNFRBNY', 'FRED/IVFNSA156MSFRBNY', 'FRED/IVFNNA156MNFRBNY', 'FRED/IVFISA156MSFRBNY', 'FRED/IVFINA156MNFRBNY', 'FRED/IVFDSA156MSFRBNY', 'FRED/IVFDNA156MNFRBNY', 'FRED/GAFNSA156MSFRBNY', 'FRED/GAFNNA156MNFRBNY', 'FRED/GAFISA156MSFRBNY', 'FRED/GAFINA156MNFRBNY', 'FRED/GAFDSA156MSFRBNY', 'FRED/GAFDNA156MNFRBNY', 'FRED/DTFNSA156MSFRBNY', 'FRED/DTFNNA156MNFRBNY', 'FRED/DTFISA156MSFRBNY', 'FRED/DTFINA156MNFRBNY', 'FRED/DTFDSA156MSFRBNY', 'FRED/DTFDNA156MNFRBNY', 'FRED/DTFDISA066MSFRBNY', 'FRED/DTFDINA066MNFRBNY', 'FRED/CEFNSA156MSFRBNY', 'FRED/CEFNNA156MNFRBNY', 'FRED/AWFNSA156MSFRBNY', 'FRED/AWFNNA156MNFRBNY', 'FRED/AWFISA156MSFRBNY', 'FRED/AWFINA156MNFRBNY', 'FRED/AWFDSA156MSFRBNY', 'FRED/AWFDNA156MNFRBNY', 'FRED/UOCNSA156MSFRBNY', 'FRED/UOCNNA156MNFRBNY', 'FRED/UOCISA156MSFRBNY', 'FRED/UOCINA156MNFRBNY', 'FRED/UOCDSA156MSFRBNY', 'FRED/UOCDNA156MNFRBNY', 'FRED/SHCISA156MSFRBNY', 'FRED/SHCINA156MNFRBNY', 'FRED/SHCDSA156MSFRBNY', 'FRED/SHCDNA156MNFRBNY', 'FRED/PRCNSA156MSFRBNY', 'FRED/PRCNNA156MNEMFRBNY', 'FRED/PRCISA156MSFRBNY', 'FRED/PRCINA156MNEMFRBNY', 'FRED/PRCDSA156MSFRBNY', 'FRED/PRCDNA156MNEMFRBNY', 'FRED/PPCNSA156MSFRBNY', 'FRED/PPCNNA156MNEMFRBNY', 'FRED/PPCISA156MSFRBNY', 'FRED/PPCINA156MNEMFRBNY', 'FRED/PPCDSA156MSFRBNY', 'FRED/PPCDNA156MNEMFRBNY', 'FRED/NECNSA156MSFRBNY', 'FRED/NECNNA156MNFRBNY', 'FRED/NECISA156MSFRBNY', 'FRED/NECINA156MNFRBNY', 'FRED/NECDSA156MSFRBNY', 'FRED/NECDNA156MNFRBNY', 'FRED/NOCNSA156MSFRBNY', 'FRED/NOCNNA156MNFRBNY', 'FRED/NOCISA156MSFRBNY', 'FRED/NOCINA156MNFRBNY', 'FRED/NOCDSA156MSFRBNY', 'FRED/NOCDNA156MNFRBNY', 'FRED/IVCDSA156MSFRBNY', 'FRED/IVCDNA156MNFRBNY', 'FRED/GACNSA156MSFRBNY', 'FRED/GACNNA156MNFRBNY', 'FRED/GACDSA156MSFRBNY', 'FRED/GACDNA156MNFRBNY', 'FRED/DTCNSA156MSFRBNY', 'FRED/DTCNNA156MNFRBNY', 'FRED/DTCDSA156MSFRBNY', 'FRED/DTCDNA156MNFRBNY', 'FRED/PPFISA156MSFRBNY', 'FRED/PPFINA156MNEMFRBNY', 'FRED/PPFDISA066MSFRBNY', 'FRED/PPFDINA066MNEMFRBNY', 'FRED/IVFDINA066MNFRBNY', 'FRED/IVFDISA066MSFRBNY', 'FRED/GAFDISA066MSFRBNY', 'FRED/GAFDINA066MNFRBNY', 'FRED/UOCDINA066MNFRBNY', 'FRED/UOCDISA066MSFRBNY', 'FRED/GACINA156MNFRBNY', 'FRED/GACISA156MSFRBNY', 'FRED/AWCNSA156MSFRBNY', 'FRED/AWCNNA156MNFRBNY', 'FRED/TSFISA156MSFRBNY', 'FRED/TSFINA156MNFRBNY', 'FRED/SHCNSA156MSFRBNY', 'FRED/SHCNNA156MNFRBNY', 'FRED/PPCDINA066MNEMFRBNY', 'FRED/PPCDISA066MSFRBNY', 'FRED/IVCNSA156MSFRBNY', 'FRED/IVCNNA156MNFRBNY', 'FRED/DTCISA156MSFRBNY', 'FRED/DTCINA156MNFRBNY', 'FRED/NEFINA156MNFRBNY', 'FRED/NEFISA156MSFRBNY', 'FRED/IVCISA156MSFRBNY', 'FRED/IVCINA156MNFRBNY', 'FRED/CEFDSA156MSFRBNY', 'FRED/CEFDNA156MNFRBNY', 'FRED/AWFDISA066MSFRBNY', 'FRED/AWFDINA066MNFRBNY', 'FRED/SHCDISA066MSFRBNY', 'FRED/SHCDINA066MNFRBNY', 'FRED/AWCDSA156MSFRBNY', 'FRED/AWCDNA156MNFRBNY', 'FRED/PRCDINA066MNEMFRBNY', 'FRED/PRCDISA066MSFRBNY', 'FRED/IVCDISA066MSFRBNY', 'FRED/IVCDINA066MNFRBNY', 'FRED/NOCDISA066MSFRBNY', 'FRED/NOCDINA066MNFRBNY', 'FRED/DTCDISA066MSFRBNY', 'FRED/DTCDINA066MNFRBNY', 'FRED/AWCINA156MNFRBNY', 'FRED/AWCISA156MSFRBNY', 'FRED/NECDINA066MNFRBNY', 'FRED/NECDISA066MSFRBNY', 'FRED/TSFDINA066MNFRBNY', 'FRED/TSFDISA066MSFRBNY', 'FRED/CEFISA156MSFRBNY', 'FRED/CEFINA156MNFRBNY', 'FRED/GACDISA066MSFRBNY', 'FRED/GACDINA066MNFRBNY', 'FRED/AWCDISA066MSFRBNY', 'FRED/AWCDINA066MNFRBNY', 'FRED/CEFDINA066MNFRBNY', 'FRED/CEFDISA066MSFRBNY', 'FRED/WPFNNA156MNFRBNY', 'FRED/PRFNNA156MNFRBNY', 'FRED/PRFINA156MNFRBNY', 'FRED/PRFDNA156MNFRBNY', 'FRED/PRFDINA066MNFRBNY', 'FRED/PPFNNA156MNFRBNY', 'FRED/PPFDNA156MNFRBNY', 'FRED/EMFNNA156MNFRBNY', 'FRED/BCFDNA156MNFRBNY', 'FRED/BCFNNA156MNFRBNY', 'FRED/BAFNNA156MNFRBNY', 'FRED/PRCNNA156MNFRBNY', 'FRED/PRCINA156MNFRBNY', 'FRED/PRCDNA156MNFRBNY', 'FRED/PPCNNA156MNFRBNY', 'FRED/PPCINA156MNFRBNY', 'FRED/PPCDNA156MNFRBNY', 'FRED/EMCINA156MNFRBNY', 'FRED/BCCNNA156MNFRBNY', 'FRED/BACNNA156MNFRBNY', 'FRED/WPFDNA156MNFRBNY', 'FRED/WPFDINA066MNFRBNY', 'FRED/PPFINA156MNFRBNY', 'FRED/PPFDINA066MNFRBNY', 'FRED/EMFDNA156MNFRBNY', 'FRED/EMFDINA066MNFRBNY', 'FRED/CSFDNA156MNFRBNY', 'FRED/BCFINA156MNFRBNY', 'FRED/BCFDINA066MNFRBNY', 'FRED/BAFDNA156MNFRBNY', 'FRED/EMCDNA156MNFRBNY', 'FRED/BACINA156MNFRBNY', 'FRED/CSFNNA156MNFRBNY', 'FRED/WPCNNA156MNFRBNY', 'FRED/WPCDINA066MNFRBNY', 'FRED/PPCDINA066MNFRBNY', 'FRED/EMCNNA156MNFRBNY', 'FRED/CSCNNA156MNFRBNY', 'FRED/WPFINA156MNFRBNY', 'FRED/WPCDNA156MNFRBNY', 'FRED/BCCINA156MNFRBNY', 'FRED/EMFINA156MNFRBNY', 'FRED/BACDNA156MNFRBNY', 'FRED/PRCDINA066MNFRBNY', 'FRED/BCCDINA066MNFRBNY', 'FRED/CSCDNA156MNFRBNY', 'FRED/CSFINA156MNFRBNY', 'FRED/BAFDINA066MNFRBNY', 'FRED/BAFINA156MNFRBNY', 'FRED/WPCINA156MNFRBNY', 'FRED/BCCDNA156MNFRBNY', 'FRED/BACDINA066MNFRBNY', 'FRED/CSFDINA066MNFRBNY', 'FRED/EMCDINA066MNFRBNY', 'FRED/CSCDINA066MNFRBNY', 'FRED/CSCINA156MNFRBNY', 'FRED/LODINIM066N', 'FRED/TREASURY', 'FRED/CURRCIR', 'FRED/IORR', 'FRED/IOER', 'FRED/SMU32298200500000001', 'FRED/WPU14210206', 'FRED/WPU561102', 'FRED/CGMD2564', 'FRED/TOTLUW5564', 'FRED/TOTLUW65O', 'FRED/TOTLUW4554', 'FRED/TOTLUW2534', 'FRED/TOTLUM65O', 'FRED/TOTLUW25O', 'FRED/TOTLUW2024', 'FRED/TOTLUW2564', 'FRED/TOTLUW3544', 'FRED/TOTLUW1819', 'FRED/TOTLUW1617', 'FRED/TOTLUW1619', 'FRED/TOTLUM5564', 'FRED/TOTLUM4554', 'FRED/TOTLUM3544', 'FRED/TOTLUM1619', 'FRED/TOTLUM2534', 'FRED/TOTLUM2564', 'FRED/TOTLUM1617', 'FRED/TOTLUM25O', 'FRED/TOTLU4554', 'FRED/TOTLUM2024', 'FRED/TOTLUM1819', 'FRED/TOTLU2534', 'FRED/TOTLU5564', 'FRED/TOTLU25O', 'FRED/TOTLU65O', 'FRED/TOTLU3544', 'FRED/TOTLLW4554', 'FRED/TOTLU2564', 'FRED/TOTLU1819', 'FRED/TOTLU1617', 'FRED/TOTLLW2564', 'FRED/TOTLLW5564', 'FRED/TOTLLW2534', 'FRED/TOTLLW25O', 'FRED/TOTLLW3544', 'FRED/TOTLLW1619', 'FRED/TOTLLW65O', 'FRED/TOTLLW1819', 'FRED/TOTLLW1617', 'FRED/TOTLLM2534', 'FRED/TOTLLM5564', 'FRED/TOTLLW2024', 'FRED/TOTLLM3544', 'FRED/TOTLLM1619', 'FRED/TOTLLM2564', 'FRED/TOTLL5564', 'FRED/TOTLLM1617', 'FRED/TOTLLM65O', 'FRED/TOTLLM1819', 'FRED/TOTLL2564', 'FRED/TOTLLM2024', 'FRED/TOTLLM4554', 'FRED/TOTLLM25O', 'FRED/TOTLL25O', 'FRED/TOTL2564W', 'FRED/TOTLL65O', 'FRED/TOTL2564', 'FRED/TOTLL4554', 'FRED/TOTLL2534', 'FRED/TOTLL3544', 'FRED/TOTL2564M', 'FRED/TOTLL1819', 'FRED/TOTLL1617', 'FRED/SCNDUW5564', 'FRED/SCNDUW65O', 'FRED/SCNDUW3544', 'FRED/SCNDUW16O', 'FRED/SCNDUM5564', 'FRED/SCNDUW4554', 'FRED/SCNDUM3544', 'FRED/SCNDUW2564', 'FRED/SCNDUW25O', 'FRED/SCNDUM25O', 'FRED/SCNDUW1819', 'FRED/SCNDUW2534', 'FRED/SCNDUW2024', 'FRED/SCNDUM2024', 'FRED/SCNDUW1619', 'FRED/SCNDUM65O', 'FRED/SCNDUM1619', 'FRED/SCNDUM4554', 'FRED/SCNDUM2564', 'FRED/SCNDUM2534', 'FRED/SCNDUM1819', 'FRED/SCNDUM16O', 'FRED/SCNDU65O', 'FRED/SCNDU5564', 'FRED/SCNDUM1617', 'FRED/SCNDU4554', 'FRED/SCNDU25O', 'FRED/SCNDU3544', 'FRED/SCNDU2534', 'FRED/SCNDU1819', 'FRED/SCNDU2024', 'FRED/SCNDU1619']
from AlgorithmImports import *

from pcm import InsightVariableWeightingPortfolioConstructionModel
from feature import add_features, get_exhaustive_features_list
from ensemble import EnsembleModel
from datetime import timedelta
import pandas as pd
import numpy as np
import statistics

import math

from alpha import WeightedClassifierAlpha
from data import Data

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif
from mlxtend.feature_selection import SequentialFeatureSelector
from sklearn.ensemble import ExtraTreesClassifier

# import pickle
# import hashlib

class TransdimensionalDynamicThrustAssembly(QCAlgorithm):

    def Initialize(self):

        # self.i = int(self.GetParameter('nasdaq_endpoint', 0))

        featureset = 2
        self.num_features = 6 # 6, next best 3
        # self.num_features = int(self.GetParameter('num_features', 5))
        self.UniverseSize = 7
        # self.UniverseSize = int(self.GetParameter('UniverseSize', 9))
        self.kelly_multiplier = 10
        self.stopLoss = 0.05
        self.takeProfit = 0.05
        self.feature_optimization_type = 4
        self.MLModel = EnsembleModel
        self.proxy = None
        self.vix_lookback = 60
        self.vix_threshold = None
        self.vix_ma_threshold = 1
        self.ETFSymbol = 'ACWI'

        out_of_sample_test = False
        if not out_of_sample_test:
            self.SetStartDate(2010, 1, 1)  # Set Start Date
            self.SetEndDate(2020, 1, 1)  # Set End Date
            # self.SetStartDate(2020, 2, 1)  # Set Start Date
            # self.SetEndDate(2020, 3, 1)  # Set End Date
        else:
            self.SetStartDate(2020, 1, 1)  # Set Start Date
            self.SetEndDate(2023, 1, 1)  # Set End Date
            # self.SetStartDate(2023, 1, 1)  # Set Start Date
            # self.SetEndDate(2023, 7, 1)  # Set End Date
        
        self.InitCash = 100000
        self.firstDay = True
        self.SetCash(self.InitCash)  
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
        self.SetSecurityInitializer(lambda security: security.SetMarketPrice(self.GetLastKnownPrice(security)))
        
        # time frames and frequencies
        self.resolution = Resolution.Daily
        self.rebalancefunc = Expiry.EndOfQuarter

        self.models = {}
        self.features = {}
        self.rebalanceTime = datetime.min
        self.symbols = []
        self.symbols_to_be_trained = []
        self.kelly_size = {}

        # ML parameters
        self.lookback_days = 365 * 4 # 4 years (365 * 4) for Resolution.Daily and 1/2 year (183) for Hours? or 209? (same amount of rows as 4 years worth of daily)
        self.lookback_offset = 70 # best for hourly: 20, best for daily: 70 or 110
        self.n_estimators = 10
        self.criterion = 'entropy' # entropy {“gini”, “entropy”, “log_loss”}
        self.max_depth =  4 # 4, originally: 3
        self.min_samples_split = 170 # 140, 200 getting the best balanced results between backtesting and out of sample testing, 140 killing it in backtesting, but not performing as well in out of sample
        # self.min_samples_split = int(self.GetParameter('min_samples_split', 130))
        self.num_iter = 20 # originally: 20
        self.num_test_records = 60

        # Dependant variable for the model: weekly returns 'returns_1w' or daily returns 'returns_1d'
        self.returns_range = 1
        self.target = 'variable_returns'

        # add the benchmark but don't trade it (that's what self.exclusions is for, it's being checked at various points)!
        self.benchmark_symbol = 'SPY'
        self.SetBenchmark(self.benchmark_symbol)
        self.MKT = self.AddEquity(self.benchmark_symbol, self.resolution).Symbol
        self.mkt = []
        self.exclusions = [self.benchmark_symbol] + ['VIX']

        self.data = Data(self, self.resolution, self.returns_range)

        self.Train(self.OptimizeAndTrain)

        self.UniverseSettings.Resolution = self.resolution
        
        # self.all_features =  self.data.allTAFeatures + ['VIX']
        # self.all_features =  self.data.allTAFeatures + ['VIX'] + self.data.allNasdaqFeatures
        self.all_features =  self.get_all_features()
        

        self.Debug("All features: "+str(len(self.all_features)))

        # original best features, manually selected
        self.static_featureset = ['HT_DCPERIOD', 'HT_DCPHASE', 'MOM_5', 'ADX_10_diff','MOM_5_diff']

        self.proxy_symbol = None
        if self.proxy:
            if all([x.isupper() for x in self.proxy.split(".")]):
                self.proxy_symbol = self.AddEquity(self.proxy, self.resolution).Symbol
                self.exclusions.append(self.proxy_symbol)

        optimization_type_name = ['none - static', 'feature importance', 'KBestFeatures','SequentialFeatureSelector']
        self.Debug("target: "+self.target+" Full Feature set: "+str(self.all_features))
        if self.feature_optimization_type > 0:
            self.static_featureset = None
            if self.proxy_symbol:
                self.Debug("Using Proxy Symbol for feature Optimization: "+str(self.proxy_symbol))
        else:
            self.Debug("static feature set: "+str(self.static_featureset))
        self.Debug("Feature Optimization Type: "+str(self.feature_optimization_type))
        self.Debug(" Number of features: "+str(self.num_features))

        # self.lookback = 150 # 250 getting the best balanced results between backtesting and out of sample testing, 150 killing it in backtesting, but not performing as well in out of sample
        lookback = 150
        self.SetWarmup(lookback)

        self.BearMarket = False
        self.vixBear = False

        self.AddUniverse(self.Universe.ETF(self.ETFSymbol, Market.USA, self.UniverseSettings, self.ETFConstituentsFilterStatic))

        # self.vix = self.AddData(CBOE, "VIX", Resolution.Daily).Symbol

        # Equally weigh securities in portfolio, based on insights
        pcm = InsightVariableWeightingPortfolioConstructionModel(self)
        self.SetPortfolioConstruction(pcm)
        # self.weightCap = 1

        # Select the alpha model
        self.SetAlpha(WeightedClassifierAlpha(self, pcm))

        self.SetExecution(VolumeWeightedAveragePriceExecutionModel())
        
        self.SetRiskManagement(NullRiskManagementModel())
        self.AddRiskManagement(MaximumUnrealizedProfitPercentPerSecurity(self.takeProfit))

    def ETFConstituentsFilterStatic(self, constituents: List[ETFConstituentData]) -> List[Symbol]:
        
        # Get the UniverseSize securities with the largest weight in the index
        selected = sorted([c for c in constituents if c.Weight],
            key=lambda c: c.Weight, reverse=True)

        if not selected:
            self.Debug(str(self.Time)+" Returning Universe Unchanged: "+str([c.Value for c in Universe.Unchanged]))
            return Universe.Unchanged
        else:            
            if self.proxy == 'weight':
                highest_weight = selected[0].Symbol.Value
                self.proxy_symbol = self.AddEquity(highest_weight, self.resolution).Symbol

            return [c.Symbol for c in selected][:self.UniverseSize]

    def OnEndOfDay(self, symbol):
        # plot the benchmark on the main equities chart for comparison (for backtesting only)
        if not self.IsWarmingUp and not self.LiveMode: 
            if self.firstDay:
                self.initCash = self.Portfolio.MarginRemaining 
                self.firstDay = False
            mkt_price = self.History(self.MKT, 2, self.resolution)['close'].unstack(level= 0).iloc[-1]
            self.mkt.append(mkt_price)
            mkt_perf = self.InitCash * self.mkt[-1] / self.mkt[0] 
            self.Plot('Strategy Equity', self.MKT, mkt_perf)

    def OnSecuritiesChanged(self, changes: SecurityChanges) -> None:

        self.symbols_to_be_trained = []

        for security in changes.RemovedSecurities:
            if security.Symbol in self.symbols:
                self.symbols.remove(security.Symbol)

            if security.Invested and not self.IsWarmingUp:
                self.EmitInsights(
                    Insight.Price(security.Symbol, timedelta(days=2), InsightDirection.Flat, 1, None, None, 0))

        if changes.RemovedSecurities:
            self.Debug(str(self.Time) + " Removing from universe: " + str(
                [security.Symbol.Value for security in changes.RemovedSecurities]))

        for security in changes.AddedSecurities:
            if security.Symbol.Value not in self.exclusions:
                self.symbols_to_be_trained.append(security.Symbol)

        if changes.AddedSecurities:
            self.Debug(str(self.Time) + " Adding to universe: " + str(
                [security.Symbol.Value for security in changes.AddedSecurities]))

        self.OptimizeAndTrain()

    def TrainModel(self, symbol, features):

        model = None

        if features and (symbol.Value not in self.exclusions or symbol.Value == self.proxy_symbol):

            try:
                start = self.Time - timedelta(days=self.lookback_days)
                end = self.Time

                extra_featuredata, ta_features = self.SplitFeatures(self.data, features)

                X_symbol, y_symbol, returns_symbol = self.data.GetXy(symbol = symbol, 
                                                                target = self.target, 
                                                                ta_features = ta_features,
                                                                extra_featuredata = extra_featuredata,
                                                                vix = ('VIX' in features),
                                                                start = start, 
                                                                end = end)

                # X_symbol, y_symbol, returns_symbol = self.data.GetXy(symbol = symbol, 
                #                                                 target = self.target, 
                #                                                 ta_features = features,
                #                                                 vix = ('VIX' in features),
                #                                                 start = start, 
                #                                                 end = end)

                # build model for the symbol
                symbol = SymbolCache.GetSymbol(symbol)

                self.kelly_size[symbol] = 0

                if len(X_symbol) > self.num_test_records *2:
                    model = self.MLModel(self)
                    # model.features = sorted(X_symbol.columns)
                    X_symbol.columns = X_symbol.columns.astype(str) 
                    model.Train(X_symbol, y_symbol, returns_symbol)

                    if model.models:
                        # every time the model is trained we take the mean value of all num_iter models of this symbol. That's going to be the kelly size we'll use as weight when creating insights
                        cleanlist = [i.kelly_size for i in model.models if not math.isnan(i.kelly_size)]
                        self.kelly_size[symbol] = statistics.fmean(cleanlist) if cleanlist else 0

                else:
                    self.Error(str(self.Time)+" X_symbol too short; model.Train did not produce a model for "+str(symbol.Value))

            except Exception as e:
                self.Log('Unexpected error trying to build models:' + str(e))
                raise

        return model

    def OptimizeAndTrain(self):

        retrain = False

        if self.Time > self.rebalanceTime:
            # it's time to re-train all models (and not just the newly added ones)
            self.symbols_to_be_trained = self.symbols + list(set(self.symbols_to_be_trained) - set(self.symbols))
            self.rebalanceTime = self.rebalancefunc(self.Time)
            retrain = True
            # refresh the available Nasdaq feature endpoints in case features have come available that weren't when data was initialised
            # self.data.allNasdaqFeatures = self.data.getAvailableNasdaqFeatures()
            # self.all_features = self.get_all_features()

        if self.symbols_to_be_trained:
            if self.features:
                optimized_features = next(iter(self.features.items()))[1]

            for symbol in self.symbols_to_be_trained:
                if self.feature_optimization_type == 0:
                    self.features[symbol] = self.static_featureset
                    self.Debug(str(self.Time) + " Using static features set for " + str(symbol.Value) + ": " + str(
                        self.features[symbol]))

                elif self.feature_optimization_type == 3:
                    self.features[symbol] = self.all_features
                    self.Debug(
                        str(self.Time) + " All available features for " + str(symbol.Value) + ": " + str(
                            self.features[symbol]))

                elif self.feature_optimization_type == 4:
                    self.features[symbol] = self.OptimizeFeatures(symbol, self.num_features)
                    self.Debug(
                        str(self.Time) + " Individually optimized features for " + str(symbol.Value) + ": " + str(
                            self.features[symbol]))
                    if not self.IsWarmingUp and not symbol.Value == 'SPY' and len(self.features[symbol]) == 1:
                        raise
                else:
                    self.features[symbol] = []

                if retrain or not symbol in self.models:
                    if self.features[symbol]:
                        try:
                            self.models[symbol] = self.TrainModel(symbol, self.features[symbol])
                            # in case during the model Training features are dropped (which shouldn't happen, but apprently occasionally does), we're resettint the features to what's actually in the model.
                            # self.features[symbol] = sorted(self.models[symbol].features)
                            # features = self.models[symbol].getFeatures()
                            # if self.features[symbol] != features:
                            #     if set(self.features[symbol]) == set(features):
                            #         self.Error(str(self.Time) + " Features after training model for "+str(symbol.Value)+" in a different order as list passed on: "+str(self.features[symbol])+" model's features: "+str(features))
                            #     else:
                            #         self.Error(str(self.Time) + " Features after training model for "+str(symbol.Value)+" different to list passed on: "+str(self.features[symbol])+" model's features: "+str(features))
                            # else:
                            #     self.Debug(str(self.Time) + " Features after training model for "+str(symbol.Value)+" the same as list passed on: "+str(self.features[symbol]))

                        except Exception as e:
                            self.Log('Unexpected error during insights generation:' + str(e))
                            raise

        self.symbols = self.symbols + list(set(self.symbols_to_be_trained) - set(self.symbols))
        self.symbols_to_be_trained = []


    def OptimizeFeatures(self, symbol, num_features):

        selected_features = []

        feature_importance_model = self.TrainModel(symbol, self.all_features)

        # self.Debug("feeding the model with all_features "+str(list(self.all_features)))

        # model_hash = self.object_md5(feature_importance_model)
        # self.Debug("Trained Model for feature optimization. Hash:"+str(model_hash))

        if feature_importance_model:

            # features = sorted(feature_importance_model.features)

            # self.Debug("feature_importance_model features "+str(list(features)))

            # trying using the model's features inste`d of all_features. This should actually be the exact same thing, but weirdly it isnt (?!)`

            # selected_features = feature_importance_model.OptimizeFeatures(symbol, self.all_features, num_features)
            selected_features = feature_importance_model.OptimizeFeatures(symbol, num_features)

        return selected_features

    def SplitFeatures(self, data, allfeatures):

        nasdaq_features = [feature for feature in allfeatures if feature in data.allNasdaqFeatures]
        ta_features = [feature for feature in allfeatures if feature in data.allTAFeatures]
        return nasdaq_features, ta_features

    def get_all_features(self):
        return self.data.allTAFeatures + ['VIX'] # + self.data.allNasdaqFeatures

    # def object_md5(self, obj):
    #     """Generate MD5 hash for a Python object."""
    #     serialized_obj = pickle.dumps(obj, protocol=4)  # Use protocol 4 or higher for larger objects
    #     md5_hash = hashlib.md5(serialized_obj).hexdigest()
    #     return md5_hash
#region imports
from AlgorithmImports import *
#endregion
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd

class ClassifierModel():

    def __init__(self, algo):
        self.algo = algo
        self.model = None
        self.params = None
        self.test_score = None
        self.test_dist = None
        self.threshold = None

    # Train the model
    def Train(self, X, y, params):
        self.params = params
        self.params['class_weight'] = self.GetClassWeight(y)

        self.model = ExtraTreesClassifier(**self.params)
        self.model.fit(X, y)

        self.test_dist = self.model.predict_proba(X)[:, 1]
        

    # Return prediction as a +/- Z-Score of the prediction from the the threshold
    def Predict(self, X):
        idx = X.index
        probs = pd.Series(self.model.predict_proba(X)[:, 1])
        d = self.test_dist
        return (probs[0] - self.threshold) / d.std()
        
    def GetClassWeight(self, y_train):
        pos = y_train.sum()/(len(y_train))
        neg = 1 - pos
        pw = neg/pos
        nw = pos/neg

        return {0:nw,1:pw}
#region imports
from AlgorithmImports import *
#endregion

class Nasdaq:

    MANUAL_INC_COLUMNS = ['ECONOMIST/BIGMAC_USA@dollar_ex', 'ECONOMIST/BIGMAC_USA@dollar_ppp', 'ECONOMIST/BIGMAC_USA@dollar_price', 'ECONOMIST/BIGMAC_USA@euro_adj_valuation', 'ECONOMIST/BIGMAC_USA@local_price', 'ECONOMIST/BIGMAC_USA@sterling_adj_valuation', 'ECONOMIST/BIGMAC_USA@yen_adj_valuation', 'ECONOMIST/BIGMAC_USA@yuan_adj_valuation', 'ECONOMIST/BIGMAC_EUR@dollar_adj_valuation', 'ECONOMIST/BIGMAC_EUR@dollar_ex', 'ECONOMIST/BIGMAC_EUR@dollar_ppp', 'ECONOMIST/BIGMAC_EUR@dollar_price', 'ECONOMIST/BIGMAC_EUR@dollar_valuation', 'ECONOMIST/BIGMAC_EUR@local_price', 'ECONOMIST/BIGMAC_EUR@sterling_adj_valuation', 'ECONOMIST/BIGMAC_EUR@yen_adj_valuation', 'ECONOMIST/BIGMAC_EUR@yuan_adj_valuation', 'FED/RIFLGFCY30_XII_N_B@value', 'FED/RIFLGFCY20_XII_N_B@value', 'FED/RIFLGFCY10_XII_N_B@value', 'FED/RIFLGFCY07_XII_N_B@value', 'FED/RIFLGFCY05_XII_N_B@value', 'FED/RIFLGFCY30_N_B@value', 'FED/RIFLGFCY20_N_B@value', 'FED/RIFLGFCY10_N_B@value', 'FED/RIFLGFCY07_N_B@value', 'FED/RIFLGFCY05_N_B@value', 'FED/RIFLGFCY03_N_B@value', 'FED/RIFLGFCY02_N_B@value', 'FED/RIFLGFCY01_N_B@value', 'FED/RIFLGFCM06_N_B@value', 'FED/RIFLGFCM03_N_B@value', 'FED/RIFLGFCM01_N_B@value', 'FED/RIFSGFSY01_N_B@value', 'FED/RIFSGFSM06_N_B@value', 'FED/RIFSGFSM03_N_B@value', 'FED/RIFSGFSW04_N_B@value', 'FED/RIFSRP_F02_N_B@value', 'FED/RIFSPBLP_N_B@value', 'FED/RIFSPFF_N_B@value', 'FED/RIFSPPAAAD90_N_B@value', 'FED/RIFSPPAAAD60_N_B@value', 'FED/RIFSPPAAAD30_N_B@value', 'FED/RIFSPPAAAD15_N_B@value', 'FED/RIFSPPAAAD07_N_B@value', 'FED/RIFSPPAAAD01_N_B@value', 'FED/RIFSPPFAAD90_N_B@value', 'FED/RIFSPPFAAD07_N_B@value', 'FED/RIFSPPFAAD01_N_B@value', 'FED/RIFSPPNA2P2D90_N_B@value', 'FED/RIFSPPNA2P2D60_N_B@value', 'FED/RIFSPPNA2P2D30_N_B@value', 'FED/RIFSPPNA2P2D15_N_B@value', 'FED/RIFSPPNA2P2D07_N_B@value', 'FED/RIFSPPNA2P2D01_N_B@value', 'FED/RIFSPPNAAD30_N_B@value', 'FED/RIFSPPNAAD15_N_B@value', 'FED/RIFSPPNAAD07_N_B@value', 'FED/RIFSPPNAAD01_N_B@value', 'FED/JRXWTFO_N_B@value', 'FED/JRXWTFN_N_B@value', 'FED/JRXWTFB_N_B@value', 'FED/RIFSPPNAAD90_N_B@value', 'FED/RIFSPPFAAD15_N_B@value', 'FED/RIFSPPFAAD60_N_B@value', 'FRED/RPONMBSD@value', 'FRED/RPONTSYD@value', 'FRED/RPONTTLD@value', 'FRED/RPONAGYD@value', 'FRED/T10Y2Y@value', 'FRED/T5YIE@value', 'FRED/T10Y3M@value', 'FRED/T10YIE@value', 'FRED/T5YIFR@value', 'FRED/OBFR1@value', 'FRED/OBFR25@value', 'FRED/OBFR75@value', 'FRED/OBFRVOL@value', 'FRED/WLEMUINDXD@value', 'FRED/USEPUINDXD@value', 'FRED/DFEDTARL@value', 'FRED/DPCREDIT@value', 'FRED/DFEDTARU@value', 'FRED/TOTLUW25O@value', 'FRED/TOTLUM25O@value', 'FRED/TOTLL25O@value', 'FRED/SCNDUW25O@value', 'FRED/SCNDUM25O@value', 'MULTPL/SP500_DIV_YIELD_MONTH@value', 'MULTPL/SP500_PE_RATIO_MONTH@value', 'MULTPL/SHILLER_PE_RATIO_MONTH@value', 'MULTPL/SP500_EARNINGS_YIELD_MONTH@value', 'MULTPL/SP500_REAL_PRICE_MONTH@value', 'MULTPL/SP500_INFLADJ_MONTH@value', 'MULTPL/SP500_DIV_MONTH@value', 'MULTPL/SP500_EARNINGS_MONTH@value', 'RATEINF/CPI_USA@value', 'RATEINF/CPI_EUR@value', 'RATEINF/INFLATION_USA@value', 'RATEINF/INFLATION_EUR@value', 'UMICH/SOC35@bad time to buy', 'UMICH/SOC35@good time to buy', 'UMICH/SOC35@relative', 'UMICH/SOC35@uncertain / depends', 'UMICH/SOC22@$100_000 - $199_999', 'UMICH/SOC22@$200_000 - $299_999', 'UMICH/SOC22@$300_000 - $399_999', 'UMICH/SOC22@$400_000 - $499_999', 'UMICH/SOC22@$500_000 +', 'UMICH/SOC22@25th percentile', 'UMICH/SOC22@75th percentile', 'UMICH/SOC22@dk; na', 'UMICH/SOC22@interquartile range (75th-25th)', 'UMICH/SOC22@median', 'UMICH/SOC22@under $100_000', 'UMICH/SOC16@0%', 'UMICH/SOC16@1-24%', 'UMICH/SOC16@100%', 'UMICH/SOC16@25-49%', 'UMICH/SOC16@50%', 'UMICH/SOC16@51-74%', 'UMICH/SOC16@75-99%', 'UMICH/SOC16@dk; na', 'UMICH/SOC16@mean', 'UMICH/SOC1@index', 'UMICH/SOC47@25th percentile', 'UMICH/SOC47@75th percentile', 'UMICH/SOC47@decrease', 'UMICH/SOC47@dk; na', 'UMICH/SOC47@increase', 'UMICH/SOC47@interquartile rang (75th-25th)', 'UMICH/SOC47@mean', 'UMICH/SOC47@median', 'UMICH/SOC47@same', 'UMICH/SOC47@variance', 'UMICH/SOC46@25th percentile', 'UMICH/SOC46@75th percentile', 'UMICH/SOC46@decrease', 'UMICH/SOC46@dk; na', 'UMICH/SOC46@increase', 'UMICH/SOC46@interquartile rang (75th-25th)', 'UMICH/SOC46@mean', 'UMICH/SOC46@median', 'UMICH/SOC46@same', 'UMICH/SOC46@variance', 'UMICH/SOC45@dk; na', 'UMICH/SOC45@relative', 'UMICH/SOC45@value decreased', 'UMICH/SOC45@value increased', 'UMICH/SOC45@value same', "UMICH/SOC44@bad time<br>can't afford", 'UMICH/SOC44@bad time<br>depreciation', 'UMICH/SOC44@bad time<br>interest rates high', 'UMICH/SOC44@bad time<br>prices are low', 'UMICH/SOC44@bad time<br>uncertain future', 'UMICH/SOC44@good time<br>appreciation', 'UMICH/SOC44@good time<br>interest rates low', 'UMICH/SOC44@good time<br>prices are high', "UMICH/SOC44@good time<br>prices won't go up", 'UMICH/SOC44@good time<br>rising interest rates', 'UMICH/SOC44@good time<br>times good', 'UMICH/SOC44@relative: interest rates', 'UMICH/SOC44@relative: investment', 'UMICH/SOC44@relative: prices', 'UMICH/SOC44@relative: times', 'UMICH/SOC43@bad time to sell', 'UMICH/SOC43@good time to sell', 'UMICH/SOC43@relative', 'UMICH/SOC43@uncertain / depends', 'UMICH/SOC42@bad time<br>bad investment', "UMICH/SOC42@bad time<br>can't afford", 'UMICH/SOC42@bad time<br>interest rates high', 'UMICH/SOC42@bad time<br>prices are high', 'UMICH/SOC42@bad time<br>uncertain future', 'UMICH/SOC42@good time<br>good investment', 'UMICH/SOC42@good time<br>interest rates low', 'UMICH/SOC42@good time<br>prices low', 'UMICH/SOC42@good time<br>prices will increase', 'UMICH/SOC42@good time<br>rising interest rates', 'UMICH/SOC42@good time<br>times good', 'UMICH/SOC42@relative: interest rates', 'UMICH/SOC42@relative: investment', 'UMICH/SOC42@relative: prices', 'UMICH/SOC42@relative: time', 'UMICH/SOC41@bad time to buy', 'UMICH/SOC41@good time to buy', 'UMICH/SOC41@relative', 'UMICH/SOC41@uncertain / depends', 'UMICH/SOC40@decrease', 'UMICH/SOC40@dk; na', 'UMICH/SOC40@increase', 'UMICH/SOC40@mean', 'UMICH/SOC40@median', 'UMICH/SOC40@remain the same', 'UMICH/SOC39@decrease', 'UMICH/SOC39@dk; na', 'UMICH/SOC39@increase', 'UMICH/SOC39@mean', 'UMICH/SOC39@median', 'UMICH/SOC39@remain the same', "UMICH/SOC38@bad time<br>can't afford", 'UMICH/SOC38@bad time<br>gas prices', 'UMICH/SOC38@bad time<br>interest rates high', 'UMICH/SOC38@bad time<br>poor selection', 'UMICH/SOC38@bad time<br>prices high', 'UMICH/SOC38@bad time<br>uncertain future', 'UMICH/SOC38@good time<br>fuel efficiency', 'UMICH/SOC38@good time<br>interest rates low', 'UMICH/SOC38@good time<br>prices are low', 'UMICH/SOC38@good time<br>prices will increase', 'UMICH/SOC38@good time<br>rising interest rates', 'UMICH/SOC38@good time<br>times good', 'UMICH/SOC38@relative: prices', 'UMICH/SOC38@relative: rates', 'UMICH/SOC37@bad time to buy', 'UMICH/SOC37@good time to buy', 'UMICH/SOC37@relative', 'UMICH/SOC37@uncertain']

    MANUAL = ['ECONOMIST/BIGMAC_USA',
'ECONOMIST/BIGMAC_EUR',
'FED/RIFLGFCY30_XII_N_B',
'FED/RIFLGFCY20_XII_N_B',
'FED/RIFLGFCY10_XII_N_B',
'FED/RIFLGFCY07_XII_N_B',
'FED/RIFLGFCY05_XII_N_B',
'FED/RIFLGFCY30_N_B',
'FED/RIFLGFCY20_N_B',
'FED/RIFLGFCY10_N_B',
'FED/RIFLGFCY07_N_B',
'FED/RIFLGFCY05_N_B',
'FED/RIFLGFCY03_N_B',
'FED/RIFLGFCY02_N_B',
'FED/RIFLGFCY01_N_B',
'FED/RIFLGFCM06_N_B',
'FED/RIFLGFCM03_N_B',
'FED/RIFLGFCM01_N_B',
'FED/RIFSGFSY01_N_B',
'FED/RIFSGFSM06_N_B',
'FED/RIFSGFSM03_N_B',
'FED/RIFSGFSW04_N_B',
'FED/RIFSRP_F02_N_B',
'FED/RIFSPBLP_N_B',
'FED/RIFSPFF_N_B',
'FED/RIFSPPAAAD90_N_B',
'FED/RIFSPPAAAD60_N_B',
'FED/RIFSPPAAAD30_N_B',
'FED/RIFSPPAAAD15_N_B',
'FED/RIFSPPAAAD07_N_B',
'FED/RIFSPPAAAD01_N_B',
'FED/RIFSPPFAAD90_N_B',
'FED/RIFSPPFAAD07_N_B',
'FED/RIFSPPFAAD01_N_B',
'FED/RIFSPPNA2P2D90_N_B',
'FED/RIFSPPNA2P2D60_N_B',
'FED/RIFSPPNA2P2D30_N_B',
'FED/RIFSPPNA2P2D15_N_B',
'FED/RIFSPPNA2P2D07_N_B',
'FED/RIFSPPNA2P2D01_N_B',
'FED/RIFSPPNAAD30_N_B',
'FED/RIFSPPNAAD15_N_B',
'FED/RIFSPPNAAD07_N_B',
'FED/RIFSPPNAAD01_N_B',
'FED/JRXWTFO_N_B',
'FED/JRXWTFN_N_B',
'FED/JRXWTFB_N_B',
'FED/RIFSPPNAAD90_N_B',
'FED/RIFSPPFAAD15_N_B',
'FED/RIFSPPFAAD60_N_B',
'FRED/RPONMBSD',
'FRED/RPONTSYD',
'FRED/RPONTTLD',
'FRED/RPONAGYD',
'FRED/T10Y2Y',
'FRED/T5YIE',
'FRED/T10Y3M',
'FRED/T10YIE',
'FRED/T5YIFR',
'FRED/OBFR1',
'FRED/OBFR25',
'FRED/OBFR75',
'FRED/OBFRVOL',
'FRED/WLEMUINDXD',
'FRED/USEPUINDXD',
'FRED/DFEDTARL',
'FRED/DPCREDIT',
'FRED/DFEDTARU',
'FRED/TOTLUW25O',
'FRED/TOTLUM25O',
'FRED/TOTLL25O',
'FRED/SCNDUW25O',
'FRED/SCNDUM25O',
'MULTPL/SP500_DIV_YIELD_MONTH',
'MULTPL/SP500_PE_RATIO_MONTH',
'MULTPL/SHILLER_PE_RATIO_MONTH',
'MULTPL/SP500_EARNINGS_YIELD_MONTH',
'MULTPL/SP500_REAL_PRICE_MONTH',
'MULTPL/SP500_INFLADJ_MONTH',
'MULTPL/SP500_DIV_MONTH',
'MULTPL/SP500_EARNINGS_MONTH',
'RATEINF/CPI_USA',
'RATEINF/CPI_EUR',
'RATEINF/INFLATION_USA',
'RATEINF/INFLATION_EUR',
'UMICH/SOC35',
'UMICH/SOC22',
'UMICH/SOC16',
'UMICH/SOC1',
'UMICH/SOC47',
'UMICH/SOC46',
'UMICH/SOC45',
'UMICH/SOC44',
'UMICH/SOC43',
'UMICH/SOC42',
'UMICH/SOC41',
'UMICH/SOC40',
'UMICH/SOC39',
'UMICH/SOC38',
'UMICH/SOC37',
'UMICH/SOC36',
'UMICH/SOC34',
'UMICH/SOC33',
'UMICH/SOC32',
'UMICH/SOC31',
'UMICH/SOC30',
'UMICH/SOC29',
'UMICH/SOC28',
'UMICH/SOC27',
'UMICH/SOC26',
'UMICH/SOC25',
'UMICH/SOC24',
'UMICH/SOC23',
'UMICH/SOC21',
'UMICH/SOC20',
'UMICH/SOC19',
'UMICH/SOC18',
'UMICH/SOC17',
'UMICH/SOC15',
'UMICH/SOC14',
'UMICH/SOC13',
'UMICH/SOC12',
'UMICH/SOC11',
'UMICH/SOC10',
'UMICH/SOC9',
'UMICH/SOC8',
'UMICH/SOC7',
'UMICH/SOC6',
'UMICH/SOC5',
'UMICH/SOC4',
'UMICH/SOC3',
'UMICH/SOC2',
'USTREASURY/REALLONGTERM',
'USTREASURY/REALYIELD',
'USTREASURY/BILLRATES',
'USTREASURY/YIELD',
'USTREASURY/LONGTERMRATES',
'USTREASURY/HQMYC',
'USTREASURY/MATDIS',
'USTREASURY/AVMAT',
'USTREASURY/TNMBOR',
'USTREASURY/TMBOR',
'USTREASURY/MKTDM',
'USTREASURY/BRDNM']

    CFTC = ['CFTC/066393_FO_L_CHG', 'CFTC/066393_FO_CHG', 'CFTC/066393_F_L_CHG', 'CFTC/066393_F_CHG', 'CFTC/021A65_FO_L_CHG', 'CFTC/021A65_FO_CHG', 'CFTC/021A65_F_L_CHG', 'CFTC/021A65_F_CHG', 'CFTC/021A65_FO_L_OTR_CR', 'CFTC/021A65_FO_L_OLD_CR', 'CFTC/021A65_FO_L_ALL_CR', 'CFTC/021A65_FO_L_OTR_NT', 'CFTC/021A65_FO_L_OLD_NT', 'CFTC/021A65_FO_L_ALL_NT', 'CFTC/021A65_FO_L_OTR_OI', 'CFTC/021A65_FO_L_OLD_OI', 'CFTC/021A65_FO_L_ALL_OI', 'CFTC/021A65_FO_L_OTR', 'CFTC/021A65_FO_L_OLD', 'CFTC/021A65_FO_L_ALL', 'CFTC/021A65_FO_OTR_CR', 'CFTC/021A65_FO_OLD_CR', 'CFTC/021A65_FO_ALL_CR', 'CFTC/021A65_FO_OTR_NT', 'CFTC/021A65_FO_OLD_NT', 'CFTC/021A65_FO_ALL_NT', 'CFTC/021A65_FO_OTR_OI', 'CFTC/021A65_FO_OLD_OI', 'CFTC/021A65_FO_ALL_OI', 'CFTC/021A65_FO_OTR', 'CFTC/021A65_FO_OLD', 'CFTC/021A65_FO_ALL', 'CFTC/021A65_F_L_OTR_CR', 'CFTC/021A65_F_L_OLD_CR', 'CFTC/021A65_F_L_ALL_CR', 'CFTC/021A65_F_L_OTR_NT', 'CFTC/021A65_F_L_OLD_NT', 'CFTC/021A65_F_L_ALL_NT', 'CFTC/021A65_F_L_OTR_OI', 'CFTC/021A65_F_L_OLD_OI', 'CFTC/021A65_F_L_ALL_OI', 'CFTC/021A65_F_L_OTR', 'CFTC/021A65_F_L_OLD', 'CFTC/021A65_F_L_ALL', 'CFTC/021A65_F_OTR_CR', 'CFTC/021A65_F_OLD_CR', 'CFTC/021A65_F_ALL_CR', 'CFTC/021A65_F_OTR_NT', 'CFTC/021A65_F_OLD_NT', 'CFTC/021A65_F_ALL_NT', 'CFTC/021A65_F_OTR_OI', 'CFTC/021A65_F_OLD_OI', 'CFTC/021A65_F_ALL_OI', 'CFTC/021A65_F_OTR', 'CFTC/021A65_F_OLD', 'CFTC/021A65_F_ALL', 'CFTC/023B98_FO_L_CHG', 'CFTC/023B98_FO_CHG', 'CFTC/023B98_F_L_CHG', 'CFTC/023B98_F_CHG', 'CFTC/023B98_FO_L_OTR_CR', 'CFTC/023B98_FO_L_OLD_CR', 'CFTC/023B98_FO_L_ALL_CR', 'CFTC/023B98_FO_L_OTR_NT', 'CFTC/023B98_FO_L_OLD_NT', 'CFTC/023B98_FO_L_ALL_NT', 'CFTC/023B98_FO_L_OTR_OI', 'CFTC/023B98_FO_L_OLD_OI', 'CFTC/023B98_FO_L_ALL_OI', 'CFTC/023B98_FO_L_OTR', 'CFTC/023B98_FO_L_OLD', 'CFTC/023B98_FO_L_ALL', 'CFTC/023B98_FO_OTR_CR', 'CFTC/023B98_FO_OLD_CR', 'CFTC/023B98_FO_ALL_CR', 'CFTC/023B98_FO_OTR_NT', 'CFTC/023B98_FO_OLD_NT', 'CFTC/023B98_FO_ALL_NT', 'CFTC/023B98_FO_OTR_OI', 'CFTC/023B98_FO_OLD_OI', 'CFTC/023B98_FO_ALL_OI', 'CFTC/023B98_FO_OTR', 'CFTC/023B98_FO_OLD', 'CFTC/023B98_FO_ALL', 'CFTC/023B98_F_L_OTR_CR', 'CFTC/023B98_F_L_OLD_CR', 'CFTC/023B98_F_L_ALL_CR', 'CFTC/023B98_F_L_OTR_NT', 'CFTC/023B98_F_L_OLD_NT', 'CFTC/023B98_F_L_ALL_NT', 'CFTC/023B98_F_L_OTR_OI', 'CFTC/023B98_F_L_OLD_OI', 'CFTC/023B98_F_L_ALL_OI', 'CFTC/023B98_F_L_OTR', 'CFTC/023B98_F_L_OLD', 'CFTC/023B98_F_L_ALL', 'CFTC/023B98_F_OTR_CR', 'CFTC/023B98_F_OLD_CR', 'CFTC/023B98_F_ALL_CR', 'CFTC/023B98_F_OTR_NT', 'CFTC/023B98_F_OLD_NT', 'CFTC/023B98_F_ALL_NT', 'CFTC/023B98_F_OTR_OI', 'CFTC/023B98_F_OLD_OI', 'CFTC/023B98_F_ALL_OI', 'CFTC/023B98_F_OTR', 'CFTC/023B98_F_OLD', 'CFTC/023B98_F_ALL', 'CFTC/133742_FO_CHG', 'CFTC/133742_F_CHG', 'CFTC/133742_FO_L_CHG', 'CFTC/133742_F_L_CHG', 'CFTC/133742_FO_ALL_CR', 'CFTC/133742_FO_ALL_NT', 'CFTC/133742_FO_ALL_OI', 'CFTC/133742_FO_ALL', 'CFTC/133742_F_ALL_CR', 'CFTC/133742_F_ALL_NT', 'CFTC/133742_F_ALL_OI', 'CFTC/133742_F_ALL', 'CFTC/133742_FO_L_OTR_CR', 'CFTC/133742_FO_L_OLD_CR', 'CFTC/133742_FO_L_ALL_CR', 'CFTC/133742_FO_L_OTR_NT', 'CFTC/133742_FO_L_OLD_NT', 'CFTC/133742_FO_L_ALL_NT', 'CFTC/133742_FO_L_OTR_OI', 'CFTC/133742_FO_L_OLD_OI', 'CFTC/133742_FO_L_ALL_OI', 'CFTC/133742_FO_L_OTR', 'CFTC/133742_FO_L_OLD', 'CFTC/133742_FO_L_ALL', 'CFTC/133742_F_L_OTR_CR', 'CFTC/133742_F_L_OLD_CR', 'CFTC/133742_F_L_ALL_CR', 'CFTC/133742_F_L_OTR_NT', 'CFTC/133742_F_L_OLD_NT', 'CFTC/133742_F_L_ALL_NT', 'CFTC/133742_F_L_OTR_OI', 'CFTC/133742_F_L_OLD_OI', 'CFTC/133742_F_L_ALL_OI', 'CFTC/133742_F_L_OTR', 'CFTC/133742_F_L_OLD', 'CFTC/133742_F_L_ALL', 'CFTC/066393_FO_L_OTR_CR', 'CFTC/066393_FO_L_OLD_CR', 'CFTC/066393_FO_L_ALL_CR', 'CFTC/066393_FO_L_OTR_NT', 'CFTC/066393_FO_L_OLD_NT', 'CFTC/066393_FO_L_ALL_NT', 'CFTC/066393_FO_L_OTR_OI', 'CFTC/066393_FO_L_OLD_OI', 'CFTC/066393_FO_L_ALL_OI', 'CFTC/066393_FO_L_OTR', 'CFTC/066393_FO_L_OLD', 'CFTC/066393_FO_L_ALL', 'CFTC/066393_FO_OTR_CR', 'CFTC/066393_FO_OLD_CR', 'CFTC/066393_FO_ALL_CR', 'CFTC/066393_FO_OTR_NT', 'CFTC/066393_FO_OLD_NT', 'CFTC/066393_FO_ALL_NT', 'CFTC/066393_FO_OTR_OI', 'CFTC/066393_FO_OLD_OI', 'CFTC/066393_FO_ALL_OI', 'CFTC/066393_FO_OTR', 'CFTC/066393_FO_OLD', 'CFTC/066393_FO_ALL', 'CFTC/066393_F_L_OTR_CR', 'CFTC/066393_F_L_OLD_CR', 'CFTC/066393_F_L_ALL_CR', 'CFTC/066393_F_L_OTR_NT', 'CFTC/066393_F_L_OLD_NT', 'CFTC/066393_F_L_ALL_NT', 'CFTC/066393_F_L_OTR_OI', 'CFTC/066393_F_L_OLD_OI', 'CFTC/066393_F_L_ALL_OI', 'CFTC/066393_F_L_OTR', 'CFTC/066393_F_L_OLD', 'CFTC/066393_F_L_ALL', 'CFTC/066393_F_OTR_CR', 'CFTC/066393_F_OLD_CR', 'CFTC/066393_F_ALL_CR', 'CFTC/066393_F_OTR_NT', 'CFTC/066393_F_OLD_NT', 'CFTC/066393_F_ALL_NT', 'CFTC/066393_F_OTR_OI', 'CFTC/066393_F_OLD_OI', 'CFTC/066393_F_ALL_OI', 'CFTC/066393_F_OTR', 'CFTC/066393_F_OLD', 'CFTC/066393_F_ALL', 'CFTC/146021_FO_CHG', 'CFTC/146021_F_CHG', 'CFTC/146021_FO_L_CHG', 'CFTC/146021_F_L_CHG', 'CFTC/146021_FO_ALL_CR', 'CFTC/146021_FO_ALL_NT', 'CFTC/146021_FO_ALL_OI', 'CFTC/146021_FO_ALL', 'CFTC/146021_F_ALL_CR', 'CFTC/146021_F_ALL_NT', 'CFTC/146021_F_ALL_OI', 'CFTC/146021_F_ALL', 'CFTC/146021_FO_L_OTR_CR', 'CFTC/146021_FO_L_OLD_CR', 'CFTC/146021_FO_L_ALL_CR', 'CFTC/146021_FO_L_OTR_NT', 'CFTC/146021_FO_L_OLD_NT', 'CFTC/146021_FO_L_ALL_NT', 'CFTC/146021_FO_L_OTR_OI', 'CFTC/146021_FO_L_OLD_OI', 'CFTC/146021_FO_L_ALL_OI', 'CFTC/146021_FO_L_OTR', 'CFTC/146021_FO_L_OLD', 'CFTC/146021_FO_L_ALL', 'CFTC/146021_F_L_OTR_CR', 'CFTC/146021_F_L_OLD_CR', 'CFTC/146021_F_L_ALL_CR', 'CFTC/146021_F_L_OTR_NT', 'CFTC/146021_F_L_OLD_NT', 'CFTC/146021_F_L_ALL_NT', 'CFTC/146021_F_L_OTR_OI', 'CFTC/146021_F_L_OLD_OI', 'CFTC/146021_F_L_ALL_OI', 'CFTC/146021_F_L_OTR', 'CFTC/146021_F_L_OLD', 'CFTC/146021_F_L_ALL', 'CFTC/0643IK_FO_L_CHG', 'CFTC/0643IK_FO_CHG', 'CFTC/0643IK_F_L_CHG', 'CFTC/0643IK_F_CHG', 'CFTC/0643IK_FO_L_OTR_CR', 'CFTC/0643IK_FO_L_OLD_CR', 'CFTC/0643IK_FO_L_ALL_CR', 'CFTC/0643IK_FO_L_OTR_NT', 'CFTC/0643IK_FO_L_OLD_NT', 'CFTC/0643IK_FO_L_ALL_NT', 'CFTC/0643IK_FO_L_OTR_OI', 'CFTC/0643IK_FO_L_OLD_OI', 'CFTC/0643IK_FO_L_ALL_OI', 'CFTC/0643IK_FO_L_OTR', 'CFTC/0643IK_FO_L_OLD', 'CFTC/0643IK_FO_L_ALL', 'CFTC/0643IK_FO_OTR_CR', 'CFTC/0643IK_FO_OLD_CR', 'CFTC/0643IK_FO_ALL_CR', 'CFTC/0643IK_FO_OTR_NT', 'CFTC/0643IK_FO_OLD_NT', 'CFTC/0643IK_FO_ALL_NT', 'CFTC/0643IK_FO_OTR_OI', 'CFTC/0643IK_FO_OLD_OI', 'CFTC/0643IK_FO_ALL_OI', 'CFTC/0643IK_FO_OTR', 'CFTC/0643IK_FO_OLD', 'CFTC/0643IK_FO_ALL', 'CFTC/0643IK_F_L_OTR_CR', 'CFTC/0643IK_F_L_OLD_CR', 'CFTC/0643IK_F_L_ALL_CR', 'CFTC/0643IK_F_L_OTR_NT', 'CFTC/0643IK_F_L_OLD_NT', 'CFTC/0643IK_F_L_ALL_NT', 'CFTC/0643IK_F_L_OTR_OI', 'CFTC/0643IK_F_L_OLD_OI', 'CFTC/0643IK_F_L_ALL_OI', 'CFTC/0643IK_F_L_OTR', 'CFTC/0643IK_F_L_OLD', 'CFTC/0643IK_F_L_ALL', 'CFTC/0643IK_F_OTR_CR', 'CFTC/0643IK_F_OLD_CR', 'CFTC/0643IK_F_ALL_CR', 'CFTC/0643IK_F_OTR_NT', 'CFTC/0643IK_F_OLD_NT', 'CFTC/0643IK_F_ALL_NT', 'CFTC/0643IK_F_OTR_OI', 'CFTC/0643IK_F_OLD_OI', 'CFTC/0643IK_F_ALL_OI', 'CFTC/0643IK_F_OTR', 'CFTC/0643IK_F_OLD', 'CFTC/0643IK_F_ALL', 'CFTC/0063DA_FO_L_CHG', 'CFTC/0063DA_FO_CHG', 'CFTC/0063DA_F_L_CHG', 'CFTC/0063DA_F_CHG', 'CFTC/0063DA_FO_L_OTR_CR', 'CFTC/0063DA_FO_L_OLD_CR', 'CFTC/0063DA_FO_L_ALL_CR', 'CFTC/0063DA_FO_L_OTR_NT', 'CFTC/0063DA_FO_L_OLD_NT', 'CFTC/0063DA_FO_L_ALL_NT', 'CFTC/0063DA_FO_L_OTR_OI', 'CFTC/0063DA_FO_L_OLD_OI', 'CFTC/0063DA_FO_L_ALL_OI', 'CFTC/0063DA_FO_L_OTR', 'CFTC/0063DA_FO_L_OLD', 'CFTC/0063DA_FO_L_ALL', 'CFTC/0063DA_FO_OTR_CR', 'CFTC/0063DA_FO_OLD_CR', 'CFTC/0063DA_FO_ALL_CR', 'CFTC/0063DA_FO_OTR_NT', 'CFTC/0063DA_FO_OLD_NT', 'CFTC/0063DA_FO_ALL_NT', 'CFTC/0063DA_FO_OTR_OI', 'CFTC/0063DA_FO_OLD_OI', 'CFTC/0063DA_FO_ALL_OI', 'CFTC/0063DA_FO_OTR', 'CFTC/0063DA_FO_OLD', 'CFTC/0063DA_FO_ALL', 'CFTC/0063DA_F_L_OTR_CR', 'CFTC/0063DA_F_L_OLD_CR', 'CFTC/0063DA_F_L_ALL_CR', 'CFTC/0063DA_F_L_OTR_NT', 'CFTC/0063DA_F_L_OLD_NT', 'CFTC/0063DA_F_L_ALL_NT', 'CFTC/0063DA_F_L_OTR_OI', 'CFTC/0063DA_F_L_OLD_OI', 'CFTC/0063DA_F_L_ALL_OI', 'CFTC/0063DA_F_L_OTR', 'CFTC/0063DA_F_L_OLD', 'CFTC/0063DA_F_L_ALL', 'CFTC/0063DA_F_OTR_CR', 'CFTC/0063DA_F_OLD_CR', 'CFTC/0063DA_F_ALL_CR', 'CFTC/0063DA_F_OTR_NT', 'CFTC/0063DA_F_OLD_NT', 'CFTC/0063DA_F_ALL_NT', 'CFTC/0063DA_F_OTR_OI', 'CFTC/0063DA_F_OLD_OI', 'CFTC/0063DA_F_ALL_OI', 'CFTC/0063DA_F_OTR', 'CFTC/0063DA_F_OLD', 'CFTC/0063DA_F_ALL', 'CFTC/06439U_FO_L_CHG', 'CFTC/06439S_FO_L_CHG', 'CFTC/06439U_FO_CHG', 'CFTC/06439S_FO_CHG', 'CFTC/06439U_F_L_CHG', 'CFTC/06439S_F_L_CHG', 'CFTC/06439U_F_CHG', 'CFTC/06439S_F_CHG', 'CFTC/06439U_FO_L_OTR_CR', 'CFTC/06439U_FO_L_OLD_CR', 'CFTC/06439U_FO_L_ALL_CR', 'CFTC/06439U_FO_L_OTR_NT', 'CFTC/06439U_FO_L_OLD_NT', 'CFTC/06439U_FO_L_ALL_NT', 'CFTC/06439U_FO_L_OTR_OI', 'CFTC/06439U_FO_L_OLD_OI', 'CFTC/06439U_FO_L_ALL_OI', 'CFTC/06439U_FO_L_OTR', 'CFTC/06439U_FO_L_OLD', 'CFTC/06439U_FO_L_ALL', 'CFTC/06439S_FO_L_OTR_CR', 'CFTC/06439S_FO_L_OLD_CR', 'CFTC/06439S_FO_L_ALL_CR', 'CFTC/06439S_FO_L_OTR_NT', 'CFTC/06439S_FO_L_OLD_NT', 'CFTC/06439S_FO_L_ALL_NT', 'CFTC/06439S_FO_L_OTR_OI', 'CFTC/06439S_FO_L_OLD_OI', 'CFTC/06439S_FO_L_ALL_OI', 'CFTC/06439S_FO_L_OTR', 'CFTC/06439S_FO_L_OLD', 'CFTC/06439S_FO_L_ALL', 'CFTC/06439U_FO_OTR_CR', 'CFTC/06439U_FO_OLD_CR', 'CFTC/06439U_FO_ALL_CR', 'CFTC/06439U_FO_OTR_NT', 'CFTC/06439U_FO_OLD_NT', 'CFTC/06439U_FO_ALL_NT', 'CFTC/06439U_FO_OTR_OI', 'CFTC/06439U_FO_OLD_OI', 'CFTC/06439U_FO_ALL_OI', 'CFTC/06439U_FO_OTR', 'CFTC/06439U_FO_OLD', 'CFTC/06439U_FO_ALL', 'CFTC/06439S_FO_OTR_CR', 'CFTC/06439S_FO_OLD_CR', 'CFTC/06439S_FO_ALL_CR', 'CFTC/06439S_FO_OTR_NT', 'CFTC/06439S_FO_OLD_NT', 'CFTC/06439S_FO_ALL_NT', 'CFTC/06439S_FO_OTR_OI', 'CFTC/06439S_FO_OLD_OI', 'CFTC/06439S_FO_ALL_OI', 'CFTC/06439S_FO_OTR', 'CFTC/06439S_FO_OLD', 'CFTC/06439S_FO_ALL', 'CFTC/06439U_F_L_OTR_CR', 'CFTC/06439U_F_L_OLD_CR', 'CFTC/06439U_F_L_ALL_CR', 'CFTC/06439U_F_L_OTR_NT', 'CFTC/06439U_F_L_OLD_NT', 'CFTC/06439U_F_L_ALL_NT', 'CFTC/06439U_F_L_OTR_OI', 'CFTC/06439U_F_L_OLD_OI', 'CFTC/06439U_F_L_ALL_OI', 'CFTC/06439U_F_L_OTR', 'CFTC/06439U_F_L_OLD', 'CFTC/06439U_F_L_ALL', 'CFTC/06439S_F_L_OTR_CR', 'CFTC/06439S_F_L_OLD_CR', 'CFTC/06439S_F_L_ALL_CR', 'CFTC/06439S_F_L_OTR_NT', 'CFTC/06439S_F_L_OLD_NT', 'CFTC/06439S_F_L_ALL_NT', 'CFTC/06439S_F_L_OTR_OI', 'CFTC/06439S_F_L_OLD_OI', 'CFTC/06439S_F_L_ALL_OI', 'CFTC/06439S_F_L_OTR', 'CFTC/06439S_F_L_OLD', 'CFTC/06439S_F_L_ALL', 'CFTC/06439U_F_OTR_CR', 'CFTC/06439U_F_OLD_CR', 'CFTC/06439U_F_ALL_CR', 'CFTC/06439U_F_OTR_NT', 'CFTC/06439U_F_OLD_NT', 'CFTC/06439U_F_ALL_NT', 'CFTC/06439U_F_OTR_OI', 'CFTC/06439U_F_OLD_OI', 'CFTC/06439U_F_ALL_OI', 'CFTC/06439U_F_OTR', 'CFTC/06439U_F_OLD', 'CFTC/06439U_F_ALL', 'CFTC/06439S_F_OTR_CR', 'CFTC/06439S_F_OLD_CR', 'CFTC/06439S_F_ALL_CR', 'CFTC/06439S_F_OTR_NT', 'CFTC/06439S_F_OLD_NT', 'CFTC/06439S_F_ALL_NT', 'CFTC/06439S_F_OTR_OI', 'CFTC/06439S_F_OLD_OI', 'CFTC/06439S_F_ALL_OI', 'CFTC/06439S_F_OTR', 'CFTC/06439S_F_OLD', 'CFTC/06439S_F_ALL', 'CFTC/088695_FO_L_OTR_CR', 'CFTC/088695_FO_L_OLD_CR', 'CFTC/088695_FO_L_ALL_CR', 'CFTC/088695_FO_L_OTR_NT', 'CFTC/088695_FO_L_OLD_NT', 'CFTC/088695_FO_L_ALL_NT', 'CFTC/088695_FO_L_OTR_OI', 'CFTC/088695_FO_L_OLD_OI', 'CFTC/088695_FO_L_ALL_OI', 'CFTC/088695_FO_L_OTR', 'CFTC/088695_FO_L_OLD', 'CFTC/088695_FO_L_ALL', 'CFTC/088695_FO_OTR_CR', 'CFTC/088695_FO_OLD_CR', 'CFTC/088695_FO_ALL_CR', 'CFTC/088695_FO_OTR_NT', 'CFTC/088695_FO_OLD_NT', 'CFTC/088695_FO_ALL_NT', 'CFTC/088695_FO_OTR_OI', 'CFTC/088695_FO_OLD_OI', 'CFTC/088695_FO_ALL_OI', 'CFTC/088695_FO_OTR', 'CFTC/088695_FO_OLD', 'CFTC/088695_FO_ALL', 'CFTC/088695_F_L_OTR_CR', 'CFTC/088695_F_L_OLD_CR', 'CFTC/088695_F_L_ALL_CR', 'CFTC/088695_F_L_OTR_NT', 'CFTC/088695_F_L_OLD_NT', 'CFTC/088695_F_L_ALL_NT', 'CFTC/088695_F_L_OTR_OI', 'CFTC/088695_F_L_OLD_OI', 'CFTC/088695_F_L_ALL_OI', 'CFTC/088695_F_L_OTR', 'CFTC/088695_F_L_OLD', 'CFTC/088695_F_L_ALL', 'CFTC/088695_F_OTR_CR', 'CFTC/088695_F_OLD_CR', 'CFTC/088695_F_ALL_CR', 'CFTC/088695_F_OTR_NT', 'CFTC/088695_F_OLD_NT', 'CFTC/088695_F_ALL_NT', 'CFTC/088695_F_OTR_OI', 'CFTC/088695_F_OLD_OI', 'CFTC/088695_F_ALL_OI', 'CFTC/088695_F_OTR', 'CFTC/088695_F_OLD', 'CFTC/088695_F_ALL', 'CFTC/06739C_FO_L_CHG', 'CFTC/06739C_FO_CHG', 'CFTC/06739C_F_L_CHG', 'CFTC/06739C_F_CHG', 'CFTC/06739C_FO_L_OTR_CR', 'CFTC/06739C_FO_L_OLD_CR', 'CFTC/06739C_FO_L_ALL_CR', 'CFTC/06739C_FO_L_OTR_NT', 'CFTC/06739C_FO_L_OLD_NT', 'CFTC/06739C_FO_L_ALL_NT', 'CFTC/06739C_FO_L_OTR_OI', 'CFTC/06739C_FO_L_OLD_OI', 'CFTC/06739C_FO_L_ALL_OI', 'CFTC/06739C_FO_L_OTR', 'CFTC/06739C_FO_L_OLD', 'CFTC/06739C_FO_L_ALL', 'CFTC/06739C_FO_OTR_CR', 'CFTC/06739C_FO_OLD_CR', 'CFTC/06739C_FO_ALL_CR', 'CFTC/06739C_FO_OTR_NT', 'CFTC/06739C_FO_OLD_NT', 'CFTC/06739C_FO_ALL_NT', 'CFTC/06739C_FO_OTR_OI', 'CFTC/06739C_FO_OLD_OI', 'CFTC/06739C_FO_ALL_OI', 'CFTC/06739C_FO_OTR', 'CFTC/06739C_FO_OLD', 'CFTC/06739C_FO_ALL', 'CFTC/06739C_F_L_OTR_CR', 'CFTC/06739C_F_L_OLD_CR', 'CFTC/06739C_F_L_ALL_CR', 'CFTC/06739C_F_L_OTR_NT', 'CFTC/06739C_F_L_OLD_NT', 'CFTC/06739C_F_L_ALL_NT', 'CFTC/06739C_F_L_OTR_OI', 'CFTC/06739C_F_L_OLD_OI', 'CFTC/06739C_F_L_ALL_OI', 'CFTC/06739C_F_L_OTR', 'CFTC/06739C_F_L_OLD', 'CFTC/06739C_F_L_ALL', 'CFTC/06739C_F_OTR_CR', 'CFTC/06739C_F_OLD_CR', 'CFTC/06739C_F_ALL_CR', 'CFTC/06739C_F_OTR_NT', 'CFTC/06739C_F_OLD_NT', 'CFTC/06739C_F_ALL_NT', 'CFTC/06739C_F_OTR_OI', 'CFTC/06739C_F_OLD_OI', 'CFTC/06739C_F_ALL_OI', 'CFTC/06739C_F_OTR', 'CFTC/06739C_F_OLD', 'CFTC/06739C_F_ALL', 'CFTC/191696_FO_L_CHG', 'CFTC/191696_FO_CHG', 'CFTC/191696_F_L_CHG', 'CFTC/191696_F_CHG', 'CFTC/191696_FO_L_OTR_CR', 'CFTC/191696_FO_L_OLD_CR', 'CFTC/191696_FO_L_ALL_CR', 'CFTC/191696_FO_L_OTR_NT', 'CFTC/191696_FO_L_OLD_NT', 'CFTC/191696_FO_L_ALL_NT', 'CFTC/191696_FO_L_OTR_OI', 'CFTC/191696_FO_L_OLD_OI', 'CFTC/191696_FO_L_ALL_OI', 'CFTC/191696_FO_L_OTR', 'CFTC/191696_FO_L_OLD', 'CFTC/191696_FO_L_ALL', 'CFTC/191696_FO_OTR_CR', 'CFTC/191696_FO_OLD_CR', 'CFTC/191696_FO_ALL_CR', 'CFTC/191696_FO_OTR_NT', 'CFTC/191696_FO_OLD_NT', 'CFTC/191696_FO_ALL_NT', 'CFTC/191696_FO_OTR_OI', 'CFTC/191696_FO_OLD_OI', 'CFTC/191696_FO_ALL_OI', 'CFTC/191696_FO_OTR', 'CFTC/191696_FO_OLD', 'CFTC/191696_FO_ALL', 'CFTC/191696_F_L_OTR_CR', 'CFTC/191696_F_L_OLD_CR', 'CFTC/191696_F_L_ALL_CR', 'CFTC/191696_F_L_OTR_NT', 'CFTC/191696_F_L_OLD_NT', 'CFTC/191696_F_L_ALL_NT', 'CFTC/191696_F_L_OTR_OI', 'CFTC/191696_F_L_OLD_OI', 'CFTC/191696_F_L_ALL_OI', 'CFTC/191696_F_L_OTR', 'CFTC/191696_F_L_OLD', 'CFTC/191696_F_L_ALL', 'CFTC/191696_F_OTR_CR', 'CFTC/191696_F_OLD_CR', 'CFTC/191696_F_ALL_CR', 'CFTC/191696_F_OTR_NT', 'CFTC/191696_F_OLD_NT', 'CFTC/191696_F_ALL_NT', 'CFTC/191696_F_OTR_OI', 'CFTC/191696_F_OLD_OI', 'CFTC/191696_F_ALL_OI', 'CFTC/191696_F_OTR', 'CFTC/191696_F_OLD', 'CFTC/191696_F_ALL', 'CFTC/06641E_FO_L_CHG', 'CFTC/06641E_FO_CHG', 'CFTC/06641E_F_L_CHG', 'CFTC/06641E_F_CHG', 'CFTC/06641E_FO_L_OTR_CR', 'CFTC/06641E_FO_L_OLD_CR', 'CFTC/06641E_FO_L_ALL_CR', 'CFTC/06641E_FO_L_OTR_NT', 'CFTC/06641E_FO_L_OLD_NT', 'CFTC/06641E_FO_L_ALL_NT', 'CFTC/06641E_FO_L_OTR_OI', 'CFTC/06641E_FO_L_OLD_OI', 'CFTC/06641E_FO_L_ALL_OI', 'CFTC/06641E_FO_L_OTR', 'CFTC/06641E_FO_L_OLD', 'CFTC/06641E_FO_L_ALL', 'CFTC/06641E_FO_OTR_CR', 'CFTC/06641E_FO_OLD_CR', 'CFTC/06641E_FO_ALL_CR', 'CFTC/06641E_FO_OTR_NT', 'CFTC/06641E_FO_OLD_NT', 'CFTC/06641E_FO_ALL_NT', 'CFTC/06641E_FO_OTR_OI', 'CFTC/06641E_FO_OLD_OI', 'CFTC/06641E_FO_ALL_OI', 'CFTC/06641E_FO_OTR', 'CFTC/06641E_FO_OLD', 'CFTC/06641E_FO_ALL', 'CFTC/06641E_F_L_OTR_CR', 'CFTC/06641E_F_L_OLD_CR', 'CFTC/06641E_F_L_ALL_CR', 'CFTC/06641E_F_L_OTR_NT', 'CFTC/06641E_F_L_OLD_NT', 'CFTC/06641E_F_L_ALL_NT', 'CFTC/06641E_F_L_OTR_OI', 'CFTC/06641E_F_L_OLD_OI', 'CFTC/06641E_F_L_ALL_OI', 'CFTC/06641E_F_L_OTR', 'CFTC/06641E_F_L_OLD', 'CFTC/06641E_F_L_ALL', 'CFTC/06641E_F_OTR_CR', 'CFTC/06641E_F_OLD_CR', 'CFTC/06641E_F_ALL_CR', 'CFTC/06641E_F_OTR_NT', 'CFTC/06641E_F_OLD_NT', 'CFTC/06641E_F_ALL_NT', 'CFTC/06641E_F_OTR_OI', 'CFTC/06641E_F_OLD_OI', 'CFTC/06641E_F_ALL_OI', 'CFTC/06641E_F_OTR', 'CFTC/06641E_F_OLD', 'CFTC/06641E_F_ALL', 'CFTC/0063DX_FO_L_CHG', 'CFTC/0063DW_FO_L_CHG', 'CFTC/0063DX_FO_CHG', 'CFTC/0063DW_FO_CHG', 'CFTC/0063DX_F_L_CHG', 'CFTC/0063DW_F_L_CHG', 'CFTC/0063DX_F_CHG', 'CFTC/0063DW_F_CHG', 'CFTC/209747_FO_CHG', 'CFTC/209747_F_CHG', 'CFTC/209747_FO_L_CHG', 'CFTC/0063DX_FO_L_OTR_CR', 'CFTC/0063DX_FO_L_OLD_CR', 'CFTC/0063DX_FO_L_ALL_CR', 'CFTC/0063DX_FO_L_OTR_NT', 'CFTC/0063DX_FO_L_OLD_NT', 'CFTC/0063DX_FO_L_ALL_NT', 'CFTC/0063DX_FO_L_OTR_OI', 'CFTC/0063DX_FO_L_OLD_OI', 'CFTC/0063DX_FO_L_ALL_OI', 'CFTC/0063DX_FO_L_OTR', 'CFTC/0063DX_FO_L_OLD', 'CFTC/0063DX_FO_L_ALL', 'CFTC/0063DW_FO_L_OTR_CR', 'CFTC/0063DW_FO_L_OLD_CR', 'CFTC/0063DW_FO_L_ALL_CR', 'CFTC/0063DW_FO_L_OTR_NT', 'CFTC/0063DW_FO_L_OLD_NT', 'CFTC/0063DW_FO_L_ALL_NT', 'CFTC/0063DW_FO_L_OTR_OI', 'CFTC/0063DW_FO_L_OLD_OI', 'CFTC/0063DW_FO_L_ALL_OI', 'CFTC/0063DW_FO_L_OTR', 'CFTC/0063DW_FO_L_OLD', 'CFTC/0063DW_FO_L_ALL', 'CFTC/0063DX_FO_OTR_CR', 'CFTC/0063DX_FO_OLD_CR', 'CFTC/0063DX_FO_ALL_CR', 'CFTC/0063DX_FO_OTR_NT', 'CFTC/0063DX_FO_OLD_NT', 'CFTC/0063DX_FO_ALL_NT', 'CFTC/0063DX_FO_OTR_OI', 'CFTC/0063DX_FO_OLD_OI', 'CFTC/0063DX_FO_ALL_OI', 'CFTC/0063DX_FO_OTR', 'CFTC/0063DX_FO_OLD', 'CFTC/0063DX_FO_ALL', 'CFTC/0063DW_FO_OTR_CR', 'CFTC/0063DW_FO_OLD_CR', 'CFTC/0063DW_FO_ALL_CR', 'CFTC/0063DW_FO_OTR_NT', 'CFTC/0063DW_FO_OLD_NT', 'CFTC/0063DW_FO_ALL_NT', 'CFTC/0063DW_FO_OTR_OI', 'CFTC/0063DW_FO_OLD_OI', 'CFTC/0063DW_FO_ALL_OI', 'CFTC/0063DW_FO_OTR', 'CFTC/0063DW_FO_OLD', 'CFTC/0063DW_FO_ALL', 'CFTC/209747_F_L_CHG', 'CFTC/0063DX_F_L_OTR_CR', 'CFTC/0063DX_F_L_OLD_CR', 'CFTC/0063DX_F_L_ALL_CR', 'CFTC/0063DX_F_L_OTR_NT', 'CFTC/0063DX_F_L_OLD_NT', 'CFTC/0063DX_F_L_ALL_NT', 'CFTC/0063DX_F_L_OTR_OI', 'CFTC/0063DX_F_L_OLD_OI', 'CFTC/0063DX_F_L_ALL_OI', 'CFTC/0063DX_F_L_OTR', 'CFTC/0063DX_F_L_OLD', 'CFTC/0063DX_F_L_ALL', 'CFTC/0063DW_F_L_OTR_CR', 'CFTC/0063DW_F_L_OLD_CR', 'CFTC/0063DW_F_L_ALL_CR', 'CFTC/0063DW_F_L_OTR_NT', 'CFTC/0063DW_F_L_OLD_NT', 'CFTC/0063DW_F_L_ALL_NT', 'CFTC/0063DW_F_L_OTR_OI', 'CFTC/0063DW_F_L_OLD_OI', 'CFTC/0063DW_F_L_ALL_OI', 'CFTC/0063DW_F_L_OTR', 'CFTC/0063DW_F_L_OLD', 'CFTC/0063DW_F_L_ALL', 'CFTC/0063DX_F_OTR_CR', 'CFTC/0063DX_F_OLD_CR', 'CFTC/0063DX_F_ALL_CR', 'CFTC/0063DX_F_OTR_NT', 'CFTC/0063DX_F_OLD_NT', 'CFTC/0063DX_F_ALL_NT', 'CFTC/0063DX_F_OTR_OI', 'CFTC/0063DX_F_OLD_OI', 'CFTC/0063DX_F_ALL_OI', 'CFTC/0063DX_F_OTR', 'CFTC/0063DX_F_OLD', 'CFTC/0063DX_F_ALL', 'CFTC/0063DW_F_OTR_CR', 'CFTC/0063DW_F_OLD_CR', 'CFTC/0063DW_F_ALL_CR', 'CFTC/0063DW_F_OTR_NT', 'CFTC/0063DW_F_OLD_NT', 'CFTC/0063DW_F_ALL_NT', 'CFTC/0063DW_F_OTR_OI', 'CFTC/0063DW_F_OLD_OI', 'CFTC/0063DW_F_ALL_OI', 'CFTC/0063DW_F_OTR', 'CFTC/0063DW_F_OLD', 'CFTC/0063DW_F_ALL', 'CFTC/209747_FO_ALL_CR', 'CFTC/209747_FO_ALL_NT', 'CFTC/209747_FO_ALL_OI', 'CFTC/209747_FO_ALL', 'CFTC/209747_F_ALL_CR', 'CFTC/209747_F_ALL_NT', 'CFTC/209747_F_ALL_OI', 'CFTC/209747_F_ALL', 'CFTC/209747_FO_L_OTR_CR', 'CFTC/209747_FO_L_OLD_CR', 'CFTC/209747_FO_L_ALL_CR', 'CFTC/209747_FO_L_OTR_NT', 'CFTC/209747_FO_L_OLD_NT', 'CFTC/209747_FO_L_ALL_NT', 'CFTC/209747_FO_L_OTR_OI', 'CFTC/209747_FO_L_OLD_OI', 'CFTC/209747_FO_L_ALL_OI', 'CFTC/209747_FO_L_OTR', 'CFTC/209747_FO_L_OLD', 'CFTC/209747_FO_L_ALL', 'CFTC/209747_F_L_OTR_CR', 'CFTC/209747_F_L_OLD_CR', 'CFTC/209747_F_L_ALL_CR', 'CFTC/209747_F_L_OTR_NT', 'CFTC/209747_F_L_OLD_NT', 'CFTC/209747_F_L_ALL_NT', 'CFTC/209747_F_L_OTR_OI', 'CFTC/209747_F_L_OLD_OI', 'CFTC/209747_F_L_ALL_OI', 'CFTC/209747_F_L_OTR', 'CFTC/209747_F_L_OLD', 'CFTC/209747_F_L_ALL', 'CFTC/13874U_FO_ALL_CR', 'CFTC/13874U_FO_ALL_NT', 'CFTC/13874U_FO_ALL_OI', 'CFTC/13874U_FO_ALL', 'CFTC/13874U_F_ALL_CR', 'CFTC/13874U_F_ALL_NT', 'CFTC/13874U_F_ALL_OI', 'CFTC/13874U_F_ALL', 'CFTC/13874U_FO_L_OTR_CR', 'CFTC/13874U_FO_L_OLD_CR', 'CFTC/13874U_FO_L_ALL_CR', 'CFTC/13874U_FO_L_OTR_NT', 'CFTC/13874U_FO_L_OLD_NT', 'CFTC/13874U_FO_L_ALL_NT', 'CFTC/13874U_FO_L_OTR_OI', 'CFTC/13874U_FO_L_OLD_OI', 'CFTC/13874U_FO_L_ALL_OI', 'CFTC/13874U_FO_L_OTR', 'CFTC/13874U_FO_L_OLD', 'CFTC/13874U_FO_L_ALL', 'CFTC/0063DB_FO_L_CHG', 'CFTC/0063DB_FO_CHG', 'CFTC/13874U_F_L_OTR_CR', 'CFTC/13874U_F_L_OLD_CR', 'CFTC/13874U_F_L_ALL_CR', 'CFTC/13874U_F_L_OTR_NT', 'CFTC/13874U_F_L_OLD_NT', 'CFTC/13874U_F_L_ALL_NT', 'CFTC/13874U_F_L_OTR_OI', 'CFTC/13874U_F_L_OLD_OI', 'CFTC/13874U_F_L_ALL_OI', 'CFTC/13874U_F_L_OTR', 'CFTC/13874U_F_L_OLD', 'CFTC/13874U_F_L_ALL', 'CFTC/0063DB_F_L_CHG', 'CFTC/0063DB_F_CHG', 'CFTC/064CZS_FO_L_CHG', 'CFTC/064CZS_FO_CHG', 'CFTC/064CZS_F_L_CHG', 'CFTC/064CZS_F_CHG', 'CFTC/064CZS_FO_L_OTR_CR', 'CFTC/064CZS_FO_L_OLD_CR', 'CFTC/064CZS_FO_L_ALL_CR', 'CFTC/064CZS_FO_L_OTR_NT', 'CFTC/064CZS_FO_L_OLD_NT', 'CFTC/064CZS_FO_L_ALL_NT', 'CFTC/064CZS_FO_L_OTR_OI', 'CFTC/064CZS_FO_L_OLD_OI', 'CFTC/064CZS_FO_L_ALL_OI', 'CFTC/064CZS_FO_L_OTR', 'CFTC/064CZS_FO_L_OLD', 'CFTC/064CZS_FO_L_ALL', 'CFTC/064CZS_FO_OTR_CR', 'CFTC/064CZS_FO_OLD_CR', 'CFTC/064CZS_FO_ALL_CR', 'CFTC/064CZS_FO_OTR_NT', 'CFTC/064CZS_FO_OLD_NT', 'CFTC/064CZS_FO_ALL_NT', 'CFTC/064CZS_FO_OTR_OI', 'CFTC/064CZS_FO_OLD_OI', 'CFTC/064CZS_FO_ALL_OI', 'CFTC/064CZS_FO_OTR', 'CFTC/064CZS_FO_OLD', 'CFTC/064CZS_FO_ALL', 'CFTC/064CZS_F_L_OTR_CR', 'CFTC/064CZS_F_L_OLD_CR', 'CFTC/064CZS_F_L_ALL_CR', 'CFTC/064CZS_F_L_OTR_NT', 'CFTC/064CZS_F_L_OLD_NT', 'CFTC/064CZS_F_L_ALL_NT', 'CFTC/064CZS_F_L_OTR_OI', 'CFTC/064CZS_F_L_OLD_OI', 'CFTC/064CZS_F_L_ALL_OI', 'CFTC/064CZS_F_L_OTR', 'CFTC/064CZS_F_L_OLD', 'CFTC/064CZS_F_L_ALL', 'CFTC/064CZS_F_OTR_CR', 'CFTC/064CZS_F_OLD_CR', 'CFTC/064CZS_F_ALL_CR', 'CFTC/064CZS_F_OTR_NT', 'CFTC/064CZS_F_OLD_NT', 'CFTC/064CZS_F_ALL_NT', 'CFTC/064CZS_F_OTR_OI', 'CFTC/064CZS_F_OLD_OI', 'CFTC/064CZS_F_ALL_OI', 'CFTC/064CZS_F_OTR', 'CFTC/064CZS_F_OLD', 'CFTC/064CZS_F_ALL', 'CFTC/06439W_FO_L_CHG', 'CFTC/06439W_FO_CHG', 'CFTC/06439W_F_L_CHG', 'CFTC/06439W_F_CHG', 'CFTC/06439W_FO_L_OTR_CR', 'CFTC/06439W_FO_L_OLD_CR', 'CFTC/06439W_FO_L_ALL_CR', 'CFTC/06439W_FO_L_OTR_NT', 'CFTC/06439W_FO_L_OLD_NT', 'CFTC/06439W_FO_L_ALL_NT', 'CFTC/06439W_FO_L_OTR_OI', 'CFTC/06439W_FO_L_OLD_OI', 'CFTC/06439W_FO_L_ALL_OI', 'CFTC/06439W_FO_L_OTR', 'CFTC/06439W_FO_L_OLD', 'CFTC/06439W_FO_L_ALL', 'CFTC/06439W_FO_OTR_CR', 'CFTC/06439W_FO_OLD_CR', 'CFTC/06439W_FO_ALL_CR', 'CFTC/06439W_FO_OTR_NT', 'CFTC/06439W_FO_OLD_NT', 'CFTC/06439W_FO_ALL_NT', 'CFTC/06439W_FO_OTR_OI', 'CFTC/06439W_FO_OLD_OI', 'CFTC/06439W_FO_ALL_OI', 'CFTC/06439W_FO_OTR', 'CFTC/06439W_FO_OLD', 'CFTC/06439W_FO_ALL', 'CFTC/06439W_F_L_OTR_CR', 'CFTC/06439W_F_L_OLD_CR', 'CFTC/06439W_F_L_ALL_CR', 'CFTC/06439W_F_L_OTR_NT', 'CFTC/06439W_F_L_OLD_NT', 'CFTC/06439W_F_L_ALL_NT', 'CFTC/06439W_F_L_OTR_OI', 'CFTC/06439W_F_L_OLD_OI', 'CFTC/06439W_F_L_ALL_OI', 'CFTC/06439W_F_L_OTR', 'CFTC/06439W_F_L_OLD', 'CFTC/06439W_F_L_ALL', 'CFTC/06439W_F_OTR_CR', 'CFTC/06439W_F_OLD_CR', 'CFTC/06439W_F_ALL_CR', 'CFTC/06439W_F_OTR_NT', 'CFTC/06439W_F_OLD_NT', 'CFTC/06439W_F_ALL_NT', 'CFTC/06439W_F_OTR_OI', 'CFTC/06439W_F_OLD_OI', 'CFTC/06439W_F_ALL_OI', 'CFTC/06439W_F_OTR', 'CFTC/06439W_F_OLD', 'CFTC/06439W_F_ALL', 'CFTC/06665S_FO_L_CHG', 'CFTC/064CTQ_FO_L_CHG', 'CFTC/06665S_FO_CHG', 'CFTC/064CTQ_FO_CHG', 'CFTC/06665S_F_L_CHG', 'CFTC/064CTQ_F_L_CHG', 'CFTC/06665S_F_CHG', 'CFTC/064CTQ_F_CHG', 'CFTC/064CTQ_FO_L_OTR_CR', 'CFTC/064CTQ_FO_L_OLD_CR', 'CFTC/064CTQ_FO_L_ALL_CR', 'CFTC/064CTQ_FO_L_OTR_NT', 'CFTC/064CTQ_FO_L_OLD_NT', 'CFTC/064CTQ_FO_L_ALL_NT', 'CFTC/064CTQ_FO_L_OTR_OI', 'CFTC/064CTQ_FO_L_OLD_OI', 'CFTC/064CTQ_FO_L_ALL_OI', 'CFTC/064CTQ_FO_L_OTR', 'CFTC/064CTQ_FO_L_OLD', 'CFTC/064CTQ_FO_L_ALL', 'CFTC/06439V_FO_L_CHG', 'CFTC/064CTQ_FO_OTR_CR', 'CFTC/064CTQ_FO_OLD_CR', 'CFTC/064CTQ_FO_ALL_CR', 'CFTC/064CTQ_FO_OTR_NT', 'CFTC/064CTQ_FO_OLD_NT', 'CFTC/064CTQ_FO_ALL_NT', 'CFTC/064CTQ_FO_OTR_OI', 'CFTC/064CTQ_FO_OLD_OI', 'CFTC/064CTQ_FO_ALL_OI', 'CFTC/064CTQ_FO_OTR', 'CFTC/064CTQ_FO_OLD', 'CFTC/064CTQ_FO_ALL', 'CFTC/06439V_FO_CHG', 'CFTC/064CTQ_F_L_OTR_CR', 'CFTC/064CTQ_F_L_OLD_CR', 'CFTC/064CTQ_F_L_ALL_CR', 'CFTC/064CTQ_F_L_OTR_NT', 'CFTC/064CTQ_F_L_OLD_NT', 'CFTC/064CTQ_F_L_ALL_NT', 'CFTC/064CTQ_F_L_OTR_OI', 'CFTC/064CTQ_F_L_OLD_OI', 'CFTC/064CTQ_F_L_ALL_OI', 'CFTC/064CTQ_F_L_OTR', 'CFTC/064CTQ_F_L_OLD', 'CFTC/064CTQ_F_L_ALL', 'CFTC/06439V_F_L_CHG', 'CFTC/064CTQ_F_OTR_CR', 'CFTC/064CTQ_F_OLD_CR', 'CFTC/064CTQ_F_ALL_CR', 'CFTC/064CTQ_F_OTR_NT', 'CFTC/064CTQ_F_OLD_NT', 'CFTC/064CTQ_F_ALL_NT', 'CFTC/064CTQ_F_OTR_OI', 'CFTC/064CTQ_F_OLD_OI', 'CFTC/064CTQ_F_ALL_OI', 'CFTC/064CTQ_F_OTR', 'CFTC/064CTQ_F_OLD', 'CFTC/064CTQ_F_ALL', 'CFTC/06439V_F_CHG', 'CFTC/06439V_FO_L_OTR_CR', 'CFTC/06439V_FO_L_OLD_CR', 'CFTC/06439V_FO_L_ALL_CR', 'CFTC/06439V_FO_L_OTR_NT', 'CFTC/06439V_FO_L_OLD_NT', 'CFTC/06439V_FO_L_ALL_NT', 'CFTC/06439V_FO_L_OTR_OI', 'CFTC/06439V_FO_L_OLD_OI', 'CFTC/06439V_FO_L_ALL_OI', 'CFTC/06439V_FO_L_OTR', 'CFTC/06439V_FO_L_OLD', 'CFTC/06439V_FO_L_ALL', 'CFTC/06439V_FO_OTR_CR', 'CFTC/06439V_FO_OLD_CR', 'CFTC/06439V_FO_ALL_CR', 'CFTC/06439V_FO_OTR_NT', 'CFTC/06439V_FO_OLD_NT', 'CFTC/06439V_FO_ALL_NT', 'CFTC/06439V_FO_OTR_OI', 'CFTC/06439V_FO_OLD_OI', 'CFTC/06439V_FO_ALL_OI', 'CFTC/06439V_FO_OTR', 'CFTC/06439V_FO_OLD', 'CFTC/06439V_FO_ALL', 'CFTC/06439V_F_L_OTR_CR', 'CFTC/06439V_F_L_OLD_CR', 'CFTC/06439V_F_L_ALL_CR', 'CFTC/06439V_F_L_OTR_NT', 'CFTC/06439V_F_L_OLD_NT', 'CFTC/06439V_F_L_ALL_NT', 'CFTC/06439V_F_L_OTR_OI', 'CFTC/06439V_F_L_OLD_OI', 'CFTC/06439V_F_L_ALL_OI', 'CFTC/06439V_F_L_OTR', 'CFTC/06439V_F_L_OLD', 'CFTC/06439V_F_L_ALL', 'CFTC/06439V_F_OTR_CR', 'CFTC/06439V_F_OLD_CR', 'CFTC/06439V_F_ALL_CR', 'CFTC/06439V_F_OTR_NT', 'CFTC/06439V_F_OLD_NT', 'CFTC/06439V_F_ALL_NT', 'CFTC/06439V_F_OTR_OI', 'CFTC/06439V_F_OLD_OI', 'CFTC/06439V_F_ALL_OI', 'CFTC/06439V_F_OTR', 'CFTC/06439V_F_OLD', 'CFTC/06439V_F_ALL', 'CFTC/111A34_FO_L_CHG', 'CFTC/111A34_FO_CHG', 'CFTC/111A34_F_L_CHG', 'CFTC/111A34_F_CHG', 'CFTC/021397_FO_L_CHG', 'CFTC/021397_FO_CHG', 'CFTC/021397_F_L_CHG', 'CFTC/021397_F_CHG', 'CFTC/021397_FO_L_OLD_CR', 'CFTC/021397_FO_L_OTR_CR', 'CFTC/021397_FO_L_ALL_CR', 'CFTC/021397_FO_L_ALL_NT', 'CFTC/021397_FO_L_OTR_NT', 'CFTC/021397_FO_L_OLD_NT', 'CFTC/021397_FO_L_OTR', 'CFTC/021397_FO_L_OLD_OI', 'CFTC/021397_FO_L_OTR_OI', 'CFTC/021397_FO_L_ALL_OI', 'CFTC/021397_FO_L_OLD', 'CFTC/021397_FO_L_ALL', 'CFTC/0063DB_FO_L_OLD_CR', 'CFTC/0063DB_FO_L_OTR_CR', 'CFTC/0063DB_FO_L_OLD_NT', 'CFTC/0063DB_FO_L_ALL_NT', 'CFTC/0063DB_FO_L_ALL_CR', 'CFTC/0063DB_FO_L_OTR_NT', 'CFTC/0063DB_FO_L_OLD_OI', 'CFTC/0063DB_FO_L_OTR', 'CFTC/0063DB_FO_L_OTR_OI', 'CFTC/0063DB_FO_L_ALL', 'CFTC/0063DB_FO_L_ALL_OI', 'CFTC/0063DB_FO_L_OLD', 'CFTC/021397_FO_OLD_CR', 'CFTC/021397_FO_OTR_CR', 'CFTC/021397_FO_OLD_OI', 'CFTC/021397_FO_ALL_CR', 'CFTC/021397_FO_OTR_NT', 'CFTC/021397_FO_OTR', 'CFTC/021397_FO_ALL_OI', 'CFTC/021397_FO_OLD_NT', 'CFTC/021397_FO_ALL_NT', 'CFTC/021397_FO_OTR_OI', 'CFTC/021397_FO_OLD', 'CFTC/021397_FO_ALL', 'CFTC/0063DB_FO_OTR_CR', 'CFTC/0063DB_FO_OLD_CR', 'CFTC/0063DB_FO_ALL_NT', 'CFTC/0063DB_FO_OLD_NT', 'CFTC/0063DB_FO_OTR_NT', 'CFTC/0063DB_FO_ALL_CR', 'CFTC/0063DB_FO_OLD_OI', 'CFTC/0063DB_FO_ALL_OI', 'CFTC/0063DB_FO_OTR_OI', 'CFTC/0063DB_FO_OLD', 'CFTC/0063DB_FO_OTR', 'CFTC/0063DB_FO_ALL', 'CFTC/021397_F_L_OTR_CR', 'CFTC/021397_F_L_ALL_CR', 'CFTC/021397_F_L_OLD_NT', 'CFTC/021397_F_L_ALL_OI', 'CFTC/021397_F_L_OTR', 'CFTC/021397_F_L_ALL_NT', 'CFTC/021397_F_L_OLD_CR', 'CFTC/021397_F_L_OTR_OI', 'CFTC/021397_F_L_OTR_NT', 'CFTC/021397_F_L_OLD_OI', 'CFTC/021397_F_L_ALL', 'CFTC/021397_F_L_OLD', 'CFTC/0063DB_F_L_ALL_OI', 'CFTC/0063DB_F_L_OTR_NT', 'CFTC/0063DB_F_L_OLD_OI', 'CFTC/0063DB_F_L_OLD_NT', 'CFTC/0063DB_F_L_ALL_CR', 'CFTC/0063DB_F_L_OLD_CR', 'CFTC/0063DB_F_L_OTR', 'CFTC/0063DB_F_L_OTR_CR', 'CFTC/0063DB_F_L_OTR_OI', 'CFTC/0063DB_F_L_ALL_NT', 'CFTC/0063DB_F_L_ALL', 'CFTC/0063DB_F_L_OLD', 'CFTC/021397_F_ALL_CR', 'CFTC/021397_F_OTR_CR', 'CFTC/021397_F_OLD_NT', 'CFTC/021397_F_OTR_OI', 'CFTC/021397_F_ALL_OI', 'CFTC/021397_F_OLD_CR', 'CFTC/021397_F_OTR_NT', 'CFTC/021397_F_ALL', 'CFTC/021397_F_OLD_OI', 'CFTC/021397_F_ALL_NT', 'CFTC/021397_F_OLD', 'CFTC/021397_F_OTR', 'CFTC/0063DB_F_OTR_NT', 'CFTC/0063DB_F_OTR', 'CFTC/0063DB_F_OTR_CR', 'CFTC/0063DB_F_ALL_NT', 'CFTC/0063DB_F_OLD_OI', 'CFTC/0063DB_F_ALL_CR', 'CFTC/0063DB_F_ALL', 'CFTC/0063DB_F_OLD_CR', 'CFTC/0063DB_F_OTR_OI', 'CFTC/0063DB_F_ALL_OI', 'CFTC/0063DB_F_OLD_NT', 'CFTC/0063DB_F_OLD', 'CFTC/0233DW_FO_L_CHG', 'CFTC/0233DW_FO_CHG', 'CFTC/0233DW_F_L_CHG', 'CFTC/0233DW_F_CHG', 'CFTC/239744_FO_CHG', 'CFTC/239744_F_CHG', 'CFTC/239744_FO_L_CHG', 'CFTC/191694_FO_L_CHG', 'CFTC/191694_FO_CHG', 'CFTC/239744_F_L_CHG', 'CFTC/191694_F_L_CHG', 'CFTC/191694_F_CHG', 'CFTC/191694_FO_L_ALL_CR', 'CFTC/191694_FO_L_OLD_CR', 'CFTC/191694_FO_L_OTR_CR', 'CFTC/191694_FO_L_OTR_NT', 'CFTC/191694_FO_L_ALL_NT', 'CFTC/191694_FO_L_OTR_OI', 'CFTC/191694_FO_L_OLD_OI', 'CFTC/191694_FO_L_OLD_NT', 'CFTC/191694_FO_L_OLD', 'CFTC/191694_FO_L_ALL_OI', 'CFTC/191694_FO_L_OTR', 'CFTC/191694_FO_L_ALL', 'CFTC/191694_FO_OLD_OI', 'CFTC/191694_FO_OTR_CR', 'CFTC/191694_FO_ALL_CR', 'CFTC/191694_FO_OLD_CR', 'CFTC/191694_FO_OLD_NT', 'CFTC/191694_FO_OTR_NT', 'CFTC/191694_FO_ALL_NT', 'CFTC/191694_FO_OTR_OI', 'CFTC/191694_FO_ALL', 'CFTC/191694_FO_ALL_OI', 'CFTC/191694_FO_OLD', 'CFTC/191694_FO_OTR', 'CFTC/191694_F_L_OLD_CR', 'CFTC/191694_F_L_ALL_CR', 'CFTC/191694_F_L_OTR_CR', 'CFTC/191694_F_L_OTR_OI', 'CFTC/191694_F_L_OLD_OI', 'CFTC/191694_F_L_ALL_NT', 'CFTC/191694_F_L_OLD_NT', 'CFTC/191694_F_L_OTR_NT', 'CFTC/191694_F_L_ALL', 'CFTC/191694_F_L_OTR', 'CFTC/191694_F_L_ALL_OI', 'CFTC/191694_F_L_OLD', 'CFTC/191694_F_ALL_CR', 'CFTC/191694_F_OTR_CR', 'CFTC/191694_F_OLD_CR', 'CFTC/191694_F_OLD_NT', 'CFTC/191694_F_OLD_OI', 'CFTC/191694_F_OTR_OI', 'CFTC/191694_F_OTR_NT', 'CFTC/191694_F_ALL_NT', 'CFTC/191694_F_OLD', 'CFTC/191694_F_ALL_OI', 'CFTC/191694_F_ALL', 'CFTC/191694_F_OTR', 'CFTC/06665S_FO_L_OTR_CR', 'CFTC/06665S_FO_L_OTR_NT', 'CFTC/06665S_FO_L_OLD_NT', 'CFTC/06665S_FO_L_ALL_NT', 'CFTC/06665S_FO_L_OLD_CR', 'CFTC/06665S_FO_L_ALL_CR', 'CFTC/06665S_FO_L_OTR', 'CFTC/06665S_FO_L_ALL_OI', 'CFTC/06665S_FO_L_OTR_OI', 'CFTC/06665S_FO_L_OLD', 'CFTC/06665S_FO_L_OLD_OI', 'CFTC/06665S_FO_L_ALL', 'CFTC/06665S_FO_OTR_CR', 'CFTC/06665S_FO_OTR_NT', 'CFTC/06665S_FO_ALL_CR', 'CFTC/06665S_FO_OLD_CR', 'CFTC/06665S_FO_OLD_NT', 'CFTC/06665S_FO_ALL_OI', 'CFTC/06665S_FO_ALL_NT', 'CFTC/06665S_FO_OTR_OI', 'CFTC/06665S_FO_OTR', 'CFTC/06665S_FO_OLD_OI', 'CFTC/06665S_FO_ALL', 'CFTC/06665S_FO_OLD', 'CFTC/06665S_F_L_OTR_CR', 'CFTC/06665S_F_L_ALL_CR', 'CFTC/06665S_F_L_OLD_NT', 'CFTC/06665S_F_L_OLD_CR', 'CFTC/06665S_F_L_OTR_NT', 'CFTC/06665S_F_L_ALL', 'CFTC/06665S_F_L_OTR_OI', 'CFTC/06665S_F_L_ALL_OI', 'CFTC/06665S_F_L_ALL_NT', 'CFTC/06665S_F_L_OLD', 'CFTC/06665S_F_L_OLD_OI', 'CFTC/06665S_F_L_OTR', 'CFTC/06665S_F_OTR_CR', 'CFTC/06665S_F_OLD_CR', 'CFTC/06665S_F_OLD_NT', 'CFTC/06665S_F_OTR_NT', 'CFTC/06665S_F_ALL_OI', 'CFTC/06665S_F_ALL_CR', 'CFTC/06665S_F_ALL_NT', 'CFTC/06665S_F_OTR_OI', 'CFTC/06665S_F_OLD_OI', 'CFTC/06665S_F_OLD', 'CFTC/06665S_F_ALL', 'CFTC/06665S_F_OTR', 'CFTC/0643ID_FO_L_CHG', 'CFTC/0643ID_FO_CHG', 'CFTC/0643ID_F_L_CHG', 'CFTC/0063DK_F_L_CHG', 'CFTC/0643ID_F_CHG', 'CFTC/0063DK_FO_L_CHG', 'CFTC/0063DK_FO_CHG', 'CFTC/0063DK_F_CHG', 'CFTC/0063DK_FO_L_ALL_CR', 'CFTC/0063DK_FO_L_OLD_CR', 'CFTC/0063DK_FO_L_ALL_NT', 'CFTC/0063DK_FO_L_OTR_CR', 'CFTC/0063DK_FO_L_OTR_NT', 'CFTC/0063DK_FO_L_OLD_NT', 'CFTC/0063DK_FO_L_OTR_OI', 'CFTC/0063DK_FO_L_OLD', 'CFTC/0063DK_FO_L_OLD_OI', 'CFTC/0063DK_FO_L_OTR', 'CFTC/0063DK_FO_L_ALL', 'CFTC/0063DK_FO_L_ALL_OI', 'CFTC/0063DK_FO_OLD_CR', 'CFTC/0063DK_FO_OLD_NT', 'CFTC/0063DK_FO_OLD_OI', 'CFTC/0063DK_FO_OTR_OI', 'CFTC/0063DK_FO_OTR_CR', 'CFTC/0063DK_FO_OTR_NT', 'CFTC/0063DK_FO_ALL_CR', 'CFTC/0063DK_FO_OTR', 'CFTC/0063DK_FO_ALL_NT', 'CFTC/0063DK_FO_ALL', 'CFTC/0063DK_FO_OLD', 'CFTC/0063DK_FO_ALL_OI', 'CFTC/0063DK_F_L_OTR_CR', 'CFTC/0063DK_F_L_OLD_CR', 'CFTC/0063DK_F_L_ALL_CR', 'CFTC/0063DK_F_L_ALL_NT', 'CFTC/0063DK_F_L_OTR_OI', 'CFTC/0063DK_F_L_OLD_NT', 'CFTC/0063DK_F_L_OTR_NT', 'CFTC/0063DK_F_L_OLD_OI', 'CFTC/0063DK_F_L_ALL', 'CFTC/0063DK_F_L_OTR', 'CFTC/0063DK_F_L_OLD', 'CFTC/0063DK_F_L_ALL_OI', 'CFTC/0063DK_F_OTR_CR', 'CFTC/0063DK_F_ALL_NT', 'CFTC/0063DK_F_ALL_CR', 'CFTC/0063DK_F_OLD_NT', 'CFTC/0063DK_F_ALL_OI', 'CFTC/0063DK_F_OLD_CR', 'CFTC/0063DK_F_OTR_OI', 'CFTC/0063DK_F_OTR_NT', 'CFTC/0063DK_F_OLD', 'CFTC/0063DK_F_OTR', 'CFTC/0063DK_F_OLD_OI', 'CFTC/0063DK_F_ALL', 'CFTC/064DEU_FO_L_CHG', 'CFTC/064DEU_FO_CHG', 'CFTC/064DEU_F_L_CHG', 'CFTC/064DEU_F_CHG', 'CFTC/064DEU_FO_L_OTR_CR', 'CFTC/064DEU_FO_L_ALL_CR', 'CFTC/064DEU_FO_L_OLD_CR', 'CFTC/064DEU_FO_L_ALL_NT', 'CFTC/064DEU_FO_L_ALL_OI', 'CFTC/064DEU_FO_L_OTR_NT', 'CFTC/064DEU_FO_L_OLD_NT', 'CFTC/064DEU_FO_L_OTR', 'CFTC/064DEU_FO_L_OLD_OI', 'CFTC/064DEU_FO_L_OTR_OI', 'CFTC/064DEU_FO_L_OLD', 'CFTC/064DEU_FO_L_ALL', 'CFTC/0063D9_FO_L_CHG', 'CFTC/064DEU_FO_OTR_NT', 'CFTC/064DEU_FO_ALL_CR', 'CFTC/064DEU_FO_OLD_NT', 'CFTC/064DEU_FO_OLD_CR', 'CFTC/064DEU_FO_OLD_OI', 'CFTC/064DEU_FO_OTR_CR', 'CFTC/064DEU_FO_OTR_OI', 'CFTC/064DEU_FO_ALL_NT', 'CFTC/064DEU_FO_OLD', 'CFTC/064DEU_FO_ALL_OI', 'CFTC/064DEU_FO_OTR', 'CFTC/064DEU_FO_ALL', 'CFTC/0063D9_FO_CHG', 'CFTC/064DEU_F_L_OTR_OI', 'CFTC/064DEU_F_L_ALL_CR', 'CFTC/064DEU_F_L_ALL_OI', 'CFTC/064DEU_F_L_OTR_CR', 'CFTC/064DEU_F_L_ALL_NT', 'CFTC/064DEU_F_L_OTR_NT', 'CFTC/064DEU_F_L_OLD_OI', 'CFTC/064DEU_F_L_OLD_CR', 'CFTC/064DEU_F_L_OTR', 'CFTC/064DEU_F_L_OLD_NT', 'CFTC/064DEU_F_L_ALL', 'CFTC/064DEU_F_L_OLD', 'CFTC/0063D9_F_L_CHG', 'CFTC/064DEU_F_OLD_CR', 'CFTC/064DEU_F_OTR_CR', 'CFTC/064DEU_F_OLD_NT', 'CFTC/064DEU_F_OLD', 'CFTC/064DEU_F_ALL_CR', 'CFTC/064DEU_F_OTR_OI', 'CFTC/064DEU_F_OTR', 'CFTC/064DEU_F_ALL_NT', 'CFTC/064DEU_F_OTR_NT', 'CFTC/064DEU_F_OLD_OI', 'CFTC/064DEU_F_ALL_OI', 'CFTC/064DEU_F_ALL', 'CFTC/0063D9_F_CHG', 'CFTC/0643ID_FO_L_OLD_CR', 'CFTC/0643ID_FO_L_ALL_CR', 'CFTC/0643ID_FO_L_OTR_CR', 'CFTC/0643ID_FO_L_OTR_NT', 'CFTC/0643ID_FO_L_OLD_OI', 'CFTC/0643ID_FO_L_OLD_NT', 'CFTC/0643ID_FO_L_ALL_NT', 'CFTC/0643ID_FO_L_OTR_OI', 'CFTC/0643ID_FO_L_OTR', 'CFTC/0643ID_FO_L_ALL_OI', 'CFTC/0643ID_FO_L_OLD', 'CFTC/0643ID_FO_L_ALL', 'CFTC/0643ID_FO_OTR_NT', 'CFTC/0643ID_FO_OTR_CR', 'CFTC/0643ID_FO_OLD_NT', 'CFTC/0643ID_FO_OTR', 'CFTC/0643ID_FO_ALL_NT', 'CFTC/0643ID_FO_OLD_CR', 'CFTC/0643ID_FO_OTR_OI', 'CFTC/0643ID_FO_OLD_OI', 'CFTC/0643ID_FO_ALL_CR', 'CFTC/0643ID_FO_ALL', 'CFTC/0643ID_FO_ALL_OI', 'CFTC/0643ID_FO_OLD', 'CFTC/0643ID_F_L_OTR_CR', 'CFTC/0643ID_F_L_ALL_CR', 'CFTC/0643ID_F_L_ALL_NT', 'CFTC/0643ID_F_L_OLD_NT', 'CFTC/0643ID_F_L_OLD_CR', 'CFTC/0643ID_F_L_OLD', 'CFTC/0643ID_F_L_OTR_NT', 'CFTC/0643ID_F_L_OLD_OI', 'CFTC/0643ID_F_L_ALL_OI', 'CFTC/0643ID_F_L_OTR_OI', 'CFTC/0643ID_F_L_ALL', 'CFTC/0643ID_F_L_OTR', 'CFTC/0643ID_F_OTR_CR', 'CFTC/0643ID_F_OLD_NT', 'CFTC/0643ID_F_ALL_CR', 'CFTC/0643ID_F_OLD_CR', 'CFTC/0643ID_F_ALL_NT', 'CFTC/0643ID_F_OTR_NT', 'CFTC/0643ID_F_ALL_OI', 'CFTC/0643ID_F_OLD_OI', 'CFTC/0643ID_F_OTR_OI', 'CFTC/0643ID_F_OTR', 'CFTC/0643ID_F_OLD', 'CFTC/0643ID_F_ALL', 'CFTC/0643IB_FO_L_CHG', 'CFTC/0643IB_FO_CHG', 'CFTC/0643IB_F_L_CHG', 'CFTC/0643IB_F_CHG', 'CFTC/0643IB_FO_L_OTR_NT', 'CFTC/0643IB_FO_L_OLD_CR', 'CFTC/0643IB_FO_L_OTR_CR', 'CFTC/0643IB_FO_L_ALL_CR', 'CFTC/0643IB_FO_L_OLD_NT', 'CFTC/0643IB_FO_L_OTR_OI', 'CFTC/0643IB_FO_L_ALL', 'CFTC/0643IB_FO_L_ALL_NT', 'CFTC/0643IB_FO_L_OLD_OI', 'CFTC/0643IB_FO_L_ALL_OI', 'CFTC/0643IB_FO_L_OLD', 'CFTC/0643IB_FO_L_OTR', 'CFTC/0643IB_FO_OTR_NT', 'CFTC/0643IB_FO_ALL_CR', 'CFTC/0643IB_FO_OLD_NT', 'CFTC/0643IB_FO_OTR_OI', 'CFTC/0643IB_FO_OTR_CR', 'CFTC/0643IB_FO_ALL_NT', 'CFTC/0643IB_FO_OLD_CR', 'CFTC/0643IB_FO_OTR', 'CFTC/0643IB_FO_ALL_OI', 'CFTC/0643IB_FO_OLD_OI', 'CFTC/0643IB_FO_ALL', 'CFTC/0643IB_FO_OLD', 'CFTC/0643IB_F_L_ALL_CR', 'CFTC/0643IB_F_L_OTR_CR', 'CFTC/0643IB_F_L_ALL_NT', 'CFTC/0643IB_F_L_OLD_CR', 'CFTC/0643IB_F_L_OTR_OI', 'CFTC/0643IB_F_L_OTR_NT', 'CFTC/0643IB_F_L_OLD_NT', 'CFTC/0643IB_F_L_OLD', 'CFTC/0643IB_F_L_ALL_OI', 'CFTC/0643IB_F_L_OTR', 'CFTC/0643IB_F_L_OLD_OI', 'CFTC/0643IB_F_L_ALL', 'CFTC/0643IB_F_OTR_CR', 'CFTC/0643IB_F_OLD_CR', 'CFTC/0643IB_F_OTR_NT', 'CFTC/0643IB_F_ALL_CR', 'CFTC/0643IB_F_OLD_NT', 'CFTC/0643IB_F_OTR_OI', 'CFTC/0643IB_F_ALL_NT', 'CFTC/0643IB_F_OLD_OI', 'CFTC/0643IB_F_ALL', 'CFTC/0643IB_F_OTR', 'CFTC/0643IB_F_ALL_OI', 'CFTC/0643IB_F_OLD', 'CFTC/0063D9_FO_L_OTR_NT', 'CFTC/0063D9_FO_L_OLD_CR', 'CFTC/0063D9_FO_L_OTR_CR', 'CFTC/0063D9_FO_L_ALL_CR', 'CFTC/0063D9_FO_L_OLD_NT', 'CFTC/0063D9_FO_L_ALL_NT', 'CFTC/0063D9_FO_L_OTR', 'CFTC/0063D9_FO_L_ALL_OI', 'CFTC/0063D9_FO_L_OLD_OI', 'CFTC/0063D9_FO_L_OTR_OI', 'CFTC/0063D9_FO_L_ALL', 'CFTC/0063D9_FO_L_OLD', 'CFTC/0063D9_FO_OLD_CR', 'CFTC/0063D9_FO_ALL_CR', 'CFTC/0063D9_FO_OTR_NT', 'CFTC/0063D9_FO_OTR_CR', 'CFTC/0063D9_FO_OLD_NT', 'CFTC/0063D9_FO_ALL_NT', 'CFTC/0063D9_FO_OTR_OI', 'CFTC/0063D9_FO_OTR', 'CFTC/0063D9_FO_OLD_OI', 'CFTC/0063D9_FO_ALL_OI', 'CFTC/0063D9_FO_ALL', 'CFTC/0063D9_FO_OLD', 'CFTC/0063D9_F_L_OLD_CR', 'CFTC/0063D9_F_L_OTR_CR', 'CFTC/0063D9_F_L_ALL_CR', 'CFTC/0063D9_F_L_OTR_NT', 'CFTC/0063D9_F_L_OLD_NT', 'CFTC/0063D9_F_L_ALL_NT', 'CFTC/0063D9_F_L_OTR_OI', 'CFTC/0063D9_F_L_OTR', 'CFTC/0063D9_F_L_ALL', 'CFTC/0063D9_F_L_ALL_OI', 'CFTC/0063D9_F_L_OLD', 'CFTC/0063D9_F_L_OLD_OI', 'CFTC/0063D9_F_OTR_NT', 'CFTC/0063D9_F_OTR_CR', 'CFTC/0063D9_F_ALL_CR', 'CFTC/0063D9_F_ALL_NT', 'CFTC/0063D9_F_OLD_NT', 'CFTC/0063D9_F_OLD_CR', 'CFTC/0063D9_F_OTR_OI', 'CFTC/0063D9_F_OLD', 'CFTC/0063D9_F_OLD_OI', 'CFTC/0063D9_F_ALL_OI', 'CFTC/0063D9_F_OTR', 'CFTC/0063D9_F_ALL', 'CFTC/0063DN_FO_L_CHG', 'CFTC/0063DL_FO_L_CHG', 'CFTC/0063CH_FO_L_CHG', 'CFTC/0063CC_FO_L_CHG', 'CFTC/0063DN_FO_CHG', 'CFTC/0063DL_FO_CHG', 'CFTC/0063CH_FO_CHG', 'CFTC/0063CC_FO_CHG', 'CFTC/0063DN_F_L_CHG', 'CFTC/0063DL_F_L_CHG', 'CFTC/0063CH_F_L_CHG', 'CFTC/0063CC_F_L_CHG', 'CFTC/0063DN_F_CHG', 'CFTC/0063DL_F_CHG', 'CFTC/0063CH_F_CHG', 'CFTC/0063CC_F_CHG', 'CFTC/0063DN_FO_L_OLD_CR', 'CFTC/0063DN_FO_L_OTR_CR', 'CFTC/0063DN_FO_L_OLD_NT', 'CFTC/0063DN_FO_L_ALL_CR', 'CFTC/0063DN_FO_L_ALL_NT', 'CFTC/0063DN_FO_L_OLD_OI', 'CFTC/0063DN_FO_L_ALL_OI', 'CFTC/0063DN_FO_L_OTR_OI', 'CFTC/0063DN_FO_L_OTR_NT', 'CFTC/0063DL_FO_L_OLD_CR', 'CFTC/0063DN_FO_L_OTR', 'CFTC/0063DL_FO_L_ALL_CR', 'CFTC/0063DN_FO_L_OLD', 'CFTC/0063DL_FO_L_OTR_CR', 'CFTC/0063DN_FO_L_ALL', 'CFTC/0063DL_FO_L_OTR_NT', 'CFTC/0063DL_FO_L_ALL_NT', 'CFTC/0063DL_FO_L_OLD_NT', 'CFTC/0063DL_FO_L_OTR_OI', 'CFTC/0063DL_FO_L_ALL_OI', 'CFTC/0063DL_FO_L_OLD', 'CFTC/0063DL_FO_L_OLD_OI', 'CFTC/0063DL_FO_L_OTR', 'CFTC/0063DL_FO_L_ALL', 'CFTC/0063CH_FO_L_OLD_CR', 'CFTC/0063CH_FO_L_OTR_NT', 'CFTC/0063CH_FO_L_ALL_CR', 'CFTC/0063CH_FO_L_OTR_OI', 'CFTC/0063CH_FO_L_OLD_NT', 'CFTC/0063CH_FO_L_ALL_NT', 'CFTC/0063CH_FO_L_OTR_CR', 'CFTC/0063CH_FO_L_ALL', 'CFTC/0063CH_FO_L_OLD_OI', 'CFTC/0063CH_FO_L_OTR', 'CFTC/0063CH_FO_L_ALL_OI', 'CFTC/0063CH_FO_L_OLD', 'CFTC/0063CC_FO_L_OLD_CR', 'CFTC/0063CC_FO_L_OTR_CR', 'CFTC/0063CC_FO_L_ALL_CR', 'CFTC/0063CC_FO_L_OTR_OI', 'CFTC/0063CC_FO_L_ALL_NT', 'CFTC/0063CC_FO_L_OLD_OI', 'CFTC/0063CC_FO_L_OLD_NT', 'CFTC/0063CC_FO_L_OTR_NT', 'CFTC/0063CC_FO_L_ALL_OI', 'CFTC/0063CC_FO_L_OTR', 'CFTC/0063CC_FO_L_ALL', 'CFTC/0063CC_FO_L_OLD', 'CFTC/0063DN_FO_OTR_CR', 'CFTC/0063DN_FO_ALL_CR', 'CFTC/0063DN_FO_OLD_NT', 'CFTC/0063DN_FO_OLD_CR', 'CFTC/0063DN_FO_ALL_OI', 'CFTC/0063DN_FO_OLD_OI', 'CFTC/0063DN_FO_OTR_NT', 'CFTC/0063DN_FO_OTR_OI', 'CFTC/0063DN_FO_ALL_NT', 'CFTC/0063DL_FO_OTR_CR', 'CFTC/0063DN_FO_OTR', 'CFTC/0063DN_FO_ALL', 'CFTC/0063DN_FO_OLD', 'CFTC/0063DL_FO_ALL_CR', 'CFTC/0063DL_FO_OLD_NT', 'CFTC/0063DL_FO_OTR_NT', 'CFTC/0063DL_FO_OLD_CR', 'CFTC/0063DL_FO_ALL_OI', 'CFTC/0063DL_FO_ALL_NT', 'CFTC/0063DL_FO_OTR_OI', 'CFTC/0063DL_FO_OLD_OI', 'CFTC/0063DL_FO_ALL', 'CFTC/0063DL_FO_OTR', 'CFTC/0063DL_FO_OLD', 'CFTC/0063CH_FO_OTR_CR', 'CFTC/0063CH_FO_OLD_CR', 'CFTC/0063CH_FO_ALL_NT', 'CFTC/0063CH_FO_ALL_CR', 'CFTC/0063CH_FO_OLD_OI', 'CFTC/0063CH_FO_OLD_NT', 'CFTC/0063CH_FO_OTR_OI', 'CFTC/0063CH_FO_OTR_NT', 'CFTC/0063CH_FO_ALL_OI', 'CFTC/0063CH_FO_OLD', 'CFTC/0063CH_FO_OTR', 'CFTC/0063CH_FO_ALL', 'CFTC/0063CC_FO_OLD_NT', 'CFTC/0063CC_FO_OTR_CR', 'CFTC/0063CC_FO_OTR_NT', 'CFTC/0063CC_FO_OLD_CR', 'CFTC/0063CC_FO_ALL_CR', 'CFTC/0063CC_FO_ALL_OI', 'CFTC/0063CC_FO_OLD_OI', 'CFTC/0063CC_FO_OTR_OI', 'CFTC/0063CC_FO_ALL_NT', 'CFTC/0063CC_FO_OLD', 'CFTC/0063CC_FO_OTR', 'CFTC/0063CC_FO_ALL', 'CFTC/0063DN_F_L_OLD_CR', 'CFTC/0063DN_F_L_OTR_CR', 'CFTC/0063DN_F_L_OTR', 'CFTC/0063DN_F_L_ALL_NT', 'CFTC/0063DN_F_L_ALL_CR', 'CFTC/0063DN_F_L_OLD_NT', 'CFTC/0063DN_F_L_OTR_NT', 'CFTC/0063DN_F_L_OLD_OI', 'CFTC/0063DN_F_L_OTR_OI', 'CFTC/0063DL_F_L_OLD_CR', 'CFTC/0063DL_F_L_ALL_CR', 'CFTC/0063DN_F_L_OLD', 'CFTC/0063DN_F_L_ALL_OI', 'CFTC/0063DL_F_L_OTR_NT', 'CFTC/0063DL_F_L_OTR_CR', 'CFTC/0063DL_F_L_ALL_OI', 'CFTC/0063DN_F_L_ALL', 'CFTC/0063DL_F_L_OLD_OI', 'CFTC/0063DL_F_L_OTR_OI', 'CFTC/0063DL_F_L_OLD_NT', 'CFTC/0063DL_F_L_ALL_NT', 'CFTC/0063DL_F_L_ALL', 'CFTC/0063DL_F_L_OTR', 'CFTC/0063DL_F_L_OLD', 'CFTC/0063CH_F_L_OTR_CR', 'CFTC/0063CH_F_L_ALL_CR', 'CFTC/0063CH_F_L_ALL_NT', 'CFTC/0063CH_F_L_OTR_OI', 'CFTC/0063CH_F_L_OLD_NT', 'CFTC/0063CH_F_L_OLD_CR', 'CFTC/0063CH_F_L_ALL_OI', 'CFTC/0063CH_F_L_OTR_NT', 'CFTC/0063CH_F_L_OLD', 'CFTC/0063CH_F_L_OLD_OI', 'CFTC/0063CH_F_L_ALL', 'CFTC/0063CH_F_L_OTR', 'CFTC/0063CC_F_L_ALL_CR', 'CFTC/0063CC_F_L_OTR_CR', 'CFTC/0063CC_F_L_OTR_NT', 'CFTC/0063CC_F_L_OLD_NT', 'CFTC/0063CC_F_L_ALL_NT', 'CFTC/0063CC_F_L_OLD_CR', 'CFTC/0063CC_F_L_OLD_OI', 'CFTC/0063CC_F_L_OTR_OI', 'CFTC/0063CC_F_L_OTR', 'CFTC/0063CC_F_L_ALL_OI', 'CFTC/0063CC_F_L_OLD', 'CFTC/0063CC_F_L_ALL', 'CFTC/0063DN_F_OTR_CR', 'CFTC/0063DN_F_OLD_NT', 'CFTC/0063DN_F_OTR_OI', 'CFTC/0063DN_F_OTR_NT', 'CFTC/0063DN_F_ALL_NT', 'CFTC/0063DN_F_OLD_CR', 'CFTC/0063DN_F_ALL_CR', 'CFTC/0063DN_F_OLD_OI', 'CFTC/0063DN_F_OTR', 'CFTC/0063DN_F_OLD', 'CFTC/0063DN_F_ALL_OI', 'CFTC/0063DN_F_ALL', 'CFTC/0063DL_F_OTR_CR', 'CFTC/0063DL_F_OLD_CR', 'CFTC/0063DL_F_OTR_OI', 'CFTC/0063DL_F_OLD_NT', 'CFTC/0063DL_F_OTR_NT', 'CFTC/0063DL_F_ALL_CR', 'CFTC/0063DL_F_ALL_OI', 'CFTC/0063DL_F_OTR', 'CFTC/0063DL_F_ALL_NT', 'CFTC/0063DL_F_OLD_OI', 'CFTC/0063DL_F_OLD', 'CFTC/0063DL_F_ALL', 'CFTC/0063CH_F_OTR_NT', 'CFTC/0063CH_F_OTR_CR', 'CFTC/0063CH_F_OLD_CR', 'CFTC/0063CH_F_ALL_CR', 'CFTC/0063CH_F_OLD_NT', 'CFTC/0063CH_F_ALL_OI', 'CFTC/0063CH_F_OLD_OI', 'CFTC/0063CH_F_OTR_OI', 'CFTC/0063CH_F_OLD', 'CFTC/0063CH_F_ALL', 'CFTC/0063CH_F_OTR', 'CFTC/0063CH_F_ALL_NT', 'CFTC/0063CC_F_OTR_CR', 'CFTC/0063CC_F_ALL_CR', 'CFTC/0063CC_F_OLD_OI', 'CFTC/0063CC_F_OLD_NT', 'CFTC/0063CC_F_ALL_NT', 'CFTC/0063CC_F_OLD_CR', 'CFTC/0063CC_F_OTR_NT', 'CFTC/0063CC_F_OTR_OI', 'CFTC/0063CC_F_OTR', 'CFTC/0063CC_F_ALL_OI', 'CFTC/0063CC_F_ALL', 'CFTC/0063CC_F_OLD', 'CFTC/111A34_FO_L_OTR_CR', 'CFTC/111A34_FO_L_OLD_NT', 'CFTC/111A34_FO_L_OTR_NT', 'CFTC/111A34_FO_L_ALL_CR', 'CFTC/111A34_FO_L_OLD_CR', 'CFTC/111A34_FO_L_OLD_OI', 'CFTC/111A34_FO_L_ALL_NT', 'CFTC/111A34_FO_L_OTR_OI', 'CFTC/111A34_FO_L_OLD', 'CFTC/111A34_FO_L_OTR', 'CFTC/111A34_FO_L_ALL', 'CFTC/111A34_FO_L_ALL_OI', 'CFTC/111A34_FO_OTR_CR', 'CFTC/111A34_FO_OLD_CR', 'CFTC/111A34_FO_ALL_CR', 'CFTC/111A34_FO_OLD_NT', 'CFTC/111A34_FO_OTR_NT', 'CFTC/111A34_FO_ALL_OI', 'CFTC/111A34_FO_OTR_OI', 'CFTC/111A34_FO_OTR', 'CFTC/111A34_FO_OLD_OI', 'CFTC/111A34_FO_ALL_NT', 'CFTC/111A34_FO_ALL', 'CFTC/111A34_FO_OLD', 'CFTC/111A34_F_L_OTR_CR', 'CFTC/111A34_F_L_OLD_NT', 'CFTC/111A34_F_L_OLD_CR', 'CFTC/111A34_F_L_ALL_NT', 'CFTC/111A34_F_L_OTR_NT', 'CFTC/111A34_F_L_OTR_OI', 'CFTC/111A34_F_L_ALL_OI', 'CFTC/111A34_F_L_ALL_CR', 'CFTC/111A34_F_L_OLD_OI', 'CFTC/111A34_F_L_OTR', 'CFTC/111A34_F_L_OLD', 'CFTC/111A34_F_L_ALL', 'CFTC/111A34_F_ALL_CR', 'CFTC/111A34_F_OTR_CR', 'CFTC/111A34_F_OLD_CR', 'CFTC/111A34_F_OTR_NT', 'CFTC/111A34_F_OTR_OI', 'CFTC/111A34_F_OLD_NT', 'CFTC/111A34_F_OLD_OI', 'CFTC/111A34_F_ALL_NT', 'CFTC/111A34_F_OTR', 'CFTC/111A34_F_ALL', 'CFTC/111A34_F_ALL_OI', 'CFTC/111A34_F_OLD', 'CFTC/06742T_FO_L_CHG', 'CFTC/06742T_FO_CHG', 'CFTC/06742T_F_L_CHG', 'CFTC/06742T_F_CHG', 'CFTC/06742T_FO_L_OTR_NT', 'CFTC/06742T_FO_L_OTR_CR', 'CFTC/06742T_FO_L_OLD_NT', 'CFTC/06742T_FO_L_OTR_OI', 'CFTC/06742T_FO_L_OLD_CR', 'CFTC/06742T_FO_L_ALL_CR', 'CFTC/06742T_FO_L_OLD_OI', 'CFTC/06742T_FO_L_ALL_NT', 'CFTC/06742T_FO_L_ALL_OI', 'CFTC/06742T_FO_L_ALL', 'CFTC/06742T_FO_L_OLD', 'CFTC/06742T_FO_L_OTR', 'CFTC/06742T_FO_OTR_CR', 'CFTC/06742T_FO_OLD_CR', 'CFTC/06742T_FO_ALL_CR', 'CFTC/06742T_FO_ALL_NT', 'CFTC/06742T_FO_ALL_OI', 'CFTC/06742T_FO_OLD_NT', 'CFTC/06742T_FO_OLD', 'CFTC/06742T_FO_OLD_OI', 'CFTC/06742T_FO_OTR_OI', 'CFTC/06742T_FO_OTR', 'CFTC/06742T_FO_OTR_NT', 'CFTC/06742T_FO_ALL', 'CFTC/06742T_F_L_ALL_CR', 'CFTC/06742T_F_L_OLD_CR', 'CFTC/06742T_F_L_ALL_NT', 'CFTC/06742T_F_L_OTR_CR', 'CFTC/06742T_F_L_OTR_NT', 'CFTC/06742T_F_L_OLD_OI', 'CFTC/06742T_F_L_ALL', 'CFTC/06742T_F_L_ALL_OI', 'CFTC/06742T_F_L_OLD_NT', 'CFTC/06742T_F_L_OLD', 'CFTC/06742T_F_L_OTR_OI', 'CFTC/06742T_F_L_OTR', 'CFTC/06742T_F_OLD_NT', 'CFTC/06742T_F_OTR_CR', 'CFTC/06742T_F_OTR_OI', 'CFTC/06742T_F_OTR_NT', 'CFTC/06742T_F_OLD_CR', 'CFTC/06742T_F_ALL_CR', 'CFTC/06742T_F_OLD_OI', 'CFTC/06742T_F_ALL_OI', 'CFTC/06742T_F_ALL_NT', 'CFTC/06742T_F_ALL', 'CFTC/06742T_F_OLD', 'CFTC/06742T_F_OTR', 'CFTC/0063CA_F_L_CHG', 'CFTC/0063CA_F_CHG', 'CFTC/0063CJ_FO_L_CHG', 'CFTC/0063CJ_FO_CHG', 'CFTC/0063CJ_F_L_CHG', 'CFTC/0063CA_F_L_OLD_CR', 'CFTC/0063CA_F_L_OTR_CR', 'CFTC/0063CA_F_L_OTR_NT', 'CFTC/0063CA_F_L_ALL_NT', 'CFTC/0063CA_F_L_ALL_CR', 'CFTC/0063CA_F_L_ALL_OI', 'CFTC/0063CA_F_L_OLD_OI', 'CFTC/0063CA_F_L_OLD_NT', 'CFTC/0063CA_F_L_OTR', 'CFTC/0063CA_F_L_OTR_OI', 'CFTC/0063CA_F_L_ALL', 'CFTC/0063CA_F_L_OLD', 'CFTC/0063CJ_F_CHG', 'CFTC/0063CA_F_OLD_CR', 'CFTC/0063CA_F_OTR_CR', 'CFTC/0063CA_F_ALL_CR', 'CFTC/0063CA_F_ALL_NT', 'CFTC/0063CA_F_OTR_NT', 'CFTC/0063CA_F_OTR', 'CFTC/0063CA_F_OLD_NT', 'CFTC/0063CA_F_OLD_OI', 'CFTC/0063CA_F_ALL', 'CFTC/0063CA_F_OLD', 'CFTC/0063CA_F_ALL_OI', 'CFTC/0063CA_F_OTR_OI', 'CFTC/02141R_FO_L_CHG', 'CFTC/0063CJ_FO_L_ALL_CR', 'CFTC/0063CJ_FO_L_OLD_CR', 'CFTC/0063CJ_FO_L_OTR_OI', 'CFTC/0063CJ_FO_L_OTR_CR', 'CFTC/0063CJ_FO_L_OLD_NT', 'CFTC/0063CJ_FO_L_OLD_OI', 'CFTC/0063CJ_FO_L_OTR_NT', 'CFTC/0063CJ_FO_L_ALL_NT', 'CFTC/0063CJ_FO_L_OTR', 'CFTC/0063CJ_FO_L_ALL_OI', 'CFTC/0063CJ_FO_L_OLD', 'CFTC/0063CJ_FO_L_ALL', 'CFTC/0063CA_FO_L_CHG', 'CFTC/02141R_FO_CHG', 'CFTC/0063CJ_FO_OTR_CR', 'CFTC/0063CJ_FO_OLD_NT', 'CFTC/0063CJ_FO_ALL_CR', 'CFTC/0063CJ_FO_OTR_OI', 'CFTC/0063CJ_FO_OLD_CR', 'CFTC/0063CJ_FO_OLD_OI', 'CFTC/0063CJ_FO_ALL_NT', 'CFTC/0063CJ_FO_OTR_NT', 'CFTC/0063CJ_FO_ALL_OI', 'CFTC/0063CJ_FO_OTR', 'CFTC/0063CJ_FO_ALL', 'CFTC/0063CJ_FO_OLD', 'CFTC/0063CA_FO_CHG', 'CFTC/02141R_F_L_CHG', 'CFTC/0063CJ_F_L_ALL_CR', 'CFTC/0063CJ_F_L_OTR_CR', 'CFTC/0063CJ_F_L_OTR_OI', 'CFTC/0063CJ_F_L_OTR_NT', 'CFTC/0063CJ_F_L_OLD_NT', 'CFTC/0063CJ_F_L_ALL_NT', 'CFTC/0063CJ_F_L_OLD_CR', 'CFTC/0063CJ_F_L_OLD_OI', 'CFTC/0063CJ_F_L_ALL_OI', 'CFTC/0063CJ_F_L_OTR', 'CFTC/0063CJ_F_L_OLD', 'CFTC/0063CJ_F_L_ALL', 'CFTC/02141R_F_CHG', 'CFTC/0063CJ_F_OTR_NT', 'CFTC/0063CJ_F_OTR_CR', 'CFTC/0063CJ_F_OLD_NT', 'CFTC/0063CJ_F_OLD_CR', 'CFTC/0063CJ_F_ALL_NT', 'CFTC/0063CJ_F_ALL_CR', 'CFTC/0063CJ_F_OTR_OI', 'CFTC/0063CJ_F_OLD_OI', 'CFTC/0063CJ_F_ALL_OI', 'CFTC/0063CJ_F_ALL', 'CFTC/0063CJ_F_OLD', 'CFTC/0063CJ_F_OTR', 'CFTC/02141R_FO_L_OTR_CR', 'CFTC/02141R_FO_L_ALL_CR', 'CFTC/02141R_FO_L_ALL_OI', 'CFTC/02141R_FO_L_ALL_NT', 'CFTC/02141R_FO_L_OLD_CR', 'CFTC/02141R_FO_L_OLD_OI', 'CFTC/02141R_FO_L_OLD_NT', 'CFTC/02141R_FO_L_OTR_NT', 'CFTC/02141R_FO_L_OTR_OI', 'CFTC/02141R_FO_L_OTR', 'CFTC/02141R_FO_L_ALL', 'CFTC/02141R_FO_L_OLD', 'CFTC/0063CA_FO_L_OTR_CR', 'CFTC/0063CA_FO_L_ALL_CR', 'CFTC/0063CA_FO_L_OLD_NT', 'CFTC/0063CA_FO_L_OLD_CR', 'CFTC/0063CA_FO_L_OTR_NT', 'CFTC/0063CA_FO_L_OTR_OI', 'CFTC/0063CA_FO_L_ALL_NT', 'CFTC/0063CA_FO_L_ALL_OI', 'CFTC/0063CA_FO_L_OLD_OI', 'CFTC/0063CA_FO_L_OTR', 'CFTC/0063CA_FO_L_OLD', 'CFTC/0063CA_FO_L_ALL', 'CFTC/02141R_FO_OTR_CR', 'CFTC/02141R_FO_OTR_OI', 'CFTC/02141R_FO_OLD_CR', 'CFTC/02141R_FO_OLD_NT', 'CFTC/02141R_FO_ALL_CR', 'CFTC/02141R_FO_ALL_NT', 'CFTC/02141R_FO_ALL_OI', 'CFTC/02141R_FO_OTR_NT', 'CFTC/02141R_FO_OLD_OI', 'CFTC/02141R_FO_OTR', 'CFTC/02141R_FO_OLD', 'CFTC/02141R_FO_ALL', 'CFTC/0063CA_FO_OTR_CR', 'CFTC/0063CA_FO_OTR_NT', 'CFTC/0063CA_FO_OLD_CR', 'CFTC/0063CA_FO_OLD_NT', 'CFTC/0063CA_FO_OTR_OI', 'CFTC/0063CA_FO_ALL_NT', 'CFTC/0063CA_FO_ALL_CR', 'CFTC/0063CA_FO_OLD_OI', 'CFTC/0063CA_FO_ALL_OI', 'CFTC/0063CA_FO_OTR', 'CFTC/0063CA_FO_ALL', 'CFTC/0063CA_FO_OLD', 'CFTC/02141R_F_L_OLD_CR', 'CFTC/02141R_F_L_OTR_CR', 'CFTC/02141R_F_L_ALL_CR', 'CFTC/02141R_F_L_OTR_NT', 'CFTC/02141R_F_L_OLD_NT', 'CFTC/02141R_F_L_ALL_OI', 'CFTC/02141R_F_L_OTR', 'CFTC/02141R_F_L_OLD_OI', 'CFTC/02141R_F_L_ALL_NT', 'CFTC/02141R_F_L_OTR_OI', 'CFTC/02141R_F_L_ALL', 'CFTC/02141R_F_L_OLD', 'CFTC/02141R_F_OTR_CR', 'CFTC/02141R_F_OLD_NT', 'CFTC/02141R_F_ALL_CR', 'CFTC/02141R_F_OLD_CR', 'CFTC/02141R_F_ALL_NT', 'CFTC/02141R_F_OLD_OI', 'CFTC/02141R_F_OTR_NT', 'CFTC/02141R_F_ALL_OI', 'CFTC/02141R_F_OTR', 'CFTC/02141R_F_OTR_OI', 'CFTC/02141R_F_OLD', 'CFTC/02141R_F_ALL', 'CFTC/0233DW_FO_L_OTR_CR', 'CFTC/0233DW_FO_L_ALL_CR', 'CFTC/0233DW_FO_L_OLD_NT', 'CFTC/0233DW_FO_L_OTR_NT', 'CFTC/0233DW_FO_L_OLD_CR', 'CFTC/0233DW_FO_L_OLD_OI', 'CFTC/0233DW_FO_L_ALL_NT', 'CFTC/0233DW_FO_L_OTR_OI', 'CFTC/0233DW_FO_L_ALL_OI', 'CFTC/0233DW_FO_L_ALL', 'CFTC/0233DW_FO_L_OLD', 'CFTC/0233DW_FO_L_OTR', 'CFTC/0233DW_FO_OLD_CR', 'CFTC/0233DW_FO_OTR_CR', 'CFTC/0233DW_FO_ALL_CR', 'CFTC/0233DW_FO_ALL_NT', 'CFTC/0233DW_FO_OLD_NT', 'CFTC/0233DW_FO_OLD_OI', 'CFTC/0233DW_FO_OTR_NT', 'CFTC/0233DW_FO_OTR', 'CFTC/0233DW_FO_ALL_OI', 'CFTC/0233DW_FO_OTR_OI', 'CFTC/0233DW_FO_OLD', 'CFTC/0233DW_FO_ALL', 'CFTC/0233DW_F_L_OTR_CR', 'CFTC/0233DW_F_L_OLD_CR', 'CFTC/0233DW_F_L_OTR_NT', 'CFTC/0233DW_F_L_ALL_CR', 'CFTC/0233DW_F_L_OLD_NT', 'CFTC/0233DW_F_L_OLD_OI', 'CFTC/0233DW_F_L_ALL_NT', 'CFTC/0233DW_F_L_OTR_OI', 'CFTC/0233DW_F_L_OTR', 'CFTC/0233DW_F_L_ALL_OI', 'CFTC/0233DW_F_L_OLD', 'CFTC/0233DW_F_L_ALL']

    UMICH = ['UMICH/SOC35', 'UMICH/SOC22', 'UMICH/SOC16', 'UMICH/SOC1', 'UMICH/SOC47', 'UMICH/SOC46', 'UMICH/SOC45', 'UMICH/SOC44', 'UMICH/SOC43', 'UMICH/SOC42', 'UMICH/SOC41', 'UMICH/SOC40', 'UMICH/SOC39', 'UMICH/SOC38', 'UMICH/SOC37', 'UMICH/SOC36', 'UMICH/SOC34', 'UMICH/SOC33', 'UMICH/SOC32', 'UMICH/SOC31', 'UMICH/SOC30', 'UMICH/SOC29', 'UMICH/SOC28', 'UMICH/SOC27', 'UMICH/SOC26', 'UMICH/SOC25', 'UMICH/SOC24', 'UMICH/SOC23', 'UMICH/SOC21', 'UMICH/SOC20', 'UMICH/SOC19', 'UMICH/SOC18', 'UMICH/SOC17', 'UMICH/SOC15', 'UMICH/SOC14', 'UMICH/SOC13', 'UMICH/SOC12', 'UMICH/SOC11', 'UMICH/SOC10', 'UMICH/SOC9', 'UMICH/SOC8', 'UMICH/SOC7', 'UMICH/SOC6', 'UMICH/SOC5', 'UMICH/SOC4', 'UMICH/SOC3', 'UMICH/SOC2']

    MULTPL = ['MULTPL/SP500_DIV_YIELD_MONTH', 'MULTPL/SP500_PE_RATIO_MONTH', 'MULTPL/SHILLER_PE_RATIO_YEAR', 'MULTPL/SHILLER_PE_RATIO_MONTH', 'MULTPL/SP500_PE_RATIO_YEAR', 'MULTPL/SP500_PSR_QUARTER', 'MULTPL/SP500_DIV_YIELD_YEAR', 'MULTPL/SP500_PSR_YEAR', 'MULTPL/SP500_EARNINGS_YIELD_MONTH', 'MULTPL/SP500_PBV_RATIO_QUARTER', 'MULTPL/SP500_EARNINGS_YIELD_YEAR', 'MULTPL/SP500_PBV_RATIO_YEAR', 'MULTPL/SP500_REAL_PRICE_MONTH', 'MULTPL/SP500_REAL_PRICE_YEAR', 'MULTPL/SP500_INFLADJ_MONTH', 'MULTPL/SP500_INFLADJ_YEAR', 'MULTPL/SP500_DIV_MONTH', 'MULTPL/SP500_DIV_YEAR', 'MULTPL/SP500_DIV_GROWTH_YEAR', 'MULTPL/SP500_DIV_GROWTH_QUARTER', 'MULTPL/SP500_SALES_YEAR', 'MULTPL/SP500_SALES_GROWTH_YEAR', 'MULTPL/SP500_SALES_QUARTER', 'MULTPL/SP500_REAL_SALES_GROWTH_QUARTER', 'MULTPL/SP500_SALES_GROWTH_QUARTER', 'MULTPL/SP500_REAL_SALES_GROWTH_YEAR', 'MULTPL/SP500_REAL_EARNINGS_GROWTH_YEAR', 'MULTPL/SP500_REAL_SALES_YEAR', 'MULTPL/SP500_REAL_EARNINGS_GROWTH_QUARTER', 'MULTPL/SP500_EARNINGS_GROWTH_QUARTER', 'MULTPL/SP500_REAL_SALES_QUARTER', 'MULTPL/SP500_EARNINGS_MONTH', 'MULTPL/SP500_BVPS_YEAR', 'MULTPL/SP500_EARNINGS_YEAR', 'MULTPL/SP500_EARNINGS_GROWTH_YEAR', 'MULTPL/SP500_BVPS_QUARTER']

    RATEINF = ['RATEINF/CPI_USA', 'RATEINF/CPI_GBR', 'RATEINF/CPI_CHE', 'RATEINF/CPI_JPN', 'RATEINF/CPI_ITA', 'RATEINF/CPI_FRA', 'RATEINF/CPI_EUR', 'RATEINF/CPI_DEU', 'RATEINF/CPI_CAN', 'RATEINF/INFLATION_USA', 'RATEINF/INFLATION_GBR', 'RATEINF/INFLATION_CHE', 'RATEINF/INFLATION_JPN', 'RATEINF/INFLATION_ITA', 'RATEINF/INFLATION_FRA', 'RATEINF/INFLATION_EUR', 'RATEINF/INFLATION_DEU', 'RATEINF/INFLATION_CAN', 'RATEINF/CPI_NZL', 'RATEINF/CPI_AUS', 'RATEINF/INFLATION_NZL', 'RATEINF/INFLATION_AUS', 'RATEINF/INFLATION_RUS', 'RATEINF/CPI_RUS', 'RATEINF/CPI_ARG', 'RATEINF/INFLATION_ARG']

    USTREASURY = ['USTREASURY/REALLONGTERM', 'USTREASURY/REALYIELD', 'USTREASURY/BILLRATES', 'USTREASURY/YIELD', 'USTREASURY/LONGTERMRATES', 'USTREASURY/HQMYC', 'USTREASURY/MATDIS', 'USTREASURY/AVMAT', 'USTREASURY/TNMBOR', 'USTREASURY/TMBOR', 'USTREASURY/MKTDM', 'USTREASURY/BRDNM']

    ECONOMIST = ['ECONOMIST/BIGMAC_ROU', 'ECONOMIST/BIGMAC_QAT', 'ECONOMIST/BIGMAC_OMN', 'ECONOMIST/BIGMAC_NIC', 'ECONOMIST/BIGMAC_MDA', 'ECONOMIST/BIGMAC_LBN', 'ECONOMIST/BIGMAC_KWT', 'ECONOMIST/BIGMAC_JOR', 'ECONOMIST/BIGMAC_HRV', 'ECONOMIST/BIGMAC_HND', 'ECONOMIST/BIGMAC_GTM', 'ECONOMIST/BIGMAC_BHR', 'ECONOMIST/BIGMAC_AZE', 'ECONOMIST/BIGMAC_ARE', 'ECONOMIST/BIGMAC_VNM', 'ECONOMIST/BIGMAC_VEN', 'ECONOMIST/BIGMAC_URY', 'ECONOMIST/BIGMAC_USA', 'ECONOMIST/BIGMAC_UKR', 'ECONOMIST/BIGMAC_TUR', 'ECONOMIST/BIGMAC_THA', 'ECONOMIST/BIGMAC_ROC', 'ECONOMIST/BIGMAC_CHE', 'ECONOMIST/BIGMAC_SWE', 'ECONOMIST/BIGMAC_LKA', 'ECONOMIST/BIGMAC_KOR', 'ECONOMIST/BIGMAC_ZAF', 'ECONOMIST/BIGMAC_SIN', 'ECONOMIST/BIGMAC_SAU', 'ECONOMIST/BIGMAC_RUS', 'ECONOMIST/BIGMAC_POL', 'ECONOMIST/BIGMAC_PHL', 'ECONOMIST/BIGMAC_PER', 'ECONOMIST/BIGMAC_PAK', 'ECONOMIST/BIGMAC_NOR', 'ECONOMIST/BIGMAC_NZL', 'ECONOMIST/BIGMAC_MEX', 'ECONOMIST/BIGMAC_MYS', 'ECONOMIST/BIGMAC_JPN', 'ECONOMIST/BIGMAC_ISR', 'ECONOMIST/BIGMAC_IDN', 'ECONOMIST/BIGMAC_IND', 'ECONOMIST/BIGMAC_HUN', 'ECONOMIST/BIGMAC_HKG', 'ECONOMIST/BIGMAC_EUR', 'ECONOMIST/BIGMAC_EGY', 'ECONOMIST/BIGMAC_DNK', 'ECONOMIST/BIGMAC_CZE', 'ECONOMIST/BIGMAC_CRI', 'ECONOMIST/BIGMAC_COL', 'ECONOMIST/BIGMAC_CHN', 'ECONOMIST/BIGMAC_CHL', 'ECONOMIST/BIGMAC_CAN', 'ECONOMIST/BIGMAC_GBR', 'ECONOMIST/BIGMAC_BRA', 'ECONOMIST/BIGMAC_AUS', 'ECONOMIST/BIGMAC_ARG', 'ECONOMIST/BIGMAC_LVA', 'ECONOMIST/BIGMAC_ESP', 'ECONOMIST/BIGMAC_PRT', 'ECONOMIST/BIGMAC_NLD', 'ECONOMIST/BIGMAC_ITA', 'ECONOMIST/BIGMAC_IRL', 'ECONOMIST/BIGMAC_GRC', 'ECONOMIST/BIGMAC_DEU', 'ECONOMIST/BIGMAC_FRA', 'ECONOMIST/BIGMAC_FIN', 'ECONOMIST/BIGMAC_EST', 'ECONOMIST/BIGMAC_BEL', 'ECONOMIST/BIGMAC_AUT', 'ECONOMIST/BIGMAC_UAE', 'ECONOMIST/BIGMAC_LTU']
#region imports
from AlgorithmImports import *
#endregion
from sklearn.ensemble import ExtraTreesClassifier
from scipy.stats.mstats import gmean
import numpy as np
import pandas as pd
import math
from sklearn.metrics import auc,roc_curve,precision_recall_curve, roc_auc_score, accuracy_score
from model import ClassifierModel


class ModelOptimizer():

    def __init__(self, algo):
        self.algo = algo
        self.validation_score = 0
        self.test_score = 0
        self.test_dist = None
        self.threshold = None

    def BuildModels(self, X, y, returns):
        
        # Need to continue to play with min samples split and estimators and maybe class weights
        params = {'n_jobs':-1,'random_state':0,'n_estimators': self.algo.n_estimators, 'min_samples_split': self.algo.min_samples_split,
                  'class_weight' : {0:1,1:1},
                  'max_features': 'auto', 'max_depth': self.algo.max_depth, 'criterion': self.algo.criterion, 'bootstrap': True}


        # Train and validate using walk forward validation
        max_score = -1
        max_y = None
        max_probs = None
        num_iter = self.algo.num_iter
        num_test_records = self.algo.num_test_records
        num_records = len(X)
        num_train_records = num_records - num_test_records
        batch_size = 4
        models = []
        
        results = []
        
        # Iterate ove the dataset and create a number (num_iter) of models.

        # trendtrades = [True] * (num_test_records-1)

        for i in range(0, num_iter):
            
            probs = []
            y_test_all = []
            returns_test_all = []
            # closes_test_all = []
            end_idx = num_records  
            
            # This is important.  Copy params so each model keeps a distinct copy with it's own random seed
            model_params = params.copy()
            model_params['random_state']= i

            # Loop through and do walk forward validation
            j = num_train_records

            while j < end_idx:
                
                # Add the next segment of data
                idx = j + batch_size
                if idx >= end_idx:
                    idx = end_idx-1
                X_train, X_test = X[0:j], X[j:idx]
                y_train, y_test = y[0:j], y[j:idx]
                returns_train, returns_test = returns[0:j], returns[j:idx]
                j = j + batch_size
        
                # Set the class weight based positives vs negatives
                model_params['class_weight'] = self.get_class_weights(y_train)
        
                # Train the model
                clf = ExtraTreesClassifier(**model_params)
                try:
                    clf.fit(X_train, y_train)

                    # Predict using the model
                    if X_test.empty:
                        self.algo.Error(str(self.algo.Time)+" X_test EMPTY! ")
                    
                    p = pd.Series(clf.predict_proba(X_test)[:, 1])
                    
                    # Add the predicions
                    probs.extend(p)
                    y_test_all.extend(y_test)
                    returns_test_all.extend(returns_test)
                except Exception as e:
                    self.algo.Log('Unexpected error during Model fit:' + str(e))
                    # pass
                    raise
            
            # Build model on all the data
            model = ClassifierModel(self.algo)

            # X.columns = X.columns.astype(str) 
            model.Train(X, y, model_params)

            
            # Since each models predictive results tend to skew, we calculate a threshold for what is a positive result
            model.threshold = self.get_threshold(pd.Series(y), model.test_dist)
            
            # Give the model a score for use in weighting models
            y_pred = probs > model.threshold
            score = self.score_results(y_test_all, probs, model.threshold)
            model.test_score = score

            # add win/loss stats as properties tothe model, so they can be used in the Alpha Model for bet sizing
            model.test_y = y_test_all
            model.test_returns = returns_test_all
            model.pred_y = y_pred
            # model.kelly_size, model.avg_win, model.avg_loss  = self.kelly_size(y_test_all, y_pred, returns_test_all, trendtrades)
            if len(returns_test_all) == len(y_test_all):
                model.kelly_size, model.avg_win, model.avg_loss  = self.kelly_size(y_test_all, y_pred, returns_test_all)
            else:
                model.kelly_size = 0
                model.avg_win = 0
                model.avg_loss = 0


            models.append(model)

        return models
        
    # Calculate the model threshold for predicting positives
    def get_threshold(self, y_true, probs):
        
        # calculate percent positive
        pos = y_true.sum()/(len(y_true))
        
        # use that percent as threshold cutoff
        return sorted(probs, reverse=True)[int(round(len(probs)*pos))]
        
    def weighted_score(self, y_true, probs):
        # There are two ways we want to weight a prediction
        # 1. More recent predictions are weighted more heavily
        # 2. The larger the prediction value is weighted more heavily (positive or negative)
        
        y_test_all = np.asarray(y_true)
        probs_all = pd.Series(probs)
        splits = 6
        length = math.floor(len(probs_all)/splits)
        start = 0
        end = length-1
        scores = []
        for i in range(0,splits):
    
            y_test = y_test_all[start:end]
            if y_test.sum() != 0:
                probs = probs_all[start:end]
                precision, recall, threshold =  precision_recall_curve(y_test, probs)
                pauc = auc(recall, precision)
                if math.isnan(pauc):
                    pauc = 0
                    
                scores.append(pauc*(1+i/self.algo.num_iter))
    
            end = end + length
            start = start + length
            if (end >= len(probs_all)):
                end = len(probs_all)-1
            
        return gmean(scores)
            
    # def kelly_size(self, y_true, y_pred, returns, trendtrades):
    #     # calculate the symbol's kelly size based on the predictions of the model
    #     df = pd.DataFrame({'y_true':y_true, 'y_pred':y_pred, 'returns': returns, 'trends': trendtrades})
        
    #     trades = df[(df['y_pred']) & (df['trends'])]
    #     wins = df[(df['y_true']) & (df['y_pred']) & (df['trends'])]
    #     losses = df[(df['y_true'] == 0) & (df['y_pred']) & (df['trends'])]

    #     avg_win = 0
    #     avg_loss = 0
    #     kelly = 0

    #     if len(trades) > 0:
    #         win_rate = len(wins)/len(trades)

    #         loss_rate = 1-win_rate

    #         avg_win = wins['returns'].mean()
    #         avg_loss = -losses['returns'].mean()

    #         # used two different ways to calculate the Kelly size. (win_rate/avg_loss - loss_rate/avg_win) isn't the textbook Kelly formula, but it performed better
    #         # return the kelly size, but also average win and loss separately so it can be used for the MLFinLab bet sizing.
    #         if avg_loss > 0 and avg_win > 0:
    #             kelly = (win_rate/avg_loss - loss_rate/avg_win)
    #         # return win_rate - (loss_rate/(avg_win/avg_loss)), avg_win, avg_loss 
    #     return kelly, avg_win, avg_loss 

    def kelly_size(self, y_true, y_pred, returns):
        # calculate the symbol's kelly size based on the predictions of the model
        df = pd.DataFrame({'y_true':y_true, 'y_pred':y_pred, 'returns': returns})
        
        trades = df[(df['y_pred'])]
        wins = df[(df['y_true']) & (df['y_pred'])]
        losses = df[(df['y_true'] == 0) & (df['y_pred'])]

        avg_win = 0
        avg_loss = 0
        kelly = 0

        if len(trades) > 0:
            win_rate = len(wins)/len(trades)

            loss_rate = 1-win_rate

            avg_win = wins['returns'].mean()
            avg_loss = -losses['returns'].mean()

            # used two different ways to calculate the Kelly size. (win_rate/avg_loss - loss_rate/avg_win) isn't the textbook Kelly formula, but it performed better
            # return the kelly size, but also average win and loss separately so it can be used for the MLFinLab bet sizing.
            if avg_loss > 0 and avg_win > 0:
                kelly = (win_rate/avg_loss - loss_rate/avg_win)
            # return win_rate - (loss_rate/(avg_win/avg_loss)), avg_win, avg_loss 
        return kelly, avg_win, avg_loss 
        
    def score_results(self, y_true, probs, threshold):

        y_pred = probs > threshold
        return accuracy_score(y_true, y_pred)

        
    def get_class_weights(self, y):
        # Calculate class weights
        pos = y.sum()/(len(y))
        neg = 1 - pos
        pw = neg/pos
        nw = pos/neg
        return {0:nw,1:pw}
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from AlgorithmImports import *
# from InsightWeightingPortfolioConstructionModel import InsightWeightingPortfolioConstructionModel, PortfolioBias

class InsightVariableWeightingPortfolioConstructionModel(InsightWeightingPortfolioConstructionModel):
    '''Provides an implementation of IPortfolioConstructionModel that generates percent targets based on the
    Insight.Weight. The target percent holdings of each Symbol is given by the Insight.Weight from the last
    active Insight for that symbol.
    For insights of direction InsightDirection.Up, long targets are returned and for insights of direction
    InsightDirection.Down, short targets are returned.
    If the sum of all the last active Insight per symbol is bigger than 1, it will factor down each target
    percent holdings proportionally so the sum is 1.
    It will ignore Insight that have no Insight.Weight value.'''

    def __init__(self, algo, rebalance = Resolution.Daily, portfolioBias = PortfolioBias.LongShort):
        '''Initialize a new instance of InsightWeightingPortfolioConstructionModel
        Args:
            rebalance: Rebalancing parameter. If it is a timedelta, date rules or Resolution, it will be converted into a function.
                              If None will be ignored.
                              The function returns the next expected rebalance time for a given algorithm UTC DateTime.
                              The function returns null if unknown, in which case the function will be called again in the
                              next loop. Returning current time will trigger rebalance.
            portfolioBias: Specifies the bias of the portfolio (Short, Long/Short, Long)'''
        self.weightCap = 1
        self.algo = algo
        super().__init__(rebalance, portfolioBias)

    def DetermineTargetPercent(self, activeInsights):
        '''Will determine the target percent for each insight
        Args:
            activeInsights: The active insights to generate a target for'''
        result = {}

        # We will adjust weights proportionally in case the sum is > self.algo.weightCap so it sums to self.algo.weightCap.
        weightSums = sum(self.GetValue(insight) for insight in activeInsights if self.RespectPortfolioBias(insight))
        weightFactor = 1.0
        # if self.weightCap < 1:
        #     self.algo.Debug(str(self.algo.Time)+" in PCM. Bear Market. Weight cap "+str(self.weightCap))
        if weightSums > self.weightCap:
            weightFactor = self.weightCap / weightSums
        for insight in activeInsights:
            result[insight] = (insight.Direction if self.RespectPortfolioBias(insight) else InsightDirection.Flat) * self.GetValue(insight) * weightFactor
        return result
#region imports
from AlgorithmImports import *
#endregion
from QuantConnect.Algorithm.Framework.Risk import RiskManagementModel

from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Common")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Algorithm.Framework")

from QuantConnect.Algorithm import *
from QuantConnect.Algorithm.Framework import *
from QuantConnect.Algorithm.Framework.Portfolio import PortfolioTarget, PortfolioTargetCollection
from QuantConnect.Algorithm.Framework.Risk import RiskManagementModel
from itertools import groupby

# bracket risk model class
class BracketRiskModel(RiskManagementModel):
    '''Creates a trailing stop loss for the maximumDrawdownPercent value and a profit taker for the maximumUnrealizedProfitPercent value'''
    def __init__(self, maximumDrawdownPercent = 0.05, maximumUnrealizedProfitPercent = 0.05):
        self.maximumDrawdownPercent = -abs(maximumDrawdownPercent)
        self.trailingHighs = dict()
        self.maximumUnrealizedProfitPercent = abs(maximumUnrealizedProfitPercent)
        self.liquidated = set()

    def ManageRisk(self, algorithm, targets):
        riskAdjustedTargets = list()
        for kvp in algorithm.Securities:
            symbol = kvp.Key
            security = kvp.Value

            # Remove if not invested
            if not security.Invested:
                self.trailingHighs.pop(symbol, None)
                continue
            pnl = security.Holdings.UnrealizedProfitPercent
            
            if pnl > self.maximumUnrealizedProfitPercent or security.Symbol in self.liquidated:
                # liquidate
                algorithm.Debug(f"Profit Taken: {security.Symbol}")
                algorithm.Log(f"Profit Taken: {security.Symbol}")
                riskAdjustedTargets.append(PortfolioTarget(security.Symbol, 0))
                if algorithm.Securities[security.Symbol].Invested:
                    self.liquidated.add(security.Symbol)
                    algorithm.Log(f"Liquidating {security.Symbol}")
                return riskAdjustedTargets
                
            # Add newly invested securities
            if symbol not in self.trailingHighs:
                self.trailingHighs[symbol] = security.Holdings.AveragePrice   # Set to average holding cost
                continue

            # Check for new highs and update - set to tradebar high
            if self.trailingHighs[symbol] < security.High:
                self.trailingHighs[symbol] = security.High
                continue

            # Check for securities past the drawdown limit
            securityHigh = self.trailingHighs[symbol]
            drawdown = (security.Low / securityHigh) - 1

                
            if drawdown < self.maximumDrawdownPercent or security.Symbol in self.liquidated:
                # liquidate
                algorithm.Debug(f"Losses Taken: {security.Symbol}")
                algorithm.Log(f"Losses Taken: {security.Symbol}")
                riskAdjustedTargets.append(PortfolioTarget(symbol, 0))
                if algorithm.Securities[security.Symbol].Invested:
                    self.liquidated.add(security.Symbol)
                    algorithm.Log(f"Liquidating {security.Symbol}")
                
        return riskAdjustedTargets

# Trailing Stop risk model class
class TrailingStopRiskManagementModelLiquidation(RiskManagementModel):
    '''Provides an implementation of IRiskManagementModel that limits the maximum possible loss
    measured from the highest unrealized profit'''
    def __init__(self, maximumDrawdownPercent = 0.05):
        '''Initializes a new instance of the TrailingStopRiskManagementModel class
        Args:
            maximumDrawdownPercent: The maximum percentage drawdown allowed for algorithm portfolio compared with the highest unrealized profit, defaults to 5% drawdown'''
        self.maximumDrawdownPercent = abs(maximumDrawdownPercent)
        self.trailingAbsoluteHoldingsState = dict()
        self.liquidated = set()

    def ManageRisk(self, algorithm, targets):
        '''Manages the algorithm's risk at each time step
        Args:
            algorithm: The algorithm instance
            targets: The current portfolio targets to be assessed for risk'''
        riskAdjustedTargets = list()

        for kvp in algorithm.Securities:
            symbol = kvp.Key
            security = kvp.Value

            # Remove if not invested
            if not security.Invested:
                self.trailingAbsoluteHoldingsState.pop(symbol, None)
                continue

            position = PositionSide.Long if security.Holdings.IsLong else PositionSide.Short
            absoluteHoldingsValue = security.Holdings.AbsoluteHoldingsValue
            trailingAbsoluteHoldingsState = self.trailingAbsoluteHoldingsState.get(symbol)

            # Add newly invested security (if doesn't exist) or reset holdings state (if position changed)
            if trailingAbsoluteHoldingsState == None or position != trailingAbsoluteHoldingsState.position:
                self.trailingAbsoluteHoldingsState[symbol] = trailingAbsoluteHoldingsState = self.HoldingsState(position, security.Holdings.AbsoluteHoldingsCost)

            trailingAbsoluteHoldingsValue = trailingAbsoluteHoldingsState.absoluteHoldingsValue

            # Check for new max (for long position) or min (for short position) absolute holdings value
            if ((position == PositionSide.Long and trailingAbsoluteHoldingsValue < absoluteHoldingsValue) or
                (position == PositionSide.Short and trailingAbsoluteHoldingsValue > absoluteHoldingsValue)):
                self.trailingAbsoluteHoldingsState[symbol].absoluteHoldingsValue = absoluteHoldingsValue
                continue

            drawdown = abs((trailingAbsoluteHoldingsValue - absoluteHoldingsValue) / trailingAbsoluteHoldingsValue)

            if self.maximumDrawdownPercent < drawdown or security.Symbol in self.liquidated:
                self.trailingAbsoluteHoldingsState.pop(symbol, None)
                # liquidate
                riskAdjustedTargets.append(PortfolioTarget(symbol, 0))
                if algorithm.Securities[security.Symbol].Invested:
                    self.liquidated.add(security.Symbol)
                    algorithm.Log(f"Liquidating {security.Symbol}")

        return riskAdjustedTargets

    class HoldingsState:
        def __init__(self, position, absoluteHoldingsValue):
            self.position = position
            self.absoluteHoldingsValue = absoluteHoldingsValue

# Maximum Sector Exposure risk model class
class ETFMaximumSectorExposureRiskManagementModel(RiskManagementModel):
    '''Provides an implementation of IRiskManagementModel that that limits the sector exposure to the specified percentage'''

    def __init__(self, exclusions, maximumSectorExposure = 0.20):
        '''Initializes a new instance of the MaximumSectorExposureRiskManagementModel class
        Args:
            maximumDrawdownPercent: The maximum exposure for any sector, defaults to 20% sector exposure.'''
        if maximumSectorExposure <= 0:
            raise ValueError('MaximumSectorExposureRiskManagementModel: the maximum sector exposure cannot be a non-positive value.')

        self.maximumSectorExposure = maximumSectorExposure
        self.targetsCollection = PortfolioTargetCollection()
        self.exclusions = exclusions

    def ManageRisk(self, algorithm, targets):
        '''Manages the algorithm's risk at each time step
        Args:
            algorithm: The algorithm instance'''
        maximumSectorExposureValue = float(algorithm.Portfolio.TotalPortfolioValue) * self.maximumSectorExposure

        self.targetsCollection.AddRange(targets)

        risk_targets = list()

        # Group the securities by their sector
        filtered = list(filter(lambda x: x.Value.Fundamentals is not None and x.Value.Fundamentals.HasFundamentalData, algorithm.UniverseManager.ActiveSecurities))
        filtered.sort(key = lambda x: x.Value.Fundamentals.CompanyReference.IndustryTemplateCode)
        groupBySector = groupby(filtered, lambda x: x.Value.Fundamentals.CompanyReference.IndustryTemplateCode)

        for code, securities in groupBySector:
            # Compute the sector absolute holdings value
            # If the construction model has created a target, we consider that
            # value to calculate the security absolute holding value
            quantities = {}
            sectorAbsoluteHoldingsValue = 0

            for security in securities:
                symbol = security.Value.Symbol
                quantities[symbol] = security.Value.Holdings.Quantity
                absoluteHoldingsValue = security.Value.Holdings.AbsoluteHoldingsValue

                if self.targetsCollection.ContainsKey(symbol):
                    quantities[symbol] = self.targetsCollection[symbol].Quantity

                    absoluteHoldingsValue = (security.Value.Price * abs(quantities[symbol]) *
                        security.Value.SymbolProperties.ContractMultiplier *
                        security.Value.QuoteCurrency.ConversionRate)

                sectorAbsoluteHoldingsValue += absoluteHoldingsValue

            # If the ratio between the sector absolute holdings value and the maximum sector exposure value
            # exceeds the unity, it means we need to reduce each security of that sector by that ratio
            # Otherwise, it means that the sector exposure is below the maximum and there is nothing to do.
            ratio = float(sectorAbsoluteHoldingsValue) / maximumSectorExposureValue

            if ratio > 1:
                algorithm.Debug("Reducing ratio for sector "+str(code)+": "+str(ratio))
                for symbol, quantity in quantities.items():
                    if quantity != 0:
                        risk_targets.append(PortfolioTarget(symbol, float(quantity) / ratio))

        return risk_targets

    def OnSecuritiesChanged(self, algorithm, changes):
        '''Event fired each time the we add/remove securities from the data feed
        Args:
            algorithm: The algorithm instance that experienced the change in securities
            changes: The security additions and removals from the algorithm'''
        anyFundamentalData = any([
            (kvp.Value.Fundamentals is not None and
            kvp.Value.Fundamentals.HasFundamentalData) or
            kvp.Value.Symbol.Value in self.exclusions
            for kvp in algorithm.ActiveSecurities
            ]);

        if not anyFundamentalData:
            raise Exception("MaximumSectorExposureRiskManagementModel.OnSecuritiesChanged: Please select a portfolio selection model that selects securities with fundamental data.")


class MaximumExposureRiskManagementModel(RiskManagementModel):
    '''Provides an implementation of IRiskManagementModel that that limits the sector exposure to the specified percentage'''

    def __init__(self, maximumExposure = 0.20):
        '''Initializes a new instance of the maximumExposureRiskManagementModel class
        Args:
            maximumDrawdownPercent: The maximum exposure for any sector, defaults to 20% sector exposure.'''
        if maximumExposure <= 0:
            raise ValueError('maximumExposureRiskManagementModel: the maximum sector exposure cannot be a non-positive value.')

        self.maximumExposure = maximumExposure
        self.targetsCollection = PortfolioTargetCollection()

    def ManageRisk(self, algorithm, targets):
        '''Manages the algorithm's risk at each time step
        Args:
            algorithm: The algorithm instance'''
        maximumExposureValue = float(algorithm.Portfolio.TotalPortfolioValue) * self.maximumExposure
        totalPortfolioValue = float(algorithm.Portfolio.TotalPortfolioValue)
        remainingCash = float(algorithm.Portfolio.CashBook[algorithm.AccountCurrency].Amount)

        self.targetsCollection.AddRange(targets)

        risk_targets = list()

        # Group the securities by their sector

        securities = algorithm.UniverseManager.ActiveSecurities

        quantities = {}
        absoluteHoldingsValue = 0

        for security in securities:
            symbol = security.Value.Symbol
            quantities[symbol] = security.Value.Holdings.Quantity
            symbolAbsoluteHoldingsValue = security.Value.Holdings.AbsoluteHoldingsValue

            if self.targetsCollection.ContainsKey(symbol):
                quantities[symbol] += self.targetsCollection[symbol].Quantity

                symbolAbsoluteHoldingsValue = (security.Value.Price * abs(quantities[symbol]) *
                    security.Value.SymbolProperties.ContractMultiplier *
                    security.Value.QuoteCurrency.ConversionRate)
          
            absoluteHoldingsValue += symbolAbsoluteHoldingsValue

        # If the ratio between the sector absolute holdings value and the maximum sector exposure value
        # exceeds the unity, it means we need to reduce each security of that sector by that ratio
        # Otherwise, it means that the sector exposure is below the maximum and there is nothing to do.
        ratio = float(absoluteHoldingsValue) / maximumExposureValue

        if ratio > 1:
            algorithm.Debug(str(algorithm.Time)+" RISK MANAGEMENT. Scaling down portfolio targets. Ratio: "+str(ratio))
            for symbol, quantity in quantities.items():
                if quantity != 0:
                    risk_targets.append(PortfolioTarget(symbol, float(quantity) / ratio))

        return risk_targets