First public release of the Solstice simulation framework
Solstice is a flexible open source economic network simulator. Its primary outcomes are quantitative analyses of the behavior of economic systems under uncertainty. In this post we provide a first overall description of Solstice to accompany the first public release.
Modeling economic networks and their dynamics.
Economic networks are the primary abstractions though which we can conceptualize the state (condition) and evolution of economic interactions. This simply reflects the fact that human economies are quite fundamentally systems of interacting actors (or nodes in a network) with transient or more permanent relations between them.
In practice the network character of an economy is frequently suppressed or under-emphasized and does not play a particularly important role. This may be for reasons of expediency (inadequacy of data characterising the network in detail) or because the objectives of the analysis can be obtained without detailed micro-data that capture network properties (e.g., it may be sufficient to work with sectoral aggregates or “representative” agents).
The Solstice simulation framework
Solstice is a flexible open source economic network simulator. Its primary outcomes are quantitative analyses of the behavior of economic systems under uncertainty. It can be used both as a production tool in a portfolio / risk management context or as a research tool. The objective is to provide a performant, easily usable, extensible simulation framework to support diverse economic network analysis tasks. The framework is envisaged to be useful both for research and production purposes.
In this post we provide a first overall description of Solstice to accompany the first public release (version 0.5). Further posts and documentation will be provided in due course.
Extensibility and Modularity
A key design aspect of Solstice is a modular design that aims to allow significant flexibility in the types of economic networks that can be represented and studied. This is important, as it addresses the diverse (and ever growing) circumstances that can be gainfully explored using a network frame of mind, but also allows integrating with other analytic paradigms.
Extensibility is relevant along several dimensions:
- the type of network shapes represented (e.g. in terms of types of nodes and interactions)
- the type of network dynamics simulated (the sources of uncertainty and types of risk events or other dynamic behavior)
- the type of management objectives (KPI’s or risk metrics) that the user of Solstice wants to achieve
- the type of reporting desired
An important element in pursuing the extensibility strategy is to borrow some design choices from so-called ECS or Entity-Component-Systems architectures. ECS is an important, relatively recent, software development paradigm that has been adopted primarily in the context of game engines. It is an alternative to classical object-oriented design. Solstice is adopting some principles popularized by ECS: Entities are economic nodes, their attributes are expressed as component objects. This pattern is termed composition over inheritance and is an effective way to enable a large set of
Linkage to traditional approaches
Another motivation and design constraint is to link novel network based approaches to existing analytic frameworks used in current risk and portfolio management analyses. As alluded to above, many such activities involve an underlying minimalistic representation or abstraction of the actual operating economic network. For example a bank or an asset manager portfolio is the collection of certain first neighbors of the managing entity (e.g., the clients or investee companies)
From Research to Production
Solstice is suitable for posing and analysing research like questions: e.g., what if the network is modified in this or that way. But it also enables to standardize on certain analytical calculations and producing data to support a variety of reports that can be embedded in the decision making workflows. Solstice does not generate end-user reports itself. In this respect we implement “separation of duties” as follows: Solstice provides well annotated numerical output (currently in the form of JSON objects) that can then be ingested and analysed (including visualization) using other tools.
Focus on Computational Performance
Another element of Solstice worth highlighting as it shapes various choices is the focus on computational performance. While not all Solstice use cases need pose a significant computational burden, this can be the case when e.g. simulating a large network with many interactions. Solstice addresses this challenge in the first instance through the choice of programming language and associated optimized computational libraries, which are suitable for heavy numerical calculations. The roadmap envisages further performance gains by support concurrency.
More (and more mathematical) details about Solstice are provide with the technical documentation. Here we provide a brief overview of the core components.
Overview of Core Components
- A representation of economic entities as property graphs (nodes and edges with associated attributes). Entities are, on the one hand, characterized by the nature of their quantitative components and attributes and relations with other entities and, on the other, by the range of possible update operations.
- A representation of network-wide factors and dynamics drivers as macro variables
- Sources of uncertainty (both macro (system-wide) and idiosyncratic (entity-specific).
- A discrete temporal grid where future states of the economic network and (any) macro variables are modeled
- Network evolution along the temporal grid due to both deterministic and stochastic elements that follows by a variety of risk distributions / models using potentially a combination of model components (satellite models).
- Bottom up composition of network state changes using elementary “system updates”.
- Ability to condition on specific realizations of (in particular) macro factors, which emulates scenario analysis / stress testing
- Introducing special entities that interact with the network in systemic ways (e.g. financial intermediaries, sovereigns or regulatory entities) with specialized internal states
- Collection of sampling statistics of network evolution and distillation of useful risk metrics and reports.
The current release (0.5) of Solstice is the first public release. Users can already use it to configure their development environment and explore the structure of the framework but the current release is not yet ready for production use cases (alpha release).
Subsequent releases of Solstice will see both an expansion of computational modules and capabilities and more streamlined access to standardized calculations.
To enable effective use of the Solstice framework three types of documentation are developed:
- Code documentation that is primarily generated from the distribution itself (doxygen)
- Mathematical documentation that is provided as pdf files that accompany the distribution (technical manual).
- User documentation that is provided online
The broader toolkit
Solstice is part of the overall open source toolkit developed by Open Risk and aims to interoperate where applicable. For example network / portfolio data can be obtained from equinox or openNPL servers, concentration risk and transitional phenomena can be analysed using dedicated libraries etc.