diff --git a/fi1/README.md b/fi1/README.md index 2162ad7..35df69d 100644 --- a/fi1/README.md +++ b/fi1/README.md @@ -1,13 +1,31 @@ -This exercise is to model a pensions system. +# This exercise is to model a pensions system. ## original text from the client (named ACME) - ACME operates a Master Trust Pension. A ACME pension consist of units of Assets held on behalf of the member. These units, and any associated cash, are recorded in an internal ledger. The actual units of each asset are aggregated into a single holding held by an external Asset Custodian on behalf of ACME. Asset units are bought and sold on behalf of members. The process of buying and selling assets takes several days trades are only placed periodically and take several days to settle. The basic process for buying assets is: -(TODO mermaid) + + + +```mermaid +flowchart TD + member([Member])-- Invest cash -->create_buy_trade + create_buy_trade[Create buy trade]-->aggregate + aggregate[Aggregate into an external buy trade]-.->external_buy_trade + external_buy_trade[Place an external buy trade]-->buy_assets + buy_assets[Buy assets]-->custodian + custodian([Asset custodian]) -. Trade priced .-> move_to_pots1 + custodian -. Trade settled .-> move_to_pots2 + move_to_pots1[Move assets to pots]-->move_cash_to_custodian + move_cash_to_custodian[Move cash from pots to custodian account] + move_to_pots2[Move assets to pots] +``` + +> Dotted arrow is delayed operation +> Round shape indicates an actor + The platform is intended to support up to 5 million members. The following are the meanings of terms used by ACME: • Internal Account - a logical account within the internal ledger that records the holding of an amount of cash or units of assets • Pot - a collection of Internal Accounts that belong to a Member, ACME, an external body, e.g. an Asset Custodian