# Index Architecture

Information on Phuture's aggregated design

## Optimised Rebalancing

Phuture's open design requires an architecture that can support any number of indices created upon it. Rebalancing each individual index was not a viable option as it would lead to $O(n*m)$ computational complexity. Meaning that for each index created $n*m$ additional operations are required to return to a balance state. The number of transactions required to bring the system to balance would eventually become unmanageable.

To solve this problem, we reengineered our index architecture. At the highest level all indices are grouped into homogenous pools of assets and assigned a weight based on the asset's weight in each index. The platform can now rebalance between assets pools on a global level as opposed to rebalancing between assets on a local index level. This immediately reduces computational complexity to just $O(m)$when indices with new assets are created, and $O(1)$when indices with existing assets are created. A new asset is defined as one that is not currently held on the Phuture protocol.

When a rebalancing transaction occurs between two asset pools it affects every index that holds either of those assets. Ultimately, moving the protocol towards a state of balance.

## Optimised Asset Productivity

In addition to offering superior rebalancing efficiency, our aggregated design improves asset productivity. In order to push assets off platform to generate additional yield, a reserve level must be maintained on Phuture to support rebalancing and redemptions. Maintaining reserves on a per index basis would require an increasing number of transactions as more indices are created. In addition, smaller indices would not benefit from yield optimisation because their assets would need to be reserved for redemptions and rebalancing.

Instead, Phuture maintains one reserve for each asset pool on the platform. This dislocates the number of transactions required to facilitate asset optimisation from the number of new indices. More importantly, it ensures that regardless of the size of an index it can benefit from additional yield. This is due to the fact that yield is shared pro rata across the indices that make up an asset pool.