Timpson Gray Allocations Accounting

Version 1.0.0

Private Equity Fund Accounting

Quick Start

Before you begin…

… it’s important to understand a number of concepts regarding events and environments. Without this understanding it’s likely you’ll struggle.


Events

An event (sometimes called lifecycle event) is an operative element that effects change in the books and records of a fund. It is typically associated with a real-world action in the life of the fund such as an investment, a realization, or a transfer of commitment (or interest) etc. A list of events can be found here.

Each event type expects a particular set of supporting data that can be entered in the UI, or loaded from a specially formatted file. The use of an input file allows many events to be processed at one time and is convenient for modelling outcomes.


Environments

The system uses three type of cooperating environments: static, configuration and working

Static Environments

A static environment stores what is typically slowly changing sets of reference data. This data includes partners’ names (and other reasonably constant information); the names of the companies which the fund holds as investments, or in which it might invest; the names and types of the investment instruments (assets) used; the investing entities associated with the fund (including AIV’s); and information about the investment structures available to be used during the life of the fund. The static also contains the partners’ initial commitment information which is used to create the initial closing event when a working environment is initialized.

A UI is provided to allow the user to modify this information.

Configuration Environments

A configuration environment contains information about how the system should interpret the effects of the fund’s activities on the financial ledgers, the portfolio ledgers and the commitment ledgers during processing. For example it would contain the information about which financial ledger accounts to debit and credit during the processing of an expense associated with a particular portfolio company, or the precise ledger accounts to be impacted when a realization event is processed.

Working Environments

Working environments are the core of the system, and contain the books and records of the fund and its investing entities at a particular point in time (i.e. after processing some number of events). With each working environment is associated one static environment and one configuration environment. Two, or more, working environments are considered to be compatible if they share the same static and configuration environments. The concept of compatibility and its importance will be explained below.

As an event (or set of events) is added to the system it is ‘processed into’ one working environment to produce a new working environment with updated information. If the outcome is successful, and as expected, the new working environment can then be used as the starting point for the next event (or set of events). At this point the initially entered event(s) can be considered to have been ‘posted’. (see this warning about the impact of not doing this).

Separating the before and after environments in this way makes it convenient for the user to inspect the effects of an event before accepting (posting) them. The system provide a comparison report page in the UI to allow the comparison to be done in a convenient side-by-side manner.

Furthermore, for certain events the system will produce a temporary :differential working environment containing only the difference between the before and after working environments.

Because the working environments contain only the reference ID’s of it main actors (partners, investing entities, assets & instruments, and structures) the static environment is used to provide extended and human readable information in the UI, and the configuration environment is used to dictate how the working environment should behave during event processing. This separation also means that non-operative information about those actors can be changed during the life of the fund without impacting the data stored in the working environment.

Now a note on compatibility - the system will only allow an event to be processed into an environment to produce an updated environment if the two environments shares the same static and configuration environments. Issues involving incompatibility are unlikely to occur in general usage, but may be experienced in advanced usage situations.


Initialization

A working environment (always :current) is initialized using information stored in an existing static environment (by default, :main, although this can be specified in the UI at initialization time).

The static environment contains basic information about investment vehicles, investment structures, partners, assets, instruments and, importantly, the initial partners’ initial commitment amounts. It does not contain the date of this initial commitment, only amounts. The date of the initial commitment is specified by the user at initialization time and will, with the initial commitment amounts, be used to create the fund’s initial closing event. The initial closing event is always the first event in the life of a fund.

Before the act of initialization a user has the opportunity the create a static environment suited for his or her use, adding partners, vehicles and instruments; defining structures; and establishing initial commitment amounts.

In summary, the act of initialization

  • creates empty :current and :pending working environments (clearing all the financial, portfolio and commitment ledgers);

  • creates an initial closing event using a specified date and the initial commitment amounts from the specified static environment;

  • creates empty financial and portfolio ledgers for each of the investment vehicles specified in the static environment; and post the results to the :pending environment.

This is the only occasion on which automatic posting occurs. (see the warning below)

Within the system, the :current and :pending working environments are considered special. By default, the :current environment is used as the starting point before events are entered; and these events are the processed into the :pending environment.

Because the results will appear only in the :pending environment, they can be examined by the user before a decision is made to post them to the :current environment, which is then used as the basis for the next event (or set of events).

Warning

If you forget to post the :pending results (a manual UI action) it’s likely that you will lose information because any further events will then be processed into an unchanged :current environment. This is probably not what you intend.

Default Initial Data

When the system first starts it will automatically initialize the two working environments :current and :pending, using information from the configuration environment :config/main and the static environment :main, which will also be loaded.

The default :main static environment, initialized and loaded by the system, contains information about

  • 15 prospective partners,
  • 3 investment vehicles (the main investing entity and 2 AIV’s),
  • 3 investment structures (which can be used to describe on a per-event basis the relationship between a partner and an investing entity)
  • 4 prospective portfolio companies,
  • 6 asset instruments (all equity, and obviously unused at this point), and
  • a set of initial commitments of $1,000,000 each by 4 of the 15 prospective partners.

On system startup the default data is used to initialize the fund (represented by the :current and :pending environments), with an initial closing event created for Jan 1, 2018.

Loading the default data and initializing the fund in this way is done as a convenience only. The static data can be easily changed by the user within the UI and used to initialize a new set of working environments which better represent his or her fund structure.

Last updated on 2020-05-19
Edit on GitHub