Portfolios

Portfolios

Manages account portfolios which includes all fCash positions and liquidity tokens.

Methods

Events

Governance Methods

Methods

getAssets

Returns the assets of an account
Parameters:
  • account: to retrieve
    Return Values:
  • an array representing the account's portfolio

getAsset

Returns a particular asset via index
Parameters:
  • account: to retrieve
  • index: of asset
    Return Values:
  • a single asset by index in the portfolio

getCashGroup

Returns a particular cash group
Parameters:
  • cashGroupId: to retrieve
    Return Values:
  • the given cash group

getCashGroups

Returns a batch of cash groups
Parameters:
  • groupIds: array of cash group ids to retrieve
    Return Values:
  • an array of cash group objects

searchAccountAsset

Public method for searching for a asset in an account.
Parameters:
  • account: account to search
  • assetType: the type of asset to search for
  • cashGroupId: the cash group id
  • instrumentId: the instrument id
  • maturity: the maturity timestamp of the asset
    Return Values:
  • index of asset)

freeCollateral

Stateful version of free collateral, first settles all assets in the account before returning the free collateral parameters. Generally, external developers should not need to call this function. It is used internally to both check free collateral and ensure that the portfolio does not have any matured assets. Call freeCollateralView if you require a view function.
Parameters:
  • account: address of account to get free collateral for
    Return Values:
  • net free collateral position, an array of the net currency available)

freeCollateralAggregateOnly

No description

freeCollateralView

Returns the free collateral balance for an account as a view functon.
Parameters:
  • account: account in question
    Return Values:
  • net free collateral position, an array of the net currency available)
Error Codes:
  • INVALID_EXCHANGE_RATE: exchange rate returned by the oracle is less than 0

settleMaturedAssets

Settles all matured cash assets and liquidity tokens in a user's portfolio. This method is unauthenticated, anyone may settle the assets in any account. This is required for accounts that have negative cash and counterparties need to settle against them. Generally, external developers should not need to call this function. We ensure that accounts are settled on every free collateral check, cash settlement, and liquidation.
Parameters:
  • account: the account referenced

settleMaturedAssetsBatch

Settle a batch of accounts. See note for settleMaturedAssets, external developers should not need to call this function.
Parameters:
  • accounts: an array of accounts to settle

Events

SettleAccount

Emitted when an account has its portfolio settled, only emitted if the portfolio has changed
Parameters:
  • account: the account that had its porfolio modified

SettleAccountBatch

Emitted when an account has its portfolio settled, all accounts are emitted in the batch
Parameters:
  • accounts: batch of accounts that may have been settled

NewCashGroup

Emitted when a new cash group is listed
Parameters:
  • cashGroupId: id of the new cash group

UpdateCashGroup

Emitted when a new cash group is updated
Parameters:
  • cashGroupId: id of the updated cash group

SetMaxAssets

Emitted when max assets is set
Parameters:
  • maxAssets: the max assets a portfolio can hold

SetHaircuts

Notice for setting haircut amount for liquidity tokens
Parameters:
  • liquidityHaircut: amount of haircut applied to liquidity token claims
  • fCashHaircut: amount of negative haircut applied to fcash
  • fCashMaxHaircut: max haircut amount applied to fcash

Governance Methods

setHaircuts

Sets the haircut amount for liquidity token claims, this is set to a percentage less than 1e18, for example, a 5% haircut will be set to 0.95e18.
Parameters:
  • liquidityHaircut: amount of negative haircut applied to token claims
  • fCashHaircut: amount of negative haircut applied to fcash
  • fCashMaxHaircut: max haircut amount applied to fcash

setMaxAssets

Set the max assets that a portfolio can hold. The default will be initialized to something like 10 assets, but this will be increased as new markets are created.
Parameters:
  • maxAssets: new max asset number

createCashGroup

An cash group defines a collection of similar fCashs where the risk ladders can be netted against each other. The identifier is only 1 byte so we can only have 255 cash groups, 0 is unused.
Parameters:
  • numMaturities: the total number of maturitys
  • maturityLength: the maturity length (in seconds)
  • precision: the discount rate precision
  • currency: the token address of the currenty this fCash settles in
  • cashMarket: the rate oracle that defines the discount rate

updateCashGroup

Updates cash groups. Be very careful when calling this function! When changing maturities and maturity sizes the markets must be updated as well.
Parameters:
  • cashGroupId: the group id to update
  • numMaturities: this is safe to update as long as the discount rate oracle is not shared
  • maturityLength: this is only safe to update when there are no assets left
  • precision: this is only safe to update when there are no assets left
  • currency: this is safe to update if there are no assets or the new currency is equivalent
  • cashMarket: this is safe to update once the oracle is established
Last modified 1mo ago