Morningstar Scenario Analysis API

Stress-test portfolios against historical and hypothetical market scenarios using Morningstar risk engines.

Operations 10

GET /direct-web-services/v1/scenario-analysis/risk-models Get risk models #
GET /direct-web-services/v1/scenario-analysis/scenarios Get scenarios #
POST /direct-web-services/v1/scenario-analysis/returns Calculate returns #
POST /direct-web-services/v1/scenario-analysis/metrics Generate metrics #
GET /scenario-analysis/scenarios Get all predefined scenarios #
POST /scenario-analysis/calculate-cumulative-return Calculate cumulative returns forecast for funds based on predefined or custom macro schock scenarios #
POST /scenario-analysis/calculate-drawdown Calculate drawdown forecast for a fund based on a predefined or custom macro shock scenarios #
POST /scenario-analysis/calculate-metrics Calculate metrics forecast for a fund based on predefined or custom macro shock scenarios #
POST /scenario-analysis/calculate-period-return Calculate returns forecast for a fund based on predefined or custom macro shock scenarios #
POST /scenario-analysis/calculate-ten-k-growth Calculate growth forecast for a $10k investment in a fund based on a predefined or custom macro/market shock scenarios #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/morningstar-scenario-analysis-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

morningstar-scenario-analysis-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: Authorization Tokens Accounts Scenario Analysis API
  description: 'Use the `oauth` endpoint to generate the secure, time-limited JSON Web Tokens (JWTs) used to authorize access to APIs and components.</br></br>

    To request a token, click Authorize and enter the following credentials:


    * Username - Your Client ID.

    * Password - Your Client Secret.'
servers:
- url: https://www.us-api.morningstar.com/token
  description: PROD US
- url: https://www.emea-api.morningstar.com/token
  description: PROD EMEA
- url: https://www.apac-api.morningstar.com/token
  description: PROD APAC
security:
- BasicAuth: []
tags:
- name: Scenario Analysis
paths:
  /direct-web-services/v1/scenario-analysis/risk-models:
    get:
      summary: Get risk models
      responses:
        '200':
          $ref: '#/components/responses/ResponseGetRiskModels'
        '400':
          $ref: '#/components/responses/ResponseBadRequest'
      operationId: getRiskModels
      tags:
      - Scenario Analysis
      description: Retrieves the list of available risk models. The response includes a risk model ID, which can be used to request the scenarios defined for that model.
  /direct-web-services/v1/scenario-analysis/scenarios:
    get:
      summary: Get scenarios
      parameters:
      - name: riskModelId
        in: query
        description: Specifies the risk model to query.
        required: true
        schema:
          type: string
        examples:
          riskModelIdExample1:
            summary: Global Equity Proprietary Factor Model (USD)
            value: morn-glb-eq-usd
      - name: scenarioType
        in: query
        description: Specifies the scenario type to filter results by.
        schema:
          $ref: '#/components/schemas/InputScenarioType'
          enum:
          - HistoricalEvent
          - MarketShock
      responses:
        '200':
          $ref: '#/components/responses/ResponseGetScenarios'
        '400':
          $ref: '#/components/responses/ResponseBadRequest'
      operationId: getScenarios
      tags:
      - Scenario Analysis
      description: 'Retrieves the list of scenarios defined for the specified risk model.  The `HistoricalEvent`scenario type is returned by default. Use the optional `scenarioType` query parameter to override the default setting and return a different scenario type.

        The response includes a scenario ID, which can be used to calculate returns or generate portfolio and investment metrics based on the conditions defined for the scenario.'
  /direct-web-services/v1/scenario-analysis/returns:
    post:
      summary: Calculate returns
      responses:
        '200':
          $ref: '#/components/responses/ResponseCalculateReturn'
        '400':
          $ref: '#/components/responses/ResponseBadRequest'
      operationId: calculateReturns
      tags:
      - Scenario Analysis
      description: Calculates scenario returns for the specified investments and portfolios based on the conditions defined for one or more scenarios.
      requestBody:
        $ref: '#/components/requestBodies/RequestCalculateReturn'
  /direct-web-services/v1/scenario-analysis/metrics:
    post:
      summary: Generate metrics
      responses:
        '200':
          $ref: '#/components/responses/ResponseGenerateMetrics'
        '400':
          $ref: '#/components/responses/ResponseBadRequest'
      operationId: generateMetrics
      tags:
      - Scenario Analysis
      description: Generates performance metrics for the specified portfolios and investments based on the conditions defined for one or more scenarios. Supported metrics include Alpha, Return, Max Drawdown, Standard Deviation, and Tracking Error.
      requestBody:
        $ref: '#/components/requestBodies/RequestGenerateMetrics'
  /scenario-analysis/scenarios:
    get:
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required.
        '403':
          description: You do not have access permission..
        '404':
          description: Not found.
        '500':
          description: Internal server error.
      summary: Get all predefined scenarios
      description: Get a list of all predefined scenarios. The response will include the unique ID for each scenario.  You use the ID with other endpoints to return information based on that scenario. Only scenarios that your account is enabled for will be returned.
      operationId: get_scenarios
      parameters:
      - in: query
        description: Unique identifier of a risk model
        name: risk-model-id
        schema:
          type: string
          default: morn-glb-eq-usd
      tags:
      - Scenario Analysis
  /scenario-analysis/calculate-cumulative-return:
    post:
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required.
        '403':
          description: You do not have access permission.
        '404':
          description: Not found.
        '500':
          description: Internal server error.
      summary: Calculate cumulative returns forecast for funds based on  predefined or custom macro schock scenarios
      description: Based on a specific risk model and predefined or custom macro shock scenarios, calculate daily cumulative returns forecast for funds.  You can include multiple scenarios and one fund in the request, or one scenario and multiple funds. Multiple scenarios and multiple funds cannot be sent in the same request. The response enables you to understand the impact on fund cumulative returns if significant market events are repeated.
      operationId: post_cumulative
      requestBody:
        $ref: '#/components/requestBodies/ScenarioAnalysisModel'
      tags:
      - Scenario Analysis
  /scenario-analysis/calculate-drawdown:
    post:
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required.
        '403':
          description: You do not have access permission..
        '404':
          description: Not found.
        '500':
          description: Internal server error.
      summary: Calculate drawdown forecast for a fund based on a predefined or custom macro shock scenarios
      description: Based on a specific risk model and predefined or custom macro shock scenarios, calculate daily drawdown forecast for a fund. You can include multiple scenarios and one fund in the request, or one scenario and multiple funds. Multiple scenarios and multiple funds cannot be sent in the same request. The response enables you to understand the impact on the fund drawdown if significant market events are repeated.
      operationId: post_drawdown
      requestBody:
        $ref: '#/components/requestBodies/ScenarioAnalysisModel'
      tags:
      - Scenario Analysis
  /scenario-analysis/calculate-metrics:
    post:
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required.
        '403':
          description: You do not have access permission..
        '404':
          description: Not found.
        '500':
          description: Internal server error.
      summary: Calculate metrics forecast for a fund based on predefined or custom macro shock scenarios
      description: Based on a specific risk model and predefined or custom macro shock scenarios, calculate metrics forecast for a fund. You can include multiple scenarios and one fund in the request, or one scenario and multiple funds. Multiple scenarios and multiple funds cannot be sent in the same request. The response enables you to understand the impact on the fund metrics if significant market events are repeated.
      operationId: post_metrics
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Metrics'
        required: true
      tags:
      - Scenario Analysis
  /scenario-analysis/calculate-period-return:
    post:
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required.
        '403':
          description: You do not have access permission..
        '404':
          description: Not found.
        '500':
          description: Internal server error.
      summary: Calculate returns forecast for a fund based on predefined or custom macro shock scenarios
      description: Based on a specific risk model and predefined or custom macro shock scenarios, calculate  returns for a fund during different time periods.  You can include multiple scenarios and one fund in the request, or one scenario and multiple funds. Multiple scenarios and multiple funds cannot be sent in the same request.  The response enables you to understand the impact on fund returns if significant market events are repeated.
      operationId: post_period_return
      requestBody:
        $ref: '#/components/requestBodies/ScenarioAnalysisModel'
      tags:
      - Scenario Analysis
  /scenario-analysis/calculate-ten-k-growth:
    post:
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required.
        '403':
          description: You do not have access permission..
        '404':
          description: Not found.
        '500':
          description: Internal server error.
      summary: Calculate growth forecast for a $10k investment in a fund based on a predefined or custom macro/market shock scenarios
      description: Based on a specific risk model and predefined or custom macro/market shock scenarios, calculate growth for a $10k investment in a fund. You can include multiple scenarios and one fund in the request, or one scenario and multiple funds. Multiple scenarios and multiple funds cannot be sent in the same request. The response returns a series investment results forecasts. The forecast frequency depends on the type of scenario -  predefined (daily); macro shock (monthly) market shock (weekly).
      operationId: post_ten_k_growth
      requestBody:
        $ref: '#/components/requestBodies/ScenarioAnalysisModel'
      tags:
      - Scenario Analysis
components:
  schemas:
    InputInvestment:
      required:
      - id
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: Unique identifier of an investment.
        idType:
          type:
          - string
          - 'null'
          description: Identifier type.
          default: PerformanceId
        baseCurrency:
          type:
          - string
          - 'null'
          description: Base currency to use for investment lookup. Accepts 3‑character ISO 4217 currency codes.
        domicile:
          type:
          - string
          - 'null'
          description: Domicile to use for investment lookup. Accepts 3-character ISO 3166-1 country codes.
        exchangeCountry:
          type:
          - string
          - 'null'
          description: Exchange country to use for investment lookup. Accepts 3-character ISO 3166-1 country codes.
        exchangeId:
          type:
          - string
          - 'null'
          description: Exchange identifier to use for investment lookup. See [Exchange IDs](https://developer.morningstar.com/content/hidden-from-navigation/DwsApisExchangeIds.xlsx) document for list of valid values.
          examples:
            exchangeIdExample1:
              summary: NASDAQ - ALL Markets (NAS)
              value: EX$$$$XNAS
            exchangeIdExample2:
              summary: London Stock Exchange (LSE)
              value: EX$$$$XLON
      additionalProperties: false
    ResponseGetScenarios:
      type: object
      properties:
        scenarios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputScenario'
        scenarioType:
          type:
          - string
          - 'null'
          description: '

            ScenarioType.'
        scenarioTypeName:
          type:
          - string
          - 'null'
          description: '

            ScenarioTypeName.'
        metadata:
          $ref: '#/components/schemas/OutputMetadata'
      additionalProperties: false
    InputScenarioType:
      enum:
      - HistoricalEvent
      - MacroShock
      - MarketShock
      type: string
    OutputMetricsPortfolio:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
          description: '

            Portfolio Id.'
        performanceMetrics:
          $ref: '#/components/schemas/OutputPerformanceMetrics'
        assetCoverage:
          type: integer
          description: '

            The holding weighted percentage of the applicable holdings for which a data point has been successfully calculated out of all the applicable holdings.'
          format: int32
      additionalProperties: false
    OutputIdentifierType:
      enum:
      - SecurityId
      - CUSIP
      - TradingSymbol
      - FundCode
      - ISIN
      - PerformanceId
      - MSID
      - SEDOL
      - Ticker
      type: string
      description: Security identifier type
    OutputInvestmentMetadata:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: ID passed in request.
        idType:
          type:
          - string
          - 'null'
          description: '

            ID type passed in request.


            IdType value(s) - "ISIN", "CUSIP", "PerformanceId", "SecurityId", "TradingSymbol", "FundCode", "MSID"'
        performanceId:
          type:
          - string
          - 'null'
          description: Performance ID (if not passed in request).
        companyId:
          type:
          - string
          - 'null'
          description: Company ID (if not passed in request).
        baseCurrency:
          type:
          - string
          - 'null'
          description: Input base currency used to look up Investment identifier
        domicile:
          type:
          - string
          - 'null'
          description: Input domicile used to look up Investment identifier.
        exchangeCountry:
          type:
          - string
          - 'null'
          description: Input exchange country used to look up Investment identifier.
        exchangeId:
          type:
          - string
          - 'null'
          description: Input exchange id used to look up Investment identifier.
      additionalProperties: false
      description: Represents an investment that is considered invalid.
    ResponseErrorDetails:
      type: object
      properties:
        statusCode:
          type: integer
          description: Status Code
          format: int32
        errorCode:
          type:
          - string
          - 'null'
          description: Custom error code
        message:
          type:
          - string
          - 'null'
          description: Message
        requestId:
          type:
          - string
          - 'null'
          description: RequestId
      additionalProperties: false
      description: Error details
    OutputSecurityType:
      type: string
      description: The security type
      enum:
      - BD
      - BK
      - CA
      - CASH
      - CIT
      - CP
      - CT
      - CU
      - CZ
      - DF
      - EI
      - FC
      - FE
      - FG
      - FH
      - FI
      - FM
      - FO
      - FV
      - GA
      - H1
      - HD
      - IF
      - LP
      - MG
      - MO
      - P1
      - PI
      - PO
      - PS
      - R1
      - S1
      - SA
      - SC
      - SP
      - ST
      - V1
      - VA
      - VH
      - VL
      - VP
      - VS
      - XI
      x-enumDescriptions:
        BD: Bonds
        BK: 529 Benchmark
        CA: Category Average/SectorAverages
        CASH: Cash
        CIT: Collective Investment Trusts
        CP: College Saving Plans
        CT: College Saving Portfolios
        CU: Exchange Rates/Currency Exchange
        CZ: Collective Investment Trusts
        DF: Restricted Investors
        EI: Economics Series
        FC: Closed End Funds
        FE: Exchange Traded Funds
        FG: FG
        FH: Hedge Funds
        FI: Unit Investment Trust
        FM: Money Market Funds
        FO: Open End Fund
        FV: Insurance Product Fund
        GA: GRPA
        H1: HFR Hedge Fund
        HD: Australian Hybrid
        IF: IF
        LP: US Variable Life
        MG: Strategies
        MO: Models
        P1: UK Life and Pension Policies
        PI: Special Pooled Funds for Unregistered VA
        PO: MF Objective
        PS: European Pension/Life Fund Wrappers
        R1: Global Restricted Funds
        S1: UBS Separate Accounts
        SA: Separate Accounts
        SC: Custom Fund
        SP: Private Funds
        ST: Stocks
        V1: UK Life and Pension Funds
        VA: US Variable Annuity Subaccounts
        VH: VH
        VL: US Variable Life Subaccounts/VL Subaccount
        VP: US Variable Annuities/VA Policy
        VS: VS
        XI: Market Indexes
    OutputReturnsInvestment:
      type: object
      properties:
        identifiers:
          $ref: '#/components/schemas/OutputIdentifiers'
        returns:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputReturn'
          description: '

            Investment Returns.'
        assetCoverage:
          type: number
          description: '

            The holding weighted percentage of the applicable holdings for which a data point has been successfully calculated out of all the applicable holdings.'
          format: double
        metadata:
          $ref: '#/components/schemas/OutputLookupFilters'
      additionalProperties: false
    OutputMetricsScenario:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: '

            Scenario Id.'
        name:
          type:
          - string
          - 'null'
          description: '

            Scenario Name.'
        definition:
          type:
          - string
          - 'null'
          description: '

            Scenario Definition.'
        shockDate:
          type:
          - string
          - 'null'
          description: '

            "shockDate" indicates when the forecast of the scenario analysis would starts. It is the last month end of the risk premium data.'
        duration:
          type: integer
          description: '

            Scenario Duration.'
          format: int32
        durationUnit:
          type:
          - string
          - 'null'
          description: '

            Scenario DurationUnit.'
        investments:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputMetricsInvestment'
          description: '

            List of Investments.'
        portfolios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputMetricsPortfolio'
          description: '

            List of Portfolios.'
      additionalProperties: false
    OutputMessageType:
      enum:
      - Warning
      - Error
      type: string
      description: MessageType
    InputPortfolio:
      required:
      - holdings
      - name
      type: object
      properties:
        holdings:
          type: array
          items:
            $ref: '#/components/schemas/InputHolding'
        name:
          type:
          - string
          - 'null'
          description: Get or set portfolio name
      additionalProperties: false
    holding:
      properties:
        identifier:
          type: string
        weight:
          type: number
      type: object
    InputHolding:
      type: object
      properties:
        weight:
          type:
          - number
          - 'null'
          description: 'Get or set the Weight

            1. min value = 0

            2. max value = 100'
          format: double
        cusip:
          type:
          - string
          - 'null'
          description: Get or set the CUSIP
        fundCode:
          type:
          - string
          - 'null'
          description: Get or set the FundCode
        isin:
          type:
          - string
          - 'null'
          description: Get or set the ISIN
        performanceId:
          type:
          - string
          - 'null'
          description: Get or set the PerformanceId
        securityId:
          type:
          - string
          - 'null'
          description: Get or set the SecurityId
        tradingSymbol:
          type:
          - string
          - 'null'
          description: Get or set the TradingSymbol
      additionalProperties: false
    ResponseGenerateMetrics:
      type: object
      properties:
        scenarios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputMetricsScenario'
        metadata:
          $ref: '#/components/schemas/OutputMetadata'
      additionalProperties: false
    OutputMessage:
      type: object
      properties:
        investments:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputInvestmentMetadata'
          description: List of invalid holdings.
        portfolios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputPortfolioMetadata'
        type:
          $ref: '#/components/schemas/OutputMessageType'
        message:
          type:
          - string
          - 'null'
          description: Message text.
        code:
          type:
          - string
          - 'null'
          description: Unique identifier of a message.
      additionalProperties: false
    OutputHoldingMetadata:
      type: object
      properties:
        identifier:
          type:
          - string
          - 'null'
        identifierType:
          $ref: '#/components/schemas/OutputIdentifierType'
        baseCurrency:
          type:
          - string
          - 'null'
        exchangeCountry:
          type:
          - string
          - 'null'
        domicile:
          type:
          - string
          - 'null'
      additionalProperties: false
    OutputReturn:
      type: object
      properties:
        date:
          type:
          - string
          - 'null'
          description: '

            Return Date.'
        period:
          type:
          - string
          - 'null'
          description: '

            Return Period.'
        value:
          type: number
          description: '

            Return Value.'
          format: double
      additionalProperties: false
    OutputLookupFilters:
      type: object
      properties:
        baseCurrency:
          type:
          - string
          - 'null'
          description: Input base currency used to look up Investment identifier
        domicile:
          type:
          - string
          - 'null'
          description: Input domicile used to look up Investment identifier.
        exchangeCountry:
          type:
          - string
          - 'null'
          description: Input exchange country used to look up Investment identifier.
        exchangeId:
          type:
          - string
          - 'null'
          description: Input exchange id used to look up Investment identifier.
      additionalProperties: false
      description: Information passed in request and used to look up an investment's Morningstar Investment identifier.
    OutputReturnsScenario:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of scenario applied in this calculation.
        name:
          type:
          - string
          - 'null'
          description: Display name of scenario applied in this calculation.
        definition:
          type:
          - string
          - 'null'
          description: Specification of the scenario — the market conditions applied in this calculation, such as the index, shock magnitude, and duration.
        calculateType:
          type:
          - string
          - 'null'
          description: Type of calculation performed for this scenario.
        shockDate:
          type: string
          description: Date on which the scenario analysis forecast begins. This is the last month end of the risk premium data.
          format: date
        duration:
          type: integer
          description: Length of the scenario forecast, beginning at `shockDate`. Expressed in the unit given by `durationUnit`.
          format: int32
        durationUnit:
          type:
          - string
          - 'null'
          description: Unit of time in which `duration` is expressed.
        investments:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputReturnsInvestment'
          description: Forecast results for each investment included in the request, calculated under this scenario.
        portfolios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputReturnsPortfolio'
          description: Forecast results for each portfolio included in the request, calculated under this scenario.
      additionalProperties: false
    OutputRiskModel:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of a risk model.
        name:
          type:
          - string
          - 'null'
          description: Display name of the risk model.
        legacyIds:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Identifiers previously used for this risk model, retained so that requests issued against earlier versions of the API continue to resolve.
        currencyId:
          type:
          - string
          - 'null'
          description: Currency ID.
        currency:
          type:
          - string
          - 'null'
          description: Currency in which the risk model's results are expressed.
        defaultGroup:
          type:
          - string
          - 'null'
          description: Default risk model group.
        isPrimary:
          type: boolean
        asset:
          type:
          - string
          - 'null'
          description: Asset class covered by the risk model.
        factorCount:
          type: integer
          format: int32
          description: Number of risk factors in the model.
        startDate:
          type:
          - string
          - 'null'
          description: Earliest date for which the risk model has data available. Analysis cannot begin before this date.
        asOfDate:
          type:
          - string
          - 'null'
          description: Most recent date for which the risk model has data available.
        description:
          type:
          - string
          - 'null'
          description: Description of the risk model.
        currencyDescription:
          type:
          - string
          - 'null'
          description: Provides information about the currencies supported by the model. The `currency` field displays the default currency configured for the account.
        factorDescription:
          type:
          - string
          - 'null'
          description: Description of the risk factors used by the model.
        dataAvailability:
          type:
          - string
          - 'null'
          description: Range of dates for which the risk model has data available, bounded by `startDate` and `asOfDate`.
      additionalProperties: false
    OutputIdentifiers:
      type: object
      properties:
        performanceId:
          type:
          - string
          - 'null'
          description: Performance ID passed in the request or returned based on the values passed to identify an investment.
        securityId:
          type:
          - string
          - 'null'
          description: Morningstar security ID passed in the request used to look up investment identifiers.
        tradingSymbol:
          type:
          - string
          - 'null'
          description: Trading symbol passed in the request used to look up investment identifiers.
        fundCode:
          type:
          - string
          - 'null'
          description: Fund code passed in the request used to look up investment identifiers.
        isin:
          type:
          - string
          - 'null'
          description: ISIN passed in the request and used to look up investment identifiers.
        cusip:
          type:
          - string
          - 'null'
          description: CUSIP passed in the request used to look up investment identifiers.
      additionalProperties: false
      description: The ID and ID type passed in the request and the corresponding Morningstar investment identifiers are returned.
    OutputInvestmentReference:
      type: object
      properties:
        performanceId:
          type:
          - string
          - 'null'
          description: Morningstar Performance ID for the holding.
        securityId:
          type:
          - string
          - 'null'
          description: Morningstar Security ID for the holding.
        isin:
          type:
          - string
          - 'null'
          description: ISIN for the holding. Only present when the original request used ISIN as the identifier type.
        tradingSymbol:
          type:
          - string
          - 'null'
          description: Trading symbol for the holding.
        fundCode:
          type:
          - string
          - 'null'
          description: Fund code passed in the request used to look up investment identifiers.
        cusip:
          type:
          - string
          - 'null'
          description: CUSIP passed in the request used to look up investment identifiers.
        name:
          type:
          - string
          - 'null'
          description: Name of the investment.
        baseCurrency:
          type:
          - string
          - 'null'
          description: BaseCurrency of the investment.
        type:
          type:
          - string
          - 'null'
          description: Type of the investment.
          $ref: '#/components/schemas/OutputSecurityType'
        inceptionDate:
          type:
          - string
          - 'null'
          description: InceptionDate of the investment.
      additionalProperties: false
      description: Represents resolved identifier data for a valid investment or holding, returned in metadata.
    ResponseGetRiskModels:
      type: object
      properties:
        riskModels:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OutputRiskModel'
        metadata:
          $ref: '#/components/schemas/OutputMetadata'
      additionalProperties: false
    InputCalculationType:
      enum:
      - Cumulative
      - Drawdown
      - Growth10k
      - Monthly
      - Period
      type: string
      description: '

        CalculationType defines the type of return in response.


        Growth10k : A different way of showing cumulative return that highlights the change in value of an initial $10,000 investment


        period : Calculate the forecast returns of the scenario for different periods of 1 week, 1 month etc.


        cumulative : Cumulated returns.


        drawdown : Drawdown of the return which is a measure of decline in an investment or fund from its peak to its trough over a period from the starting date.


        monthly : Calculate the forecast returns of the scenario in monthly'
    ScenarioAnalysisModel:
      required:
      - riskModelId
      - scenarios
      properties:
        riskModelId:
          type: string
          example: morn-glb-eq-usd
        investments:
          type: array
          description: Investment id refers to performance ids, identifying the funds to be analysis on, separated by "," when passing multiple.
          example:
          - id: 0P0000058R
            type: PerformanceId
          items:
            $ref: '#/components/schemas/investment'
        scenarios:
          type: array
          description: Scenario id, internal pre-defined scenario identities(scenario001 ~ scenario009), separated by "," when passing 

# --- truncated at 32 KB (70 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/morningstar/refs/heads/main/openapi/morningstar-scenario-analysis-api-openapi.yml