Use Case Position Service
Position Services
Position services are used in a number of scenarios from web-store inventory list to complex asset iformation for gobal banking:
- Posstion list for asset asset trading
- real-time market risk
- stock lending and repo (especially during controls on short selling)
- Stock ladders
- trade matching
- working capital/ cash-in-hand
Traditionally positions would have been calculated by aggregating positions over a number of trading books, but the high number of queries can presented an unacceptble load on the system-of-record, and potentially lock-serialisation. For complex businesses this need is often addressed by using a caching service that is updated with each trade.
Hiperspace Cube solution
Hiperspace Cube functionality enables read-time delta aggregation as the inventory of assets are bought and sold, with aggregates at every level of book and contry holding.
Type | │ | When | │ | Trigger | │ | Notes |
---|---|---|---|---|---|---|
Full | │ | Often Daily | │ | Scheduled | │ | reaggregates the base level of Cube fact |
Delta | │ | Continuous | │ | Whenever a fact changes | │ | aggregates the facts and summaries affected by the change to the fact, but no others |
Dependency | │ | Continuous | │ | Whenever a @DeltaIndex element references by a fact changes |
│ | aggregates the facts and summaries affected by the change to a fact dependency, but no others |
Related | │ | Frequently | │ | Whenever a @DeltaIndex element related is some way to fact changes |
│ | aggregates the facts and summaries affected by the change, but no others |
Dimension | │ | Frequently | │ | Change to a dimension with a @DeltaIndex changes |
│ | Clears any summaries that might now be invalid due to restructure |
│ | as needed | │ | read | │ | Any summaries that are not currently stored are recalculated from base facts |
This HiLang
schema maintains a cube for Instrument and quantity by country holding the asset:
@CubeDimension
entity Country (ISO : String) [Instruments : Instrument (Country = this)];
@CubeDimension, Versioned
entity Instrument
(ISIN : String)
{Country : Country, Product : Product}
[Price : Price, Market = Price.Market];
@CubeFact, DeltaIndex
entity Trade : Versioned
(id : Int64)
{
@CubeMeasure(Aggregate.Sum)
Quantity : Decimal,
Instrument : Instrument,
Portfolio : Portfolio,
Account : Account
}
TheHiperspace cubes hold the aggregate total with a time dimension
Hiperspace Cube aggregation obviates the need for seperate position servers and caches because hiperspace elements are stored using the fastest durable storage available with KV-SDD devices