def get_test_object_futures(): """ Returns some standard test data """ data = csvFuturesData("sysdata.tests") rawdata = FuturesRawData() config = Config("systems.provided.example.exampleconfig.yaml") return (rawdata, data, config)
def futures_system(data=None, config=None, trading_rules=None, log_level="on"): """ :param data: data object (defaults to reading from csv files) :type data: sysdata.data.Data, or anything that inherits from it :param config: Configuration object (defaults to futuresconfig.yaml in this directory) :type config: sysdata.configdata.Config :param trading_rules: Set of trading rules to use (defaults to set specified in config object) :type trading_rules: list or dict of TradingRules, or something that can be parsed to that :param log_level: How much logging to do :type log_level: str >>> system=futures_system(log_level="off") >>> system System with stages: accounts, portfolio, positionSize, rawdata, combForecast, forecastScaleCap, rules >>> system.rules.get_raw_forecast("EDOLLAR", "ewmac2_8").dropna().head(2) ewmac2_8 1983-10-10 0.695929 1983-10-11 -0.604704 ewmac2_8 2015-04-21 0.172416 2015-04-22 -0.477559 >>> system.rules.get_raw_forecast("EDOLLAR", "carry").dropna().head(2) carry 1983-10-10 0.952297 1983-10-11 0.854075 carry 2015-04-21 0.350892 2015-04-22 0.350892 """ if data is None: data = csvFuturesData() if config is None: config = Config( "systems.provided.futures_chapter15.futuresconfig.yaml") rules = Rules(trading_rules) system = System([ Account(), PortfoliosFixed(), PositionSizing(), FuturesRawData(), ForecastCombine(), ForecastScaleCap(), rules ], data, config) system.set_logging_level(log_level) return system
def get_test_object_futures_with_rules(): """ Returns some standard test data """ data = csvFuturesSimData() rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.exampleconfig.yaml") return (rules, rawdata, data, config)
def get_test_object_futures_with_rules_and_capping(): """ Returns some standard test data """ data = csvFuturesData("sysdata.tests") rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.exampleconfig.yaml") capobject = ForecastScaleCap() return (capobject, rules, rawdata, data, config)
def testCarryRule(self): NOTUSEDrawdata, data, NOTUSEDconfig = get_test_object() rawdata = FuturesRawData() rules = Rules() system = System([rawdata, rules], data) rule = TradingRule(carry2, [ "rawdata.daily_annualised_roll", ], dict(smooth_days=90)) ans = rule.call(system, "EDOLLAR") self.assertAlmostEqual(ans.tail(1).values[0], 0.138302, 5)
def testCarryRule(self): data = csvFuturesData("sysdata.tests") rawdata = FuturesRawData() rules = Rules() system = System([rawdata, rules], data) rule = TradingRule(carry, [ "rawdata.daily_annualised_roll", "rawdata.daily_returns_volatility" ], dict(smooth_days=90)) ans = rule.call(system, "EDOLLAR") self.assertAlmostEqual(ans.iloc[-1][0], 0.411686026, 5)
def get_test_object_futures_with_rules_and_capping_estimate(): """ Returns some standard test data """ data = csvFuturesSimData() rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.estimateexampleconfig.yaml") capobject = ForecastScaleCap() account = Account() return (account, capobject, rules, rawdata, data, config)
def get_test_object_futures_with_comb_forecasts(): """ Returns some standard test data """ data = csvFuturesSimData() rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.exampleconfig.yaml") capobject = ForecastScaleCap() combobject = ForecastCombine() return (combobject, capobject, rules, rawdata, data, config)
def get_test_object_futures_with_pos_sizing(): """ Returns some standard test data """ data = csvFuturesData("sysdata.tests") rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.exampleconfig.yaml") capobject = ForecastScaleCap() combobject = ForecastCombine() posobject = PositionSizing() return (posobject, combobject, capobject, rules, rawdata, data, config)
def get_test_object_futures(): """ Returns some standard test data """ data = csvFuturesSimData(datapath_dict=dict( config_data="sysdata.tests.configtestdata", adjusted_prices="sysdata.tests.multiplepricestestdata", spot_fx_data="sysdata.tests.fxtestdata", multiple_price_data="sysdata.tests.multiplepricestestdata")) config = Config("systems.provided.example.exampleconfig.yaml") rawdata = FuturesRawData() return (rawdata, data, config)
def testCarryRule(self): data = csvFuturesData("sysdata.tests") rawdata = FuturesRawData() rules = Rules() system = System([rawdata, rules], data) rule = TradingRule( carry2, [ "rawdata.daily_annualised_roll", ], dict(smooth_days=90)) ans = rule.call(system, "EDOLLAR") self.assertAlmostEqual(ans.tail(1).values[0], 0.37666175, 5)
def get_test_object_futures_with_rules_and_capping(): """ Returns some standard test data """ data = csvFuturesSimData(datapath_dict=dict( config_data="sysdata.tests.configtestdata", adjusted_prices="sysdata.tests.adjtestdata", spot_fx_data="sysdata.tests.fxtestdata", multiple_price_data="sysdata.tests.multiplepricestestdata")) rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.exampleconfig.yaml") capobject = ForecastScaleCap() return (capobject, rules, rawdata, data, config)
def futures_system( data=None, config=None, trading_rules=None, log_level="terse"): """ :param data: data object (defaults to reading from csv files) :type data: sysdata.data.simData, or anything that inherits from it :param config: Configuration object (defaults to futuresconfig.yaml in this directory) :type config: sysdata.configdata.Config :param trading_rules: Set of trading rules to use (defaults to set specified in config object) :param trading_rules: list or dict of TradingRules, or something that can be parsed to that :param log_level: Set of trading rules to use (defaults to set specified in config object) :type log_level: str """ if data is None: data = csvFuturesSimData() if config is None: config = Config( "systems.provided.futures_chapter15.futuresestimateconfig.yaml") rules = Rules(trading_rules) system = System( [ Account(), Portfolios(), PositionSizing(), FuturesRawData(), ForecastCombine(), ForecastScaleCap(), rules, ], data, config, ) system.set_logging_level(log_level) return system
def get_test_object_futures_with_pos_sizing_estimates(): """ Returns some standard test data """ data = csvFuturesSimData(datapath_dict=dict( config_data="sysdata.tests.configtestdata", adjusted_prices="sysdata.tests.adjtestdata", spot_fx_data="sysdata.tests.fxtestdata", multiple_price_data="sysdata.tests.multiplepricestestdata")) rawdata = FuturesRawData() rules = Rules() config = Config("systems.provided.example.estimateexampleconfig.yaml") capobject = ForecastScaleCap() combobject = ForecastCombine() posobject = PositionSizing() account = Account() return (account, posobject, combobject, capobject, rules, rawdata, data, config)
import inspect import sys; sys.path.append('../..') import numpy as np from systems.basesystem import System from systems.forecast_combine import ForecastCombineEstimated from sysdata.csvdata import csvFuturesData from systems.futures.rawdata import FuturesRawData from systems.forecasting import Rules from sysdata.configdata import Config from systems.forecast_scale_cap import ForecastScaleCapFixed, ForecastScaleCapEstimated from systems.account import Account data = csvFuturesData("sysdata.tests") rawdata = FuturesRawData() rules = Rules() config = Config("examples.test14.yaml") fcs = ForecastScaleCapEstimated() accounts=Account() from systems.portfolio import PortfoliosEstimated from systems.positionsizing import PositionSizing system=System([accounts, rawdata, rules, fcs, ForecastCombineEstimated(), PositionSizing(), PortfoliosEstimated()], data, config) print (system.portfolio.get_instrument_correlation_matrix().corr_list) #array([[ 1. , 0.87041785], # [ 0.87041785, 1. ]])