> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Public API

> The framework's public level and measure interfaces in the api/cube packages, with their accessors and the types they return.

The netting-set analytics framework exposes its public API through the `api/cube/` and `api/cube/measures/` packages. These interfaces allow consuming cubes and downstream code to access levels and measures by type-safe references without depending on internal strings.

## What interfaces are exposed?

| Interface | Accessed via | Purpose |
| - | - | - |
| `INettingSetAnalyticsLevels` | Extended by consuming cube level interfaces | Central levels API grouping all framework-level identifiers |
| `ISpecificLevels` | `INettingSetAnalyticsLevels.specific()` | Framework-specific level identifiers (time point, netting set, collateral flags) |
| `IExposureMeasures` | Base interface | Base interface for any measure family that provides exposure vectors |
| `IExposureVectorMeasures` | `IExposureMeasures.exposureVectorsMeasures()` | Exposure vectors by side (bank and counterparty) |
| `IExposureMetrics` | `IExposureAndMetricsMeasures.exposureMetrics()` | Scalar exposure metrics (PFE, EE, ENE, ES, scenario index and name) |
| `IGrossMeasures` | Base interface for gross measure families | Combines base gross exposure, exposure vectors, and inframarginal exposure |
| `IBaseGrossExposureMeasures` | `IGrossMeasures.baseGrossExposureMeasures()` | Initial MtM, MtF sum, cumulative cashflow, and their scenario-level variants |
| `INettedMeasures` | Base interface for netted measure families | Combines exposure vectors and inframarginal exposure for the netted family |
| `ICollateralizedMeasures` | Base interface for collateralized measure families | Groups independent amount and per-algorithm exposure measures |
| `IIndependentAmountMeasures` | `ICollateralizedMeasures.independentAmountMeasures()` | Independent amount measure |
| `INettingSetParametersMeasures` | Exposed by consuming cubes' measures facades | Typed accessors for the built-in netting-agreement (CSA and ISDA) parameters, plus configured additional parameters by name |
| `ICollateralizedExposureByAlgoMeasures` | `ICollateralizedMeasures.exposureMeasuresByAlgo(algo)` | Exposure vectors, inframarginal vectors, and tech collateral measures for a specific algorithm |
| `ITechCollateralMeasures` | `ICollateralizedExposureByAlgoMeasures.techCollateralMeasures()` | Collateral balance vector, scenario-level balance, and raw data points |
| `IInframarginalExposureMeasures` | Base interface | Inframarginal exposure vector accessor |
| `IInframarginalExposureAndMetricsMeasures` | Extends `IInframarginalExposureMeasures` | Adds inframarginal exposure metrics and incremental contributions |
| `IExposureAndMetricsMeasures` | Extends `IExposureMeasures` | Adds exposure metrics to the exposure vector accessor |

## Accessor reference

### `INettingSetAnalyticsLevels`

The central levels API. It groups all framework-level identifiers and delegates to the universal common level APIs. Consuming cubes extend `INettingSetAnalyticsLevels` to add their own cube-specific levels. For example, `IPfeCubeLevels extends INettingSetAnalyticsLevels`.

| Accessor | Returns | Notes |
| - | - | - |
| `dates()` | `IAsOfDateLevels` | As-of date levels |
| `confidenceLevels()` | `IConfidenceLevelLevels` | Confidence level simulation dimension |
| `trades()` | `ITradeAttributesLevels` | Trade descriptor levels |
| `scenarios()` | `IScenariosLevels` | Scenario index and name levels |
| `counterparties()` | `ICounterpartiesLevels` | Counterparty hierarchy levels |
| `specific()` | `ISpecificLevels` | Framework-specific level identifiers |

### `ISpecificLevels`

Provides the framework-specific level identifiers for dimensions unique to the netting-set analytics framework.

| Accessor | Returns | Notes |
| - | - | - |
| `timePoint()` | `LevelIdentifier` | Simulation Dates > Time Point |
| `isIncludedInBreakDate()` | `LevelIdentifier` | Is Included In Break Date > Included In Break Date |
| `independentAmountCurrency()` | `LevelIdentifier` | Collateral > Independent Amount Currency |
| `independentAmountMaturity()` | `LevelIdentifier` | Collateral > Independent Amount Maturity |
| `nettingSet()` | `LevelIdentifier` | Netting > Netting Set ID |
| `breakDate()` | `LevelIdentifier` | NettingAnalyticsTradeAttributes > Break Date |

### `IExposureMeasures`

Base interface for any measure family that provides exposure vectors.

| Accessor | Returns | Description |
| - | - | - |
| `exposureVectorsMeasures()` | `IExposureVectorMeasures` | Access to exposure vectors by side |

### `IExposureVectorMeasures`

Provides access to exposure vectors by side.

| Accessor | Returns | Description |
| - | - | - |
| `getExposureVectors(Side side)` | `NamedCopperMeasure` | Exposure vector for the given side |
| `getExposureVectorsScenarioLevel(Side side)` | `NamedCopperMeasure` | Scenario-level exposure vector for the given side |
| `getBankExposureVector()` | `NamedCopperMeasure` | Convenience method for the bank-side exposure vector |
| `getCptyExposureVector()` | `NamedCopperMeasure` | Convenience method for the counterparty-side exposure vector |
| `getBankExposureVectorScenarioLevel()` | `NamedCopperMeasure` | Convenience method for the bank-side scenario-level vector |
| `getCptyExposureVectorScenarioLevel()` | `NamedCopperMeasure` | Convenience method for the counterparty-side scenario-level vector |

### `IExposureMetrics`

Provides access to scalar exposure metrics.

| Accessor | Returns | Description |
| - | - | - |
| `getExposureMetric(ExposureMetric exposureMetric)` | `NamedCopperMeasure` | Metric for the given `ExposureMetric` enum value |
| `getPotentialFutureExposure()` | `NamedCopperMeasure` | PFE metric |
| `getExpectedExposure()` | `NamedCopperMeasure` | EE metric |
| `getExpectedNegativeExposure()` | `NamedCopperMeasure` | ENE metric |
| `getExpectedShortfall()` | `NamedCopperMeasure` | ES metric |
| `getPfeIndex()` | `NamedCopperMeasure` | PFE Scenario Index metric |
| `getPfeScenarioName()` | `NamedCopperMeasure` | PFE Scenario Name metric |

All convenience methods return `null` if the underlying metric is not registered.

### `IGrossMeasures`

Combines exposure vectors and inframarginal exposure for the gross measure family. `IGrossMeasures` extends `IExposureMeasures` and `IInframarginalExposureMeasures`, providing:

* Base gross exposure accessors via `baseGrossExposureMeasures()`.
* Exposure vector accessors via the inherited `exposureVectorsMeasures()`.
* Inframarginal exposure vector accessors via the inherited `inframarginalExposureVectorsMeasures()`.

| Accessor | Returns | Description |
| - | - | - |
| `baseGrossExposureMeasures()` | `IBaseGrossExposureMeasures` | Initial MtM, MtF sum, cumulative cashflow, and scenario-level variants |

### `IBaseGrossExposureMeasures`

Provides the base gross exposure measures.

| Accessor | Returns | Description |
| - | - | - |
| `initialMtm()` | `NamedCopperMeasure` | Initial mark-to-market value |
| `mtmSum()` | `NamedCopperMeasure` | Sum of MtF values |
| `cumulativeCashflow()` | `NamedCopperMeasure` | Cumulative cashflow |
| `mtmSumScenarioLevel()` | `NamedCopperMeasure` | MtF sum at scenario level |
| `cumulativeCashflowScenarioLevel()` | `NamedCopperMeasure` | Cumulative cashflow at scenario level |

### `INettedMeasures`

Combines exposure vectors and inframarginal exposure for the netted measure family. `INettedMeasures` extends `IExposureMeasures` and `IInframarginalExposureMeasures`, providing:

* Exposure vector accessors via the inherited `exposureVectorsMeasures()`.
* Inframarginal exposure vector accessors via the inherited `inframarginalExposureVectorsMeasures()`.

`INettedMeasures` has no own-method accessors beyond the inherited groups.

### `ICollateralizedMeasures`

Groups all collateral-related measures. `ICollateralizedMeasures<A>` is a generic interface where `A` is the per-algorithm measure type.

| Accessor | Returns | Description |
| - | - | - |
| `independentAmountMeasures()` | `IIndependentAmountMeasures` | Independent amount measure |
| `collateralizedExposuresByAlgoMeasures()` | `Map<String, A>` | All per-algorithm exposure measures keyed by algorithm name |
| `exposureMeasuresByAlgo(String algo)` | `A` | Collateralized exposure measures for the named algorithm |

### `INettingSetParametersMeasures`

Provides typed accessors for the netting-agreement (CSA and ISDA) parameters. The built-in parameters each have a dedicated accessor; configured, non-default parameters are reached by name through `additionalParameters(String)`.

| Accessor | Returns | Description |
| - | - | - |
| `initialCollateral()` | `NamedCopperMeasure` | Initial collateral balance |
| `bankThreshold()` / `cptyThreshold()` | `NamedCopperMeasure` | Bank-side / counterparty-side collateral threshold |
| `bankMinTransferAmount()` / `cptyMinTransferAmount()` | `NamedCopperMeasure` | Bank-side / counterparty-side minimum transfer amount |
| `bankHoldingPeriod()` / `cptyHoldingPeriod()` | `NamedCopperMeasure` | Bank-side / counterparty-side margin period of risk, in days |
| `bankIndependentAmount()`, `bankScaleFactor()`, `bankFloor()` | `NamedCopperMeasure` | Bank-side independent amount constant, scale factor, and floor |
| `cptyIndependentAmount()`, `cptyScaleFactor()`, `cptyFloor()` | `NamedCopperMeasure` | Counterparty-side independent amount constant, scale factor, and floor |
| `hairCut()` | `NamedCopperMeasure` | Haircut scale factor applied to exposure values |
| `parametersCurrency()` | `NamedCopperMeasure` | Currency of the CSA threshold and minimum-transfer-amount parameters |
| `hasNettingAgreement()` | `NamedCopperMeasure` | Whether the netting set has an actual agreement (`false` for the default `N/A` id) |
| `additionalParameters(String name)` | `NamedCopperMeasure` | Measure for a configured, non-default parameter, by its field name; throws `IllegalArgumentException` otherwise |

### `IIndependentAmountMeasures`

Provides the independent amount measure.

| Accessor | Returns | Description |
| - | - | - |
| `independentAmount()` | `NamedCopperMeasure` | Independent amount |

### `ICollateralizedExposureByAlgoMeasures`

Provides exposure vectors, inframarginal vectors, and technical collateral measures for a specific collateral algorithm. `ICollateralizedExposureByAlgoMeasures` extends `IExposureMeasures` and `IInframarginalExposureMeasures`, providing:

* Exposure vector accessors via the inherited `exposureVectorsMeasures()`.
* Inframarginal exposure vector accessors via the inherited `inframarginalExposureVectorsMeasures()`.
* Technical collateral measures via `techCollateralMeasures()`.

| Accessor | Returns | Description |
| - | - | - |
| `techCollateralMeasures()` | `ITechCollateralMeasures` | Collateral balance vector, scenario-level balance, and raw collateral data points |

### `ITechCollateralMeasures`

Provides internal technical collateral measures.

| Accessor | Returns | Description |
| - | - | - |
| `collateralBalance()` | `NamedCopperMeasure` | Collateral balance vector |
| `collateralBalanceScenarioLevel()` | `NamedCopperMeasure` | Scenario-level collateral balance |
| `collateralDataPoints()` | `NamedCopperMeasure` | Raw collateral data points |

### `IInframarginalExposureMeasures`

Base interface providing inframarginal exposure vector access.

| Accessor | Returns | Description |
| - | - | - |
| `inframarginalExposureVectorsMeasures()` | `IExposureVectorMeasures` | Inframarginal exposure vectors |

### `IInframarginalExposureAndMetricsMeasures`

Extends `IInframarginalExposureMeasures` with inframarginal metrics and incremental contributions. In addition to the inherited `inframarginalExposureVectorsMeasures()`, it provides:

| Accessor | Returns | Description |
| - | - | - |
| `inframarginalExposureMetrics()` | `IExposureMetrics` | Inframarginal exposure metrics |
| `incrementalContributions()` | `IExposureMetrics` | Incremental contribution metrics |

### `IExposureAndMetricsMeasures`

Extends `IExposureMeasures` with exposure metrics. In addition to the inherited `exposureVectorsMeasures()`, it provides:

| Accessor | Returns | Description |
| - | - | - |
| `exposureMetrics()` | `IExposureMetrics` | Scalar exposure metrics (PFE, EE, ENE, ES, scenario index and name) |

## Related pages

* [Enums](/solutions/enterprise-risk-suite/1.0/libs/netting-set-analytics/reference/enums.md)
* [Exposure measures](/solutions/enterprise-risk-suite/1.0/libs/netting-set-analytics/developer-guide/cube/exposure-measures.md)
* [Exposure metrics](/solutions/enterprise-risk-suite/1.0/libs/netting-set-analytics/developer-guide/cube/exposure-metrics.md)
* [Dimensions](/solutions/enterprise-risk-suite/1.0/libs/netting-set-analytics/developer-guide/cube/dimensions.md)
