def get_market_config(): r"""Read the configuration file for MarketFlow. Parameters ---------- None : None Returns ------- specs : dict The parameters for controlling MarketFlow. """ logger.info("MarketFlow Configuration") # Read the configuration file full_path = SSEP.join([PSEP, 'config', 'market.yml']) with open(full_path, 'r') as ymlfile: cfg = yaml.load(ymlfile, Loader=yaml.FullLoader) # Store configuration parameters in dictionary specs = {} # Section: market [this section must be first] specs['create_model'] = cfg['market']['create_model'] fractal = cfg['market']['data_fractal'] try: _ = pd.to_timedelta(fractal) except: logger.info("data_fractal [%s] is an invalid pandas offset", fractal) specs['data_fractal'] = fractal specs['data_history'] = cfg['market']['data_history'] specs['forecast_period'] = cfg['market']['forecast_period'] fractal = cfg['market']['fractal'] try: test_interval = pd.to_timedelta(fractal) except: logger.info("fractal [%s] is an invalid pandas offset", fractal) specs['fractal'] = fractal specs['lag_period'] = cfg['market']['lag_period'] specs['leaders'] = cfg['market']['leaders'] specs['predict_history'] = cfg['market']['predict_history'] specs['schema'] = cfg['market']['schema'] specs['subschema'] = cfg['market']['subschema'] specs['api_key_name'] = cfg['market']['api_key_name'] specs['api_key'] = cfg['market']['api_key'] specs['subject'] = cfg['market']['subject'] specs['target_group'] = cfg['market']['target_group'] # Set API Key environment variable if specs['api_key']: os.environ[specs['api_key_name']] = specs['api_key'] # Create the subject/schema/fractal namespace sspecs = [specs['subject'], specs['schema'], specs['fractal']] space = Space(*sspecs) # Section: features try: logger.info("Getting Features") specs['features'] = cfg['features'] except: logger.info("No Features Found") specs['features'] = {} # Section: groups try: logger.info("Defining Groups") for g, m in list(cfg['groups'].items()): Group(g, space) Group.groups[g].add(m) except: logger.info("No Groups Found") # Section: aliases try: logger.info("Defining Aliases") for k, v in list(cfg['aliases'].items()): Alias(k, v) except: logger.info("No Aliases Found") # Section: system try: logger.info("Getting System Parameters") specs['system'] = cfg['system'] except: logger.info("No System Parameters Found") specs['system'] = {} # Section: variables logger.info("Defining AlphaPy Variables [phigh, plow]") Variable('phigh', 'probability >= 0.7') Variable('plow', 'probability <= 0.3') try: logger.info("Defining User Variables") for k, v in list(cfg['variables'].items()): Variable(k, v) except: logger.info("No Variables Found") # Section: functions try: logger.info("Getting Variable Functions") specs['functions'] = cfg['functions'] except: logger.info("No Variable Functions Found") specs['functions'] = {} # Log the stock parameters logger.info('MARKET PARAMETERS:') logger.info('api_key = %s', specs['api_key']) logger.info('api_key_name = %s', specs['api_key_name']) logger.info('create_model = %r', specs['create_model']) logger.info('data_fractal = %s', specs['data_fractal']) logger.info('data_history = %d', specs['data_history']) logger.info('features = %s', specs['features']) logger.info('forecast_period = %d', specs['forecast_period']) logger.info('fractal = %s', specs['fractal']) logger.info('lag_period = %d', specs['lag_period']) logger.info('leaders = %s', specs['leaders']) logger.info('predict_history = %s', specs['predict_history']) logger.info('schema = %s', specs['schema']) logger.info('subject = %s', specs['subject']) logger.info('subschema = %s', specs['subschema']) logger.info('system = %s', specs['system']) logger.info('target_group = %s', specs['target_group']) # Market Specifications return specs
def get_market_config(): r"""Read the configuration file for MarketFlow. Parameters ---------- None : None Returns ------- specs : dict The parameters for controlling MarketFlow. """ logger.info("MarketFlow Configuration") # Read the configuration file full_path = SSEP.join([PSEP, 'config', 'market.yml']) with open(full_path, 'r') as ymlfile: cfg = yaml.load(ymlfile) # Store configuration parameters in dictionary specs = {} # Section: market [this section must be first] specs['forecast_period'] = cfg['market']['forecast_period'] specs['fractal'] = cfg['market']['fractal'] specs['leaders'] = cfg['market']['leaders'] specs['data_history'] = cfg['market']['data_history'] specs['predict_history'] = cfg['market']['predict_history'] specs['schema'] = cfg['market']['schema'] specs['target_group'] = cfg['market']['target_group'] # Create the subject/schema/fractal namespace sspecs = ['stock', specs['schema'], specs['fractal']] space = Space(*sspecs) # Section: features try: logger.info("Getting Features") specs['features'] = cfg['features'] except: logger.info("No Features Found") specs['features'] = {} # Section: groups try: logger.info("Defining Groups") for g, m in cfg['groups'].items(): Group(g, space) Group.groups[g].add(m) except: logger.info("No Groups Found") # Section: aliases try: logger.info("Defining Aliases") for k, v in cfg['aliases'].items(): Alias(k, v) except: logger.info("No Aliases Found") # Section: system try: logger.info("Getting System Parameters") specs['system'] = cfg['system'] except: logger.info("No System Parameters Found") specs['system'] = {} # Section: variables try: logger.info("Defining Variables") for k, v in cfg['variables'].items(): Variable(k, v) except: logger.info("No Variables Found") # Section: functions try: logger.info("Getting Variable Functions") specs['functions'] = cfg['functions'] except: logger.info("No Variable Functions Found") specs['functions'] = {} # Log the stock parameters logger.info('MARKET PARAMETERS:') logger.info('features = %s', specs['features']) logger.info('forecast_period = %d', specs['forecast_period']) logger.info('fractal = %s', specs['fractal']) logger.info('leaders = %s', specs['leaders']) logger.info('data_history = %d', specs['data_history']) logger.info('predict_history = %s', specs['predict_history']) logger.info('schema = %s', specs['schema']) logger.info('system = %s', specs['system']) logger.info('target_group = %s', specs['target_group']) # Market Specifications return specs