Configuration#

Environment#

sigtech.framework.config.sig_settings.init(env: Optional[str] = None, env_date: Optional[Union[str, datetime.date, datetime.datetime]] = None, data_date: Optional[Union[str, datetime.date, datetime.datetime]] = None, load_env: bool = False, env_file: str = 'env', enable_intraday_memory_saving: bool = True, intraday_memory_saving_location: Optional[str] = None, **env_overrides: Any) sigtech.framework.config.config.ConfiguredEnvironment

Initialise the environment and invoke pre- and post-init callbacks.

Environment overrides:

  • log_level: 'INFO', 'DEBUG', 'WARNING' or 'ERROR' (default is 'WARNING').

  • repeat_mode: Specify the behaviour in case the init() is called more than once. 'reinit' runs de_init() and then init() again, 'error' terminates the execution with an error, 'warning' continues the execution with a warning (default is 'warning').

  • log_stdout: Configuration logging (default is True).

  • init_traceback: Initialisation traceback (default is False).

  • SIP_ENV env variable (if set).

  • SIP_ENV_OVERRIDE_ env variables (if set) to override specific properties.

Note that the date parameter is now deprecated. Please use env_date and data_date.

Example:

import datetime as dtm
import sigtech.framework as sig

# env_date se to 1st Jul 2020, 11am
env = sig.init(log_level='ERROR', env_date=dtm.datetime(2020, 7, 1, 11, 0))
Parameters
  • env – Environment is use (set by default in production).

  • env_date – the today date used by framework, i.e. the date until which the backtest will run. Default is 'today'.

  • data_date – The market data as-of date, use to pin calculations to a particular version of the market data. Default is 'now'.

  • enable_intraday_memory_saving – Enable automatic purging of intraday data (default is True).

  • intraday_memory_saving_location – If provided, purged intraday data will be saved to this folder, and loaded back when required.

sigtech.framework.config.sig_settings.de_init()

Clear the cache and shut down the configured environment.

Example:

import sigtech.framework as sig

sig.init()
sig.de_init()

Configured environment#

exception sigtech.framework.config.config.LoadEnvironmentError

Errors relating to loading user environments via a file

class sigtech.framework.config.config.ConfiguredEnvironment(config: Mapping[str, bool], env_asof_datetime: datetime.datetime, data_asof_datetime: datetime.datetime, default_symbology: sigtech.framework.infra.data_adapter.identifier.Symbology, get_adapter_func: collections.abc.Callable[[sigtech.framework.internal.infra.data_adapter.common.DataAdapterID, ConfiguredEnvironment], sigtech.framework.internal.infra.data_adapter.common.DataAdapter], env: Mapping[str, Any], enable_sentry: bool = False, is_strategy_job: bool = False, load_env: bool = False, env_file: str = 'env')

Base class implementing a configured environment.

log = <FrameworkLogger sigtech.framework.config.config.ConfiguredEnvironment (WARNING)>
ENVIRONMENT = 'env'

String identifier of the environment.

property is_remote_process

Return True if the environment has been set for remote processing.

property dag_cpus

Return the number of CPUs configured for remote processing.

property is_dag_compute

Return True for multiprocess DAG compute, otherwise False for single process compute.

property is_strategy_job

Return True if the environment is set up for a strategy job.

property xray_tolerance_secs

Set the tolerance (in seconds) used when logging compute times, e.g. MDS adapter API calls, DAG remote process times.

property xray_tolerance_mem_mb

Set the tolerance (in MB) used when logging memory usage, e.g. MDS adapter API calls, DAG remote process times.

property sentry_manager

Sentry SDK instance for error tracking.

set_shared_memory(on: bool = True, force_remote_calc: bool = False, object_cache_capacity: Optional[int] = None)

Enable or disable the scalability toolkit.

Example:

import sigtech.framework as sig

env = sig.init()
env.set_shared_memory(on=True)
Parameters
  • on – Whether the scalability toolkit should be enabled or disabled.

  • force_remote_calc – If True, will allow sig.remote_calc to work even without shared memory.

  • object_cache_capacity – Capacity of local object cache (number of items) - set it to allow eviction with shared memory.

set_dag_cpus(cpus: Optional[int] = None)

Set the number of CPUs to be used by the scalability toolkit.

Note

This function must be run before set_shared_memory() is called in order to take effect.

Parameters

cpus – Number of CPUs.

property is_mds: bool

Return True if the configured environment is using MDS.

property original_kwargs: dict[str, Any]

Returns the original kwargs used to initiate the environment

property asofdate: datetime.date

Return the as-of date of the environment.

property asofdatetime: datetime.datetime

Return the as-of datetime of the environment.

property data_asof_datetime: datetime.datetime

Return the as-of date of the market data.

property environment: str

Return the string identifier of the environment.

sig_master()

Return the SIG Master single stocks object.

Example:

import sigtech.framework as sig

env = sig.init(log_level='ERROR')
sm = env.sig_master()
property object: sigtech.framework.internal.infra.objects.factory.ObjectFactory

Return the object reference of the configured environment.

property identifier: sigtech.framework.infra.data_adapter.identifier.IdentifierFactory

Return the identifier of the configured environment.

property default_symbology: sigtech.framework.infra.data_adapter.identifier.Symbology

Return the symbol domain of the configured environment.

env_get(key: str) Any

Return an attribute value of the configured environment.

Parameters

key – Attribute key.

Returns

Attribute value.

Example:

import sigtech.framework as sig

env = sig.init(log_level='ERROR')
env.env_get('log_level')
get_adapter(adapter_id: sigtech.framework.internal.infra.data_adapter.common.DataAdapterID) sigtech.framework.internal.infra.data_adapter.common.DataAdapter

Return a data adapter available for the configured environment.

Parameters

adapter_id – Adapter identifier.

Returns

Data adapter.

property data_service: sigtech.framework.internal.infra.data_adapter.common.DataService

Return the data service endpoint.

property strategy_service_initialised: bool

Returns True if strategy service has been initialised

strategy_service() sigtech.framework.services.strategy_service.proxy.StrategyServiceProxy

Return the strategy cache service object.

dataframe_service() sigtech.framework.services.strategy.ObjectService deprecated

Return the object cache service object.

object_service() sigtech.framework.services.strategy.ObjectService

Return the object cache service object.

property quant_bridge: sigtech.framework.internal.quant_bridge.BaseQuantLibrary

Return the library used for analytics.

property external_analytics_bridge

Return the library used for external analytics.

property fx_cross: sigtech.framework.infra.analytics.fx.cross.FXCross

Return an FXCross object handling FX currency conversions.

property config

Return a copy of the configured environment.

config_hash() int

Return the hash value of the configured environment.

save_snapshot(file: str, warning: bool = True)

Store a pickle snapshot of the environment with the objects contained in the environment.

Parameters
  • file – Output filename.

  • warning – Boolean flag to indicate that a warning string should be displayed.

Example:

import sigtech.framework as sig

env = sig.init(log_level='ERROR')
env.save_snapshot('example_snapshot.pickle')
static load_snapshot(file)

Load a snapshot of the environment and add stored objects to the environment.

Parameters

file – Input filename.

Example:

import sigtech.framework as sig

env = sig.init()
env.save_snapshot('example_snapshot.pickle')
save_config(file: str = 'env', warning: bool = True) None

Saves a snapshot of the environment variables in .json format for json serializable values and .pkl format for non-json serializable values

Parameters
  • file – Output filename

  • warning – Boolean flag to indicate that a warning string should be displayed.

Example:

import sigtech.framework as sig

# Saves environment config as 'env.json' and 'env.pkl'
env = sig.init()
env.save_config('env')

# Destroys the environment instance
sig.de_init()

# Loads environment config from 'env.json' and 'env.pkl'
loaded_env = sig.init(load_env=True, env_file='env')
change_env_date(new_dt: Union[datetime.date, datetime.datetime], live_data_updates=None, allow_move_backwards=False)

Update the environment date. Must be after the current environment date.

Parameters
  • new_dt – date or datetime. If no timezone applied, UTC is assumed.

  • live_data_updates – dict of dobject name to live data update.

  • allow_move_backwards – bool. Allow the environment date to be moved backwards. In this case the object cache will be cleared.

Example:

import datetime as dtm
import sigtech.framework as sig

env = sig.init(log_level='ERROR', env_date=dtm.datetime(2021, 1, 5))
env.change_env_date(dtm.datetime(2021, 1, 6))
go_live(strategies, outputs, output_callback, until_dt, period=datetime.timedelta(seconds=60), strategy_can_step=None, live_objects=None)

Start live strategy streaming mode.

Parameters
  • strategies – List of Strategy classes

  • outputs – Dictionary of OutputType -> frequency (1 meaning, every output, 2 every other output etc)

  • output_callback – Callback function with the signature output_callback(env_dt, output_dict):

  • until_dt – run until this datetime

  • period – strategy run frequency

  • strategy_can_step – a function which takes two arguments - a dictionary of object name to last market data point, and a dictionary of object name to timedelta representing the age of the last message

  • live_objects – optionally, supply a list of object names which will be subscribed to

Returns

property trade_price_store

Gets the trade price store which is a dict of (trade UTC datetime, instrument name, currency, quantity, transaction_type) to trade price

property display_tz

The timezone object to use by display methods, if not specified in the method input. This will return the | trading manager timezone unless a global TM_DISPLAY_TIMEZONE setting is provided in the environment config.

Settings#

Configuration module defining environment settings.

exception sigtech.framework.config.settings.ConfigError

Base class for config related exceptions.

exception sigtech.framework.config.settings.NotInitialisedError

Exception raised when config is not initialised.

exception sigtech.framework.config.settings.InitialisedError

Exception raised when config is already initialised.

sigtech.framework.config.settings.configured_env() sigtech.framework.config.config.ConfiguredEnvironment

Return the configured environment.

sigtech.framework.config.settings.get_value(config: str) Any

Return an attribute value of the configured environment.

Parameters

config – Attribute key.

Returns

Attribute value.

sigtech.framework.config.settings.set_value(config: str, value: Any) None

Set an attribute of the configured environment.

Parameters
  • config – Attribute key.

  • value – Attribute value.

sigtech.framework.config.settings.asofdate() datetime.date

Return the as-of date of the environment.

sigtech.framework.config.settings.asofdatetime() datetime.datetime

Return the as-of datetime of the environment.

sigtech.framework.config.settings.get_environment() str

Return the string identifier of the environment.

sigtech.framework.config.settings.env_get(key)

Return an attribute value of the configured environment.

Parameters

key – Attribute key.

Returns

Attribute value.

sigtech.framework.config.settings.usage_counter_object(obj: any, bucket_name: str = 'usage')

Track object usage and send periodic updates to the event endpoint.

Parameters
  • obj – Object (or tuple object, function) to track or message to collect.

  • bucket_name – Bucket used to collect data (optional).

sigtech.framework.config.settings.usage_counter(prefix: Optional[str] = None, bucket_name: str = 'usage')

Decorator to track methods/classes usage and send periodic updates to the event endpoint.

Parameters
  • prefix – Customised prefix string (optional).

  • bucket_name – Bucket used to collect data (optional).

sigtech.framework.config.settings.is_initialised() bool

Return True if the global configured environment was set successfully.

Example:

import sigtech.framework as sig

if not sig.config.is_initialised():
    sig.init()
sigtech.framework.config.settings.destroy_env()

Clear the cache and shut down the configured environment. Alternatively, use sig.de_init().

Example:

import sigtech.framework as sig

sig.init()

sig.config.settings.destroy_env()
class sigtech.framework.config.settings.EnvironmentConfig

Class implementing environment settings.

log_level = 'WARNING'

Log level identifier.

playback_date = None

As-of date override.

DB_ENV = 'dbenv'

String identifier of the database environment.

default_symbology = None

Symbol domain of the configured environment.

ENV_TYPE = 'unknown'

String identifier of the configured environment.

classmethod init(env_date=None, data_date=None, log_stdout: bool = True, init_traceback: bool = False, enable_sentry: bool = False, repeat_mode: str = 'warning', **env_overrides) sigtech.framework.config.config.ConfiguredEnvironment

Initialise config variables (env_date, etc.) and invoke pre- and post-init callbacks.

Environment overrides:

  • log_level: 'INFO', 'DEBUG', 'WARNING' or 'ERROR' (default is 'WARNING').

  • SIP_ENV env variable (if set).

  • SIP_ENV_OVERRIDE_ env variables (if set) to override specific properties.

Parameters
  • env_date – A python date, datetime or string like 'today' or 'yesterday'. This date sets the calculation date of the calculation engine - no calculation can be made past this date, i.e. this date is used in place of ‘today’ in back-testing.

  • data_date – A python date, datetime or string like 'now', 'today' or 'yesterday'. This date sets the as-of date of the data used. For example, if env_date is set to 1st Jan 2010 and data_date is set to 1st Jan 2020, then calculations will end on 1st Jan 2010 and all the data used will be exactly the same as the data available in the data store on 1st Jan 2020, regardless of any corrections or additions made subsequently.

  • log_stdout – Configuration logging (default is True).

  • init_traceback – Initialisation traceback (default is False).

  • enable_sentry – Enable Sentry for error tracking (default is False).

  • repeat_mode – Specify the behaviour in case the init() is called more than once. 'reinit' runs de_init() and then init() again, 'error' terminates the execution with an error, 'warning' continues the execution with a warning (default is 'warning').

classmethod init_logging(log_stdout: bool = True, log_level: Optional[str] = None, log_print: Optional[bool] = True)

Setup up global logging preferences. Calling this more than once in a process is not advised.

Parameters
  • log_stdout – Configuration logging (default is True).

  • log_level – Log level.

  • log_print – Print the new log status (default is True).

classmethod create(env_date_val: Optional[Union[str, datetime.date, datetime.datetime]] = None, data_date_val: Optional[Union[str, datetime.date, datetime.datetime]] = None, enable_sentry: bool = False, load_env: bool = False, env_file: str = 'env', enable_intraday_memory_saving: bool = True, intraday_memory_saving_location: Optional[str] = None, **env_overrides) sigtech.framework.config.config.ConfiguredEnvironment

Create a new configured environment.

Parameters
  • env_date_val – Environment as-of date (default is 'today').

  • data_date_val – Market data as-of date (default is 'now').

  • enable_sentry – Enable Sentry error tracking (default is False).

  • enable_intraday_memory_saving – Enable automatic purging of intraday data (default is True).

  • intraday_memory_saving_location – If provided, purged intraday data will be saved to this folder, and loaded back when required.

Returns

ConfiguredEnvironment object.

classmethod default_config() Mapping[str, Any]

Return the default values of a configured environment.

classmethod get_attrs()

Return a dict containing the environment attributes.

sigtech.framework.config.settings.details(strings_only=True, additional_info=None, tb=None, chain=True)

Return a sequence of details about the current configuration / environment. Details are pairs of (detail_name, detail_value).

Parameters
  • strings_only (bool) – If set to False, string values are not formatted (default is True).

  • additional_info (sequence) – Sequence of (key_str, value_or_func) tuples to be added to the returned string.

  • tb (traceback) – Traceback to pass to traceback.format_exc() if its default for that arg is to be overridden.

  • chain (bool) – If set to True, traceback string values are formatted (default is True).

sigtech.framework.config.settings.t_cost_register()

Return the default values of transaction costs.

sigtech.framework.config.settings.fx_fwd_points()

Return the default values of FX forward tenors.

sigtech.framework.config.settings.listed_options_greeks()

Return the available option greeks.

sigtech.framework.config.settings.listed_index_options_greeks()

Return the available option greeks.

sigtech.framework.config.settings.equity_index_options_discount_imply()

Return the default settings to imply the discount from vol surface.

sigtech.framework.config.settings.equity_index_options_discount_override_suffix()

Return the default suffix for curve option curves.

sigtech.framework.config.settings.equity_index_options_div_yield_stored()

Return the default settings to compute the dividend yields.

sigtech.framework.config.settings.equity_index_options_use_spot_from_surface()

Return the default settings for setting the spot data from the vol surface.

sigtech.framework.config.settings.upsert_configured_environment_singleton(**kwargs) sigtech.framework.config.config.ConfiguredEnvironment

Upsert the configured environment.