Trioptima · Capability

Trioptima Portfolio Compression

Workflow capability for automating OTC derivatives portfolio compression cycles via the triReduce API. Designed for derivatives operations teams, risk managers, and treasury systems that need to participate in multilateral compression cycles to reduce gross notional outstanding, lower counterparty risk, and optimize capital requirements under Basel III / CRR2.

Run with Naftiko Capital OptimizationCompressionDerivativesFinancial ServicesPost-Trade ServicesRisk Management

What You Can Do

GET
List cycles — List available compression cycles, optionally filtered by status
/v1/cycles
GET
Get cycle — Get schedule, status, and participant count for a cycle
/v1/cycles/{cycleId}
GET
List trades — List trades submitted for a compression cycle
/v1/cycles/{cycleId}/trades
POST
Submit trades — Submit trade population for compression
/v1/cycles/{cycleId}/trades
GET
Get risk — Get submitted delta ladder risk constraints
/v1/cycles/{cycleId}/risk
POST
Submit risk — Submit delta ladder risk constraints
/v1/cycles/{cycleId}/risk
GET
Get results — Get compression results including notional reduction and new trades
/v1/cycles/{cycleId}/results
POST
Confirm results — Confirm or reject compression results for settlement
/v1/cycles/{cycleId}/results

MCP Tools

list-compression-cycles

List available triReduce compression cycles. Filter by status (open, submission, optimization, completed) or type (cleared, bilateral) to find cycles relevant to the participant.

read-only
get-cycle-details

Get full details for a specific compression cycle including submission deadline, optimization date, settlement date, and participant count.

read-only
list-submitted-trades

List trades submitted by the participant for a given compression cycle.

read-only
submit-trades-for-compression

Submit or replace the participant's trade population for a compression cycle. Provide an array of trades with UTI, notional, currency, maturity, fixed rate, pay/receive direction, and clearing house.

get-risk-constraints

Get the delta ladder risk constraints submitted for a compression cycle.

read-only
submit-risk-constraints

Submit delta ladder (DV01 by tenor bucket) risk constraints for a compression cycle. The optimization algorithm will preserve the aggregate risk profile within the specified tolerances.

get-compression-results

Get compression results for a completed cycle including notional reduction percentage, list of terminated trades, and replacement trades created by the optimization algorithm.

read-only
confirm-compression-results

Confirm acceptance of compression results to proceed to settlement. All cycle participants must confirm before terminations and new trades are processed. Set confirmed=false to reject with an optional comment.

idempotent

APIs Used

trireduce

Capability Spec

portfolio-compression.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "Trioptima Portfolio Compression"
  description: >-
    Workflow capability for automating OTC derivatives portfolio compression cycles
    via the triReduce API. Designed for derivatives operations teams, risk managers,
    and treasury systems that need to participate in multilateral compression cycles
    to reduce gross notional outstanding, lower counterparty risk, and optimize
    capital requirements under Basel III / CRR2.
  tags:
    - Capital Optimization
    - Compression
    - Derivatives
    - Financial Services
    - Post-Trade Services
    - Risk Management
  created: "2026-05-03"
  modified: "2026-05-03"

binds:
  - namespace: env
    keys:
      TRIREDUCE_OAUTH_TOKEN: TRIREDUCE_OAUTH_TOKEN

capability:
  consumes:
    - import: trireduce
      location: ./shared/trireduce-api.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: portfolio-compression-api
      description: "Unified REST API for automating OTC derivatives portfolio compression with triReduce."
      resources:
        - path: /v1/cycles
          name: cycles
          description: "Discover and monitor compression cycles"
          operations:
            - method: GET
              name: list-cycles
              description: "List available compression cycles, optionally filtered by status"
              call: "trireduce.list-cycles"
              with:
                status: "rest.status"
                type: "rest.type"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/cycles/{cycleId}
          name: cycle
          description: "Get details for a specific compression cycle"
          operations:
            - method: GET
              name: get-cycle
              description: "Get schedule, status, and participant count for a cycle"
              call: "trireduce.get-cycle"
              with:
                cycleId: "rest.cycleId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/cycles/{cycleId}/trades
          name: trades
          description: "Trade submission and review"
          operations:
            - method: GET
              name: list-trades
              description: "List trades submitted for a compression cycle"
              call: "trireduce.list-cycle-trades"
              with:
                cycleId: "rest.cycleId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: submit-trades
              description: "Submit trade population for compression"
              call: "trireduce.submit-cycle-trades"
              with:
                cycleId: "rest.cycleId"
                trades: "rest.body.trades"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/cycles/{cycleId}/risk
          name: risk
          description: "Risk constraint management"
          operations:
            - method: GET
              name: get-risk
              description: "Get submitted delta ladder risk constraints"
              call: "trireduce.get-cycle-risk"
              with:
                cycleId: "rest.cycleId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: submit-risk
              description: "Submit delta ladder risk constraints"
              call: "trireduce.submit-cycle-risk"
              with:
                cycleId: "rest.cycleId"
                currency: "rest.body.currency"
                delta_ladder: "rest.body.deltaLadder"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/cycles/{cycleId}/results
          name: results
          description: "Compression results and settlement confirmation"
          operations:
            - method: GET
              name: get-results
              description: "Get compression results including notional reduction and new trades"
              call: "trireduce.get-cycle-results"
              with:
                cycleId: "rest.cycleId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: confirm-results
              description: "Confirm or reject compression results for settlement"
              call: "trireduce.confirm-cycle-results"
              with:
                cycleId: "rest.cycleId"
                confirmed: "rest.body.confirmed"
                comment: "rest.body.comment"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9090
      namespace: portfolio-compression-mcp
      transport: http
      description: "MCP server for AI-assisted OTC derivatives portfolio compression automation."
      tools:
        - name: list-compression-cycles
          description: >-
            List available triReduce compression cycles. Filter by status (open,
            submission, optimization, completed) or type (cleared, bilateral) to
            find cycles relevant to the participant.
          hints:
            readOnly: true
            openWorld: false
          call: "trireduce.list-cycles"
          with:
            status: "tools.status"
            type: "tools.type"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-cycle-details
          description: >-
            Get full details for a specific compression cycle including submission
            deadline, optimization date, settlement date, and participant count.
          hints:
            readOnly: true
            openWorld: false
          call: "trireduce.get-cycle"
          with:
            cycleId: "tools.cycleId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-submitted-trades
          description: "List trades submitted by the participant for a given compression cycle."
          hints:
            readOnly: true
            openWorld: false
          call: "trireduce.list-cycle-trades"
          with:
            cycleId: "tools.cycleId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: submit-trades-for-compression
          description: >-
            Submit or replace the participant's trade population for a compression
            cycle. Provide an array of trades with UTI, notional, currency, maturity,
            fixed rate, pay/receive direction, and clearing house.
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "trireduce.submit-cycle-trades"
          with:
            cycleId: "tools.cycleId"
            trades: "tools.trades"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-risk-constraints
          description: "Get the delta ladder risk constraints submitted for a compression cycle."
          hints:
            readOnly: true
            openWorld: false
          call: "trireduce.get-cycle-risk"
          with:
            cycleId: "tools.cycleId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: submit-risk-constraints
          description: >-
            Submit delta ladder (DV01 by tenor bucket) risk constraints for a
            compression cycle. The optimization algorithm will preserve the
            aggregate risk profile within the specified tolerances.
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "trireduce.submit-cycle-risk"
          with:
            cycleId: "tools.cycleId"
            currency: "tools.currency"
            delta_ladder: "tools.delta_ladder"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-compression-results
          description: >-
            Get compression results for a completed cycle including notional reduction
            percentage, list of terminated trades, and replacement trades created
            by the optimization algorithm.
          hints:
            readOnly: true
            openWorld: false
          call: "trireduce.get-cycle-results"
          with:
            cycleId: "tools.cycleId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: confirm-compression-results
          description: >-
            Confirm acceptance of compression results to proceed to settlement.
            All cycle participants must confirm before terminations and new trades
            are processed. Set confirmed=false to reject with an optional comment.
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "trireduce.confirm-cycle-results"
          with:
            cycleId: "tools.cycleId"
            confirmed: "tools.confirmed"
            comment: "tools.comment"
          outputParameters:
            - type: object
              mapping: "$."