Skip to content

Environment

Run-level settings gathered in one place: data sources, date format, calendar and simulation defaults.

environment

Session configuration.

An :class:Environment groups settings into categories (data sources, data formats, calendar, simulation) and sets them by flat name through set_environment(**kwargs). Its main use is to tell beacon.data.loader.load_data where the market and reference data are, either as in-memory DataFrames or as file paths.

Environment

Environment()

Centralized configuration for a Beacon session.

Settings are grouped into category dataclasses and can be set via set_environment(**kwargs) using flat parameter names.

Attributes:

Name Type Description
data_source

Where the input data comes from.

data

How input data is parsed.

calendar

Calendar conventions.

simulation

Simulation settings.

set_environment

set_environment(**kwargs: Any) -> None

Set one or more parameters by their flat field names.

Names are checked against every category's fields before anything is set, so an unknown name changes nothing. Values are not checked.

Parameters:

Name Type Description Default
**kwargs Any

Field name to new value, e.g. MARKET_DATA_PATH="prices.csv".

{}

Raises:

Type Description
ValueError

If any name is not a field of a settings category.

summary

summary() -> dict[str, dict[str, Any]]

Return all current settings as a nested dict.

Returns:

Name Type Description
dict dict[str, dict[str, Any]]

Category name to {field name: value}. DataFrame values

dict[str, dict[str, Any]]

are left out.

config

Environment configuration dataclasses and the central Environment class.

beacon.data.loader.load_data reads the market and reference data settings and DATE_FORMAT from an Environment. The other fields are stored, and reported by :meth:Environment.summary, but nothing else in Beacon reads them.

DataSourceConfig dataclass

DataSourceConfig(
    MARKET_DATA_PATH: str | None = None,
    REFERENCE_DATA_PATH: str | None = None,
    FUNDAMENTALS_DATA_PATH: str | None = None,
    CORPORATE_ACTIONS_DATA_PATH: str | None = None,
    FX_RATES_DATA_PATH: str | None = None,
    MARKET_DATA: DataFrame | None = None,
    REFERENCE_DATA: DataFrame | None = None,
    FUNDAMENTALS_DATA: DataFrame | None = None,
    CORPORATE_ACTIONS_DATA: DataFrame | None = None,
    FX_RATES_DATA: DataFrame | None = None,
)

Where the input data comes from.

Each dataset can be given either as an in-memory DataFrame or as a file path. When both are set for the same dataset, load_data uses the DataFrame.

Attributes:

Name Type Description
MARKET_DATA_PATH str | None

File to read market data (prices) from.

REFERENCE_DATA_PATH str | None

File to read reference data from.

FUNDAMENTALS_DATA_PATH str | None

File to read fundamentals data from.

CORPORATE_ACTIONS_DATA_PATH str | None

File to read corporate actions from.

FX_RATES_DATA_PATH str | None

File to read FX rates from.

MARKET_DATA DataFrame | None

Market data as a long-form DataFrame.

REFERENCE_DATA DataFrame | None

Reference data as a DataFrame.

FUNDAMENTALS_DATA DataFrame | None

Fundamentals data as a DataFrame.

CORPORATE_ACTIONS_DATA DataFrame | None

Corporate actions as a DataFrame.

FX_RATES_DATA DataFrame | None

FX rates as a DataFrame.

DataConfig dataclass

DataConfig(DATE_FORMAT: str = '%Y-%m-%d')

How input data is parsed.

Attributes:

Name Type Description
DATE_FORMAT str

The strftime format of the market data's dates.

CalendarConfig dataclass

CalendarConfig(
    TRADING_DAYS: int = 252,
    DAY_COUNT_CONVENTION: str = "ACT/365",
)

Calendar conventions.

Attributes:

Name Type Description
TRADING_DAYS int

Trading days per year.

DAY_COUNT_CONVENTION str

Day-count convention name, such as "ACT/365".

SimulationConfig dataclass

SimulationConfig(
    TRANSACTION_COST: float = 0.0,
    FLOAT_TOLERANCE: float = 1e-09,
)

Simulation settings.

Attributes:

Name Type Description
TRANSACTION_COST float

Transaction cost.

FLOAT_TOLERANCE float

Tolerance for floating-point comparisons.

IndexConfig dataclass

IndexConfig()

Reserved for index settings. It holds none and is not part of Environment.

Environment

Environment()

Centralized configuration for a Beacon session.

Settings are grouped into category dataclasses and can be set via set_environment(**kwargs) using flat parameter names.

Attributes:

Name Type Description
data_source

Where the input data comes from.

data

How input data is parsed.

calendar

Calendar conventions.

simulation

Simulation settings.

set_environment
set_environment(**kwargs: Any) -> None

Set one or more parameters by their flat field names.

Names are checked against every category's fields before anything is set, so an unknown name changes nothing. Values are not checked.

Parameters:

Name Type Description Default
**kwargs Any

Field name to new value, e.g. MARKET_DATA_PATH="prices.csv".

{}

Raises:

Type Description
ValueError

If any name is not a field of a settings category.

summary
summary() -> dict[str, dict[str, Any]]

Return all current settings as a nested dict.

Returns:

Name Type Description
dict dict[str, dict[str, Any]]

Category name to {field name: value}. DataFrame values

dict[str, dict[str, Any]]

are left out.