{"data":{"modelVersion":"2026-10-15.3","authentication":"none","persistence":"No submitted portfolios or analysis results are saved; shared reference data may be cached.","endpoint":"/api/v1/public/portfolio-analysis","operationId":"analyzePublicPortfolio","maxHoldings":25,"maxHoldingsPerSnapshot":25,"maxComparisonHoldings":50,"maxAlternativeCandidates":10,"maxReplayWindowDays":3660,"inputBasis":"Snapshot inputs use ISINs with weights summing to 1, or values already converted to baseCurrency. Cash carries its own currency. Standalone operations publish their own input schemas and examples.","rateLimit":{"units":60,"windowSeconds":60,"cost":"One per submitted holding; comparisons count both snapshots; revenue-geography additionally reserves 25 company-enrichment units. Historical replay costs two per holding. ETF alternatives cost two per source/candidate, reserving ten candidates when reading the shared catalogue. Cost-drag and discovery reads cost one. Per client IP, shared across portfolio-analysis endpoints; best-effort during limiter outages."},"bodyLimitBytes":16384,"openapi":"/api/v1/public/portfolio-analysis/openapi.json","guide":"/api/v1/public/portfolio-analysis/guide","methodology":"https://investboard.com/calculators/api/methodology","methodologyMarkdown":"/api/v1/public/portfolio-analysis/methodology","documentation":"https://investboard.com/calculators/api#portfolio-analysis","batchCapabilities":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"capabilities":[{"id":"allocation","title":"Asset allocation","description":"Whole-portfolio allocation by asset class, with unknown holdings retained.","endpoint":"/api/v1/public/portfolio-analysis/allocation","methodology":"https://investboard.com/calculators/api/methodology#allocation","operationId":"analyzePublicPortfolioAllocation","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"overlap","title":"ETF overlap","description":"Pairwise equity fund overlap, shared companies and constituent coverage.","endpoint":"/api/v1/public/portfolio-analysis/overlap","methodology":"https://investboard.com/calculators/api/methodology#overlap","operationId":"analyzePublicPortfolioOverlap","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"look-through","title":"Equity look-through","description":"Underlying equity positions, direct and fund provenance, and omitted tail weight.","endpoint":"/api/v1/public/portfolio-analysis/look-through","methodology":"https://investboard.com/calculators/api/methodology#look-through","operationId":"analyzePublicPortfolioLookThrough","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"concentration","title":"Company concentration","description":"Issuer concentration, HHI and effective issuer count on the equity book; coverage-gated.","endpoint":"/api/v1/public/portfolio-analysis/concentration","methodology":"https://investboard.com/calculators/api/methodology#concentration","operationId":"analyzePublicPortfolioConcentration","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"sectors","title":"Sector diversification","description":"Underlying equity sectors, with an explicit unknown bucket.","endpoint":"/api/v1/public/portfolio-analysis/sectors","methodology":"https://investboard.com/calculators/api/methodology#sectors","operationId":"analyzePublicPortfolioSectors","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"geography","title":"Countries and regions","description":"Underlying equity country and region allocation, not fund domicile or revenue geography.","endpoint":"/api/v1/public/portfolio-analysis/geography","methodology":"https://investboard.com/calculators/api/methodology#geography","operationId":"analyzePublicPortfolioGeography","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"currencies","title":"Currency exposure","description":"Modeled underlying equity currency exposure, named hedges, and separate held currencies.","endpoint":"/api/v1/public/portfolio-analysis/currencies","methodology":"https://investboard.com/calculators/api/methodology#currencies","operationId":"analyzePublicPortfolioCurrencies","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"qualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"listingQualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","qualification","listingQualification","heldCurrencies","hedgedFunds"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"costs","title":"Ongoing fund costs","description":"Weighted TER on covered funds, per-fund costs and known annual charges in the stated base currency.","endpoint":"/api/v1/public/portfolio-analysis/costs","methodology":"https://investboard.com/calculators/api/methodology#costs","operationId":"analyzePublicPortfolioCosts","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":true},{"id":"cost-drag","title":"Long-term cost drag","description":"Simulate compound fee drag from explicit caller assumptions, horizons and contributions.","endpoint":"/api/v1/public/portfolio-analysis/cost-drag","methodology":"https://investboard.com/calculators/api/methodology#cost-drag","operationId":"analyzePublicPortfolioCostDrag","inputSchema":{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"initialValue":{"type":"number","minimum":0,"maximum":100000000},"annualReturn":{"type":"number","minimum":-1,"maximum":1,"description":"Caller-assumed nominal annual return, as a fraction; not a forecast."},"annualFeeRate":{"type":"number","minimum":0,"maximum":1,"description":"Caller-assumed annual fee fraction on the entire modeled amount; zero is an explicit assumption."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":0},"horizonYears":{"type":"array","items":{"type":"integer","minimum":1,"maximum":50},"minItems":1,"maxItems":10}},"required":["initialValue","annualReturn","annualFeeRate","horizonYears"],"additionalProperties":false},"resultSchema":{"type":"object","properties":{"model":{"type":"string","enum":["nominal_annual_rate_divided_by_12_end_of_month_contributions"]},"initialValue":{"type":"number","minimum":0},"monthlyContribution":{"type":"number","minimum":0},"annualReturn":{"type":"number"},"annualFeeRate":{"type":"number","minimum":0,"maximum":1},"horizons":{"type":"array","items":{"type":"object","properties":{"years":{"type":"integer","exclusiveMinimum":0},"valueWithCost":{"type":"number","minimum":0},"valueWithoutCost":{"type":"number","minimum":0},"totalCostDrag":{"type":"number","minimum":0},"averageAnnualCostDrag":{"type":"number","minimum":0},"costDragFraction":{"type":"number","minimum":0,"maximum":1}},"required":["years","valueWithCost","valueWithoutCost","totalCostDrag","averageAnnualCostDrag","costDragFraction"],"additionalProperties":false}}},"required":["model","initialValue","monthlyContribution","annualReturn","annualFeeRate","horizons"],"additionalProperties":false},"example":{"baseCurrency":"EUR","initialValue":10000,"annualReturn":0.05,"annualFeeRate":0.002,"monthlyContribution":100,"horizonYears":[10,20]},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["cost-drag"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["nominal_annual_rate_divided_by_12_end_of_month_contributions"]},"initialValue":{"type":"number","minimum":0},"monthlyContribution":{"type":"number","minimum":0},"annualReturn":{"type":"number"},"annualFeeRate":{"type":"number","minimum":0,"maximum":1},"horizons":{"type":"array","items":{"type":"object","properties":{"years":{"type":"integer","exclusiveMinimum":0},"valueWithCost":{"type":"number","minimum":0},"valueWithoutCost":{"type":"number","minimum":0},"totalCostDrag":{"type":"number","minimum":0},"averageAnnualCostDrag":{"type":"number","minimum":0},"costDragFraction":{"type":"number","minimum":0,"maximum":1}},"required":["years","valueWithCost","valueWithoutCost","totalCostDrag","averageAnnualCostDrag","costDragFraction"],"additionalProperties":false}}},"required":["model","initialValue","monthlyContribution","annualReturn","annualFeeRate","horizons"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"industries","title":"Industries and themes","description":"Underlying equity industries, maintained industry interests and versioned thematic baskets, with separate coverage.","endpoint":"/api/v1/public/portfolio-analysis/industries","methodology":"https://investboard.com/calculators/api/methodology#industries","operationId":"analyzePublicPortfolioIndustries","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"industries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}},"unknownWeight":{"type":"number","minimum":0,"maximum":1},"tailWeight":{"type":"number","minimum":0,"maximum":1}},"required":["scope","portfolioShare","coverage","buckets","unknownWeight","tailWeight"],"additionalProperties":false},"industryInterests":{"type":"object","properties":{"coverage":{"type":"number","minimum":0,"maximum":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"definitionVersion":{"type":"integer","exclusiveMinimum":0},"weight":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["key","definitionVersion","weight"],"additionalProperties":false}}},"required":["coverage","items"],"additionalProperties":false},"thematicBaskets":{"type":"object","properties":{"coverage":{"type":"number","minimum":0,"maximum":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"definitionVersion":{"type":"integer","exclusiveMinimum":0},"weight":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["key","definitionVersion","weight"],"additionalProperties":false}},"registryVersion":{"type":"integer","exclusiveMinimum":0}},"required":["coverage","items","registryVersion"],"additionalProperties":false},"unresolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]}},"required":["industries","industryInterests","thematicBaskets","unresolvedPortfolioWeight","constituentsAsOf"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["industries"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"industries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}},"unknownWeight":{"type":"number","minimum":0,"maximum":1},"tailWeight":{"type":"number","minimum":0,"maximum":1}},"required":["scope","portfolioShare","coverage","buckets","unknownWeight","tailWeight"],"additionalProperties":false},"industryInterests":{"type":"object","properties":{"coverage":{"type":"number","minimum":0,"maximum":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"definitionVersion":{"type":"integer","exclusiveMinimum":0},"weight":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["key","definitionVersion","weight"],"additionalProperties":false}}},"required":["coverage","items"],"additionalProperties":false},"thematicBaskets":{"type":"object","properties":{"coverage":{"type":"number","minimum":0,"maximum":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"definitionVersion":{"type":"integer","exclusiveMinimum":0},"weight":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["key","definitionVersion","weight"],"additionalProperties":false}},"registryVersion":{"type":"integer","exclusiveMinimum":0}},"required":["coverage","items","registryVersion"],"additionalProperties":false},"unresolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]}},"required":["industries","industryInterests","thematicBaskets","unresolvedPortfolioWeight","constituentsAsOf"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"revenue-geography","title":"Revenue geography","description":"Annual revenue regions of up to 25 underlying companies, without inflating the covered portion.","endpoint":"/api/v1/public/portfolio-analysis/revenue-geography","methodology":"https://investboard.com/calculators/api/methodology#revenue-geography","operationId":"analyzePublicPortfolioRevenueGeography","inputSchema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"resultSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"number","minimum":0,"maximum":1},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownWeight":{"type":"number","minimum":0,"maximum":1},"unresolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}},"companyLimit":{"type":"integer","exclusiveMinimum":0},"companiesExamined":{"type":"integer","minimum":0},"companiesCovered":{"type":"integer","minimum":0},"reportAsOf":{"type":["string","null"]},"constituentsAsOf":{"type":["string","null"]},"unmappedSegments":{"type":"array","items":{"type":"string"}}},"required":["scope","portfolioShare","coverage","coveredPortfolioWeight","unknownWeight","unresolvedPortfolioWeight","buckets","companyLimit","companiesExamined","companiesCovered","reportAsOf","constituentsAsOf","unmappedSegments"],"additionalProperties":false},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["revenue-geography"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"number","minimum":0,"maximum":1},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownWeight":{"type":"number","minimum":0,"maximum":1},"unresolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}},"companyLimit":{"type":"integer","exclusiveMinimum":0},"companiesExamined":{"type":"integer","minimum":0},"companiesCovered":{"type":"integer","minimum":0},"reportAsOf":{"type":["string","null"]},"constituentsAsOf":{"type":["string","null"]},"unmappedSegments":{"type":"array","items":{"type":"string"}}},"required":["scope","portfolioShare","coverage","coveredPortfolioWeight","unknownWeight","unresolvedPortfolioWeight","buckets","companyLimit","companiesExamined","companiesCovered","reportAsOf","constituentsAsOf","unmappedSegments"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"compare","title":"Compare portfolio changes","description":"Analyze before/after snapshots and return after-minus-before deltas only where section coverage permits.","endpoint":"/api/v1/public/portfolio-analysis/compare","methodology":"https://investboard.com/calculators/api/methodology#compare","operationId":"analyzePublicPortfolioCompare","inputSchema":{"type":"object","properties":{"before":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"after":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"}},"required":["before","after"],"additionalProperties":false},"resultSchema":{"type":"object","properties":{"before":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"qualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"listingQualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","qualification","listingQualification","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"after":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"qualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"listingQualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","qualification","listingQualification","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"deltas":{"type":"object","properties":{"allocation":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"sectors":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"countries":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"currencyExposure":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"hhi":{"type":["number","null"]},"effectiveN":{"type":["number","null"]},"weightedTer":{"type":["number","null"]},"knownAnnualCost":{"type":["number","null"]}},"required":["allocation","sectors","countries","currencyExposure","hhi","effectiveN","weightedTer","knownAnnualCost"],"additionalProperties":false}},"required":["before","after","deltas"],"additionalProperties":false},"example":{"before":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"after":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.8},{"isin":"IE00B3XXRP09","weight":0.1},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["compare"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"before":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"qualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"listingQualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","qualification","listingQualification","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"after":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"qualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"listingQualification":{"type":"object","properties":{"basis":{"type":"string","enum":["caller_supplied_listing_denomination","country_proxy_with_name_hedge_assumption"]},"methodologyVersion":{"type":"string","enum":["listing-denomination-v1","country-name-currency-proxy-v1"]},"independentlyVerified":{"type":"boolean","enum":[false]},"hedgePolicy":{"type":"string","enum":["not_verified"]},"stressUse":{"type":"string","enum":["ineligible"]},"weightBasis":{"type":"string","enum":["whole_valued_portfolio"]},"coverageBasis":{"type":"string","enum":["whole_valued_portfolio","valued_equity_value"]},"hedgeRatio":{"type":"null"}},"required":["basis","methodologyVersion","independentlyVerified","hedgePolicy","stressUse","weightBasis","coverageBasis","hedgeRatio"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","qualification","listingQualification","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"deltas":{"type":"object","properties":{"allocation":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"sectors":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"countries":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"currencyExposure":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"hhi":{"type":["number","null"]},"effectiveN":{"type":["number","null"]},"weightedTer":{"type":["number","null"]},"knownAnnualCost":{"type":["number","null"]}},"required":["allocation","sectors","countries","currencyExposure","hhi","effectiveN","weightedTer","knownAnnualCost"],"additionalProperties":false}},"required":["before","after","deltas"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"contribution-plan","title":"Target allocation and contribution planning","description":"Compare a value-based portfolio with caller targets and allocate one contribution across underweight asset classes.","endpoint":"/api/v1/public/portfolio-analysis/contribution-plan","methodology":"https://investboard.com/calculators/api/methodology#contribution-plan","operationId":"analyzePublicPortfolioContributionPlan","inputSchema":{"type":"object","properties":{"portfolio":{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false},"targets":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["assetClass","weight"],"additionalProperties":false},"minItems":1,"maxItems":8},"contribution":{"type":"number","minimum":0,"maximum":100000000,"description":"One new contribution, in the portfolio's baseCurrency, in whole cents."},"minimumAllocation":{"type":"number","minimum":0,"maximum":100000000,"default":0}},"required":["portfolio","targets","contribution"],"additionalProperties":false},"resultSchema":{"type":"object","properties":{"method":{"type":"string","enum":["proportional_underweight_gaps","post_contribution_shortfalls_v1"]},"contribution":{"type":"number","minimum":0},"allocatedAmount":{"type":"number","minimum":0},"unallocatedAmount":{"type":"number","minimum":0},"before":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"currentWeight":{"type":"number","minimum":0,"maximum":1},"targetWeight":{"type":"number","minimum":0,"maximum":1},"deviation":{"type":"number","minimum":-1,"maximum":1},"value":{"type":"number","minimum":0}},"required":["assetClass","currentWeight","targetWeight","deviation","value"],"additionalProperties":false}},"after":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"currentWeight":{"type":"number","minimum":0,"maximum":1},"targetWeight":{"type":"number","minimum":0,"maximum":1},"deviation":{"type":"number","minimum":-1,"maximum":1},"value":{"type":"number","minimum":0}},"required":["assetClass","currentWeight","targetWeight","deviation","value"],"additionalProperties":false}},"allocations":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"amount":{"type":"number","minimum":0}},"required":["assetClass","amount"],"additionalProperties":false}}},"required":["method","contribution","allocatedAmount","unallocatedAmount","before","after","allocations"],"additionalProperties":false},"example":{"portfolio":{"basis":"values","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","value":6000},{"assetClass":"cash","currency":"EUR","value":4000}]},"targets":[{"assetClass":"equities","weight":0.8},{"assetClass":"cash","weight":0.2}],"contribution":1000,"minimumAllocation":0},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["contribution-plan"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["proportional_underweight_gaps","post_contribution_shortfalls_v1"]},"contribution":{"type":"number","minimum":0},"allocatedAmount":{"type":"number","minimum":0},"unallocatedAmount":{"type":"number","minimum":0},"before":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"currentWeight":{"type":"number","minimum":0,"maximum":1},"targetWeight":{"type":"number","minimum":0,"maximum":1},"deviation":{"type":"number","minimum":-1,"maximum":1},"value":{"type":"number","minimum":0}},"required":["assetClass","currentWeight","targetWeight","deviation","value"],"additionalProperties":false}},"after":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"currentWeight":{"type":"number","minimum":0,"maximum":1},"targetWeight":{"type":"number","minimum":0,"maximum":1},"deviation":{"type":"number","minimum":-1,"maximum":1},"value":{"type":"number","minimum":0}},"required":["assetClass","currentWeight","targetWeight","deviation","value"],"additionalProperties":false}},"allocations":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"amount":{"type":"number","minimum":0}},"required":["assetClass","amount"],"additionalProperties":false}}},"required":["method","contribution","allocatedAmount","unallocatedAmount","before","after","allocations"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"etf-alternatives","title":"Compare ETF alternatives","description":"Compare at most ten explicit or shared-catalog equity ETF candidates using covered holdings, sector/country similarity and ongoing fees.","endpoint":"/api/v1/public/portfolio-analysis/etf-alternatives","methodology":"https://investboard.com/calculators/api/methodology#etf-alternatives","operationId":"analyzePublicPortfolioEtfAlternatives","inputSchema":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"candidateIsins":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"minItems":1,"maxItems":10,"description":"Explicit candidate universe. When omitted, a bounded shared alternatives catalog of every listing venue is read; it may have no entries for this listing."},"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"required":["isin"],"additionalProperties":false},"resultSchema":{"type":"object","properties":{"model":{"type":"string","enum":["half_holdings_quarter_sector_quarter_country"]},"candidateSource":{"type":"string","enum":["caller","shared_catalog"]},"catalogAsOf":{"type":["string","null"],"format":"date-time"},"source":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"name":{"type":"string"},"ter":{"type":["number","null"],"minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]},"holdingsCoverage":{"type":"number","minimum":0,"maximum":1},"sectorCoverage":{"type":"number","minimum":0,"maximum":1},"countryCoverage":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","ter","constituentsAsOf","holdingsCoverage","sectorCoverage","countryCoverage"],"additionalProperties":false},"candidates":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"name":{"type":"string"},"ter":{"type":["number","null"],"minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]},"holdingsCoverage":{"type":"number","minimum":0,"maximum":1},"sectorCoverage":{"type":"number","minimum":0,"maximum":1},"countryCoverage":{"type":"number","minimum":0,"maximum":1},"status":{"type":"string","enum":["ok","unavailable"]},"reason":{"type":["string","null"],"enum":["unresolved","not_equity_fund","missing_cost","incomplete_holdings","incomplete_vectors","provider_unavailable",null]},"holdingOverlap":{"type":["number","null"],"minimum":0,"maximum":1},"sectorCosine":{"type":["number","null"],"minimum":0,"maximum":1},"countryCosine":{"type":["number","null"],"minimum":0,"maximum":1},"similarityScore":{"type":["number","null"],"minimum":0,"maximum":1},"terSaving":{"type":["number","null"]},"qualifies":{"type":"boolean"}},"required":["isin","name","ter","constituentsAsOf","holdingsCoverage","sectorCoverage","countryCoverage","status","reason","holdingOverlap","sectorCosine","countryCosine","similarityScore","terSaving","qualifies"],"additionalProperties":false},"maxItems":10},"matches":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"}},"omittedMatches":{"type":"integer","minimum":0},"failure":{"type":["string","null"],"enum":["catalog_empty","catalog_unavailable","source_unavailable",null]}},"required":["model","candidateSource","catalogAsOf","source","candidates","matches","omittedMatches","failure"],"additionalProperties":false},"example":{"isin":"IE00B4L5Y983","candidateIsins":["IE00BK5BQT80"],"baseCurrency":"EUR","limit":5},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["etf-alternatives"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["half_holdings_quarter_sector_quarter_country"]},"candidateSource":{"type":"string","enum":["caller","shared_catalog"]},"catalogAsOf":{"type":["string","null"],"format":"date-time"},"source":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"name":{"type":"string"},"ter":{"type":["number","null"],"minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]},"holdingsCoverage":{"type":"number","minimum":0,"maximum":1},"sectorCoverage":{"type":"number","minimum":0,"maximum":1},"countryCoverage":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","ter","constituentsAsOf","holdingsCoverage","sectorCoverage","countryCoverage"],"additionalProperties":false},"candidates":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"name":{"type":"string"},"ter":{"type":["number","null"],"minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]},"holdingsCoverage":{"type":"number","minimum":0,"maximum":1},"sectorCoverage":{"type":"number","minimum":0,"maximum":1},"countryCoverage":{"type":"number","minimum":0,"maximum":1},"status":{"type":"string","enum":["ok","unavailable"]},"reason":{"type":["string","null"],"enum":["unresolved","not_equity_fund","missing_cost","incomplete_holdings","incomplete_vectors","provider_unavailable",null]},"holdingOverlap":{"type":["number","null"],"minimum":0,"maximum":1},"sectorCosine":{"type":["number","null"],"minimum":0,"maximum":1},"countryCosine":{"type":["number","null"],"minimum":0,"maximum":1},"similarityScore":{"type":["number","null"],"minimum":0,"maximum":1},"terSaving":{"type":["number","null"]},"qualifies":{"type":"boolean"}},"required":["isin","name","ter","constituentsAsOf","holdingsCoverage","sectorCoverage","countryCoverage","status","reason","holdingOverlap","sectorCosine","countryCosine","similarityScore","terSaving","qualifies"],"additionalProperties":false},"maxItems":10},"matches":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"}},"omittedMatches":{"type":"integer","minimum":0},"failure":{"type":["string","null"],"enum":["catalog_empty","catalog_unavailable","source_unavailable",null]}},"required":["model","candidateSource","catalogAsOf","source","candidates","matches","omittedMatches","failure"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"stress-scenarios","title":"Crisis stress scenarios","description":"Apply sourced approximate crisis shocks to a submitted portfolio, with explicit proxy methods and currency coverage.","endpoint":"/api/v1/public/portfolio-analysis/stress-scenarios","methodology":"https://investboard.com/calculators/api/methodology#stress-scenarios","operationId":"analyzePublicPortfolioStressScenarios","inputSchema":{"type":"object","properties":{"portfolio":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"scenarioKeys":{"type":"array","items":{"type":"string","enum":["gfc_2008","covid_2020","rate_hike_2022","euro_crisis_2011","dotcom_2000"]},"minItems":1,"maxItems":5}},"required":["portfolio","scenarioKeys"],"additionalProperties":false},"resultSchema":{"type":"object","properties":{"model":{"type":"string","enum":["approximate_sector_asset_class_shocks_currency_unknown"]},"scenarios":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["gfc_2008","covid_2020","rate_hike_2022","euro_crisis_2011","dotcom_2000"]},"name":{"type":"string"},"dateFrom":{"type":"string","format":"date"},"dateTo":{"type":"string","format":"date"},"status":{"type":"string","enum":["ok","unavailable"]},"failure":{"type":["string","null"],"enum":["unresolved_holdings","unsupported_base_currency","missing_currency","missing_scenario_coverage",null]},"returnFraction":{"type":["number","null"]},"preValue":{"type":["number","null"],"minimum":0},"postValue":{"type":["number","null"],"minimum":0},"change":{"type":["number","null"]},"approximate":{"type":"boolean","enum":[true]},"methodology":{"type":"string"},"sources":{"type":"array","items":{"type":"string"},"description":"Source descriptions including URLs, preserved from the maintained scenario registry."},"reviewedAt":{"type":["string","null"],"format":"date"},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"],"pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"cashCurrency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1},"assetClass":{"type":"string"},"returnFraction":{"type":"number"},"fxShockApplied":{"type":["number","null"]},"currencyDecomposition":{"type":"string","enum":["unavailable","cash_denomination"]},"method":{"type":"string","enum":["sector_proxy","asset_class_proxy"]},"preValue":{"type":["number","null"],"minimum":0},"postValue":{"type":["number","null"],"minimum":0},"change":{"type":["number","null"]}},"required":["isin","cashCurrency","weight","assetClass","returnFraction","fxShockApplied","currencyDecomposition","method","preValue","postValue","change"],"additionalProperties":false}}},"required":["key","name","dateFrom","dateTo","status","failure","returnFraction","preValue","postValue","change","approximate","methodology","sources","reviewedAt","positions"],"additionalProperties":false}}},"required":["model","scenarios"],"additionalProperties":false},"example":{"portfolio":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"scenarioKeys":["gfc_2008","covid_2020","rate_hike_2022"]},"supportedInBatch":false,"scenarios":[{"key":"gfc_2008","name":{"de":"Finanzkrise 2008","en":"Global Financial Crisis 2008"},"dateFrom":"2007-10-09","dateTo":"2009-03-09","approximate":true,"provenance":{"approximate":true,"methodology":"Headline −0.57 is the S&P 500 peak-to-trough (2007-10-09 close 1565.15 → 2009-03-09 close 676.53, ≈ −56.8%). Sector shocks are rounded approximations of MSCI/GICS sector index peak-to-trough over the same window; asset-class shocks are rounded directional approximations from published cross-asset moves. Currency moves are each currency's move against the euro, computed from the ECB euro foreign exchange reference rates on 2007-10-09 and 2009-03-09 (start rate / end rate - 1, rounded to two decimals; checked 2026-11-11). Crypto has no figure of its own in this window and takes the shares figure as a stand-in, a scenario assumption rather than a measured crypto move. Not a backtest of the user's holdings.","sources":["S&P 500 index, peak 2007-10-09 → trough 2009-03-09 (≈ −56.8%) — https://www.spglobal.com/spdji/en/indices/equity/sp-500/","MSCI World / GICS sector indices, 2007–2009 drawdown — https://www.msci.com/end-of-day-data-search","NBER US recession dating, Dec 2007 – Jun 2009 — https://www.nber.org/research/business-cycle-dating","ECB euro foreign exchange reference rates, 2007-10-09 and 2009-03-09 (currency moves against the euro) · https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"],"reviewedAt":"2026-05-31","currencyReviewedAt":"2026-11-11"}},{"key":"covid_2020","name":{"de":"COVID-19 Crash 2020","en":"COVID-19 Crash 2020"},"dateFrom":"2020-02-19","dateTo":"2020-03-23","approximate":true,"provenance":{"approximate":true,"methodology":"Headline −0.34 is the S&P 500 peak-to-trough (2020-02-19 close 3386.15 → 2020-03-23 close 2237.40, ≈ −33.9%). Sector shocks are rounded approximations of the GICS sector index drops over the same five-week window (Energy worst on the oil-price collapse); asset-class shocks are rounded directional approximations. Currency moves are each currency's move against the euro, computed from the ECB euro foreign exchange reference rates on 2020-02-19 and 2020-03-23 (start rate / end rate - 1, rounded to two decimals; checked 2026-11-11). Not a backtest of the user's holdings.","sources":["S&P 500 index, peak 2020-02-19 → trough 2020-03-23 (≈ −33.9%) — https://www.spglobal.com/spdji/en/indices/equity/sp-500/","S&P 500 GICS sector total returns, Feb–Mar 2020 — https://www.spglobal.com/spdji/en/index-family/equity/us-equity/sp-sectors/","WTI crude collapse, Mar 2020 (Energy sector driver) — https://www.eia.gov/dnav/pet/hist/RWTCD.htm","ECB euro foreign exchange reference rates, 2020-02-19 and 2020-03-23 (currency moves against the euro) · https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"],"reviewedAt":"2026-05-31","currencyReviewedAt":"2026-11-11"}},{"key":"rate_hike_2022","name":{"de":"Zinsschock 2022","en":"Rate Hike Shock 2022"},"dateFrom":"2022-01-03","dateTo":"2022-10-12","approximate":true,"provenance":{"approximate":true,"methodology":"Headline −0.25 is the S&P 500 peak-to-trough (2022-01-03 close 4796.56 → 2022-10-12 close 3577.03, ≈ −25.4%). Sector shocks are rounded approximations reflecting the rate-shock dispersion (long-duration Technology/Communication worst, Energy positive); bonds −0.15 approximates the Bloomberg US Aggregate's record 2022 drawdown; the USD move reflects the EUR/USD slide below parity. Currency moves are each currency's move against the euro, computed from the ECB euro foreign exchange reference rates on 2022-01-03 and 2022-10-12 (start rate / end rate - 1, rounded to two decimals; checked 2026-11-11). Not a backtest of the user's holdings.","sources":["S&P 500 index, peak 2022-01-03 → trough 2022-10-12 (≈ −25.4%) — https://www.spglobal.com/spdji/en/indices/equity/sp-500/","Bloomberg US Aggregate Bond Index 2022 total return ≈ −13% (worst on record) — https://www.bloomberg.com/markets/rates-bonds","EUR/USD fell below parity, Sep 2022 — https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/eurofxref-graph-usd.en.html","ECB euro foreign exchange reference rates, 2022-01-03 and 2022-10-12 (currency moves against the euro) · https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"],"reviewedAt":"2026-05-31","currencyReviewedAt":"2026-11-11"}},{"key":"euro_crisis_2011","name":{"de":"Eurokrise 2011","en":"European Debt Crisis 2011"},"dateFrom":"2011-05-02","dateTo":"2011-10-04","approximate":true,"provenance":{"approximate":true,"methodology":"Headline −0.22 approximates the broad European equity peak-to-trough over the 2011 sovereign-debt sell-off (EURO STOXX 50 ≈ −28% intra-year; S&P 500 ≈ −19% 2011-05-02→2011-10-04). Financials worst on bank/sovereign contagion; CHF positive (safe-haven, pre-SNB-floor). Asset-class shocks are rounded directional approximations. Currency moves are each currency's move against the euro, computed from the ECB euro foreign exchange reference rates on 2011-05-02 and 2011-10-04 (start rate / end rate - 1, rounded to two decimals; checked 2026-11-11). Crypto has no figure of its own in this window and takes the shares figure as a stand-in, a scenario assumption rather than a measured crypto move. Not a backtest of the user's holdings.","sources":["EURO STOXX 50 index, 2011 drawdown — https://www.stoxx.com/index-details?symbol=SX5E","S&P 500 index, peak 2011-05-02 → trough 2011-10-04 (≈ −19%) — https://www.spglobal.com/spdji/en/indices/equity/sp-500/","SNB EUR/CHF 1.20 floor announced 2011-09-06 (CHF safe-haven strength) — https://www.snb.ch/en/mmr/reference/pre_20110906/source/pre_20110906.en.pdf","ECB euro foreign exchange reference rates, 2011-05-02 and 2011-10-04 (currency moves against the euro) · https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"],"reviewedAt":"2026-05-31","currencyReviewedAt":"2026-11-11"}},{"key":"dotcom_2000","name":{"de":"Dotcom-Blase 2000","en":"Dotcom Bubble 2000"},"dateFrom":"2000-03-10","dateTo":"2002-10-09","approximate":true,"provenance":{"approximate":true,"methodology":"Headline −0.49 is the S&P 500 peak-to-trough (2000-03-24 close 1527.46 → 2002-10-09 close 776.76, ≈ −49.1%). Technology −0.78 approximates the NASDAQ Composite's ≈ −78% collapse (5048.62 → 1114.11); other sector shocks are rounded approximations of the dispersion over the bubble unwind. Slowest recovery in the catalog. Currency moves are each currency's move against the euro, computed from the ECB euro foreign exchange reference rates on 2000-03-10 and 2002-10-09 (start rate / end rate - 1, rounded to two decimals; checked 2026-11-11). Crypto has no figure of its own in this window and takes the shares figure as a stand-in, a scenario assumption rather than a measured crypto move. Not a backtest of the user's holdings.","sources":["S&P 500 index, peak 2000-03-24 → trough 2002-10-09 (≈ −49%) — https://www.spglobal.com/spdji/en/indices/equity/sp-500/","NASDAQ Composite, peak 2000-03-10 5048.62 → trough 2002-10-09 1114.11 (≈ −78%) — https://www.nasdaq.com/market-activity/index/comp","ECB euro foreign exchange reference rates, 2000-03-10 and 2002-10-09 (currency moves against the euro) · https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"],"reviewedAt":"2026-05-31","currencyReviewedAt":"2026-11-11"}}],"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["stress-scenarios"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["approximate_sector_asset_class_shocks_currency_unknown"]},"scenarios":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["gfc_2008","covid_2020","rate_hike_2022","euro_crisis_2011","dotcom_2000"]},"name":{"type":"string"},"dateFrom":{"type":"string","format":"date"},"dateTo":{"type":"string","format":"date"},"status":{"type":"string","enum":["ok","unavailable"]},"failure":{"type":["string","null"],"enum":["unresolved_holdings","unsupported_base_currency","missing_currency","missing_scenario_coverage",null]},"returnFraction":{"type":["number","null"]},"preValue":{"type":["number","null"],"minimum":0},"postValue":{"type":["number","null"],"minimum":0},"change":{"type":["number","null"]},"approximate":{"type":"boolean","enum":[true]},"methodology":{"type":"string"},"sources":{"type":"array","items":{"type":"string"},"description":"Source descriptions including URLs, preserved from the maintained scenario registry."},"reviewedAt":{"type":["string","null"],"format":"date"},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"],"pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"cashCurrency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1},"assetClass":{"type":"string"},"returnFraction":{"type":"number"},"fxShockApplied":{"type":["number","null"]},"currencyDecomposition":{"type":"string","enum":["unavailable","cash_denomination"]},"method":{"type":"string","enum":["sector_proxy","asset_class_proxy"]},"preValue":{"type":["number","null"],"minimum":0},"postValue":{"type":["number","null"],"minimum":0},"change":{"type":["number","null"]}},"required":["isin","cashCurrency","weight","assetClass","returnFraction","fxShockApplied","currencyDecomposition","method","preValue","postValue","change"],"additionalProperties":false}}},"required":["key","name","dateFrom","dateTo","status","failure","returnFraction","preValue","postValue","change","approximate","methodology","sources","reviewedAt","positions"],"additionalProperties":false}}},"required":["model","scenarios"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}},{"id":"historical-replay","title":"Historical portfolio replay","description":"Replay the current mix with explicit hypothetical investments, dated prices and FX; withhold results when any holding lacks history.","endpoint":"/api/v1/public/portfolio-analysis/historical-replay","methodology":"https://investboard.com/calculators/api/methodology#historical-replay","operationId":"analyzePublicPortfolioHistoricalReplay","inputSchema":{"type":"object","properties":{"portfolio":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["de","en","es","it","fr","nl","cs","pl","ru","uk"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"initialValue":{"type":"number","minimum":0,"exclusiveMinimum":0,"maximum":100000000,"description":"Explicit hypothetical initial investment in baseCurrency, independent of current portfolio values."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"Invested on day zero and monthly anniversaries, at the first available trading day at or after each anniversary."},"rebalancing":{"type":"string","enum":["none","annual","quarterly"],"default":"none"}},"required":["portfolio","startDate","endDate","initialValue"],"additionalProperties":false},"resultSchema":{"type":"object","properties":{"model":{"type":"string","enum":["historical_current_mix_with_hypothetical_contributions"]},"requestedStart":{"type":"string","format":"date"},"requestedEnd":{"type":"string","format":"date"},"coverage":{"type":"number","minimum":0,"maximum":1},"failure":{"type":["string","null"],"enum":["future_window","incomplete_portfolio","insufficient_history",null]},"legs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"isin":{"type":["string","null"],"pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1},"status":{"type":"string","enum":["included","unavailable"]},"reason":{"type":["string","null"],"enum":["unresolved","missing_currency","missing_history","missing_fx","insufficient_history","stale_history","invalid_history","provider_unavailable",null]},"basis":{"type":["string","null"],"enum":["total","price","nominal_cash",null]},"quoteCurrency":{"type":["string","null"]},"firstDate":{"type":["string","null"],"format":"date"},"lastDate":{"type":["string","null"],"format":"date"}},"required":["key","isin","weight","status","reason","basis","quoteCurrency","firstDate","lastDate"],"additionalProperties":false}},"replay":{"type":["object","null"],"properties":{"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"mixTotalReturn":{"type":"number"},"mixCagr":{"type":["number","null"]},"maxDrawdown":{"type":"number"},"peakDate":{"type":"string","format":"date"},"maxDrawdownDate":{"type":"string","format":"date"},"recoveryDate":{"type":["string","null"],"format":"date"},"totalContributed":{"type":"number","minimum":0},"endingValue":{"type":"number","minimum":0},"contributionTotalReturn":{"type":"number"},"annualizedReturn":{"type":["number","null"]},"resetCount":{"type":"integer","minimum":0},"series":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"value":{"type":"number","minimum":0}},"required":["date","value"],"additionalProperties":false},"maxItems":3700},"attribution":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"startWeight":{"type":"number","minimum":0,"maximum":1},"endWeight":{"type":"number","minimum":0,"maximum":1},"legReturn":{"type":"number"},"contributionToReturn":{"type":"number"}},"required":["key","startWeight","endWeight","legReturn","contributionToReturn"],"additionalProperties":false}}},"required":["startDate","endDate","mixTotalReturn","mixCagr","maxDrawdown","peakDate","maxDrawdownDate","recoveryDate","totalContributed","endingValue","contributionTotalReturn","annualizedReturn","resetCount","series","attribution"],"additionalProperties":false}},"required":["model","requestedStart","requestedEnd","coverage","failure","legs","replay"],"additionalProperties":false},"example":{"portfolio":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"startDate":"2021-01-04","endDate":"2025-12-31","initialValue":10000,"monthlyContribution":100,"rebalancing":"annual"},"supportedInBatch":false,"responseSchema":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["historical-replay"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["historical_current_mix_with_hypothetical_contributions"]},"requestedStart":{"type":"string","format":"date"},"requestedEnd":{"type":"string","format":"date"},"coverage":{"type":"number","minimum":0,"maximum":1},"failure":{"type":["string","null"],"enum":["future_window","incomplete_portfolio","insufficient_history",null]},"legs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"isin":{"type":["string","null"],"pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1},"status":{"type":"string","enum":["included","unavailable"]},"reason":{"type":["string","null"],"enum":["unresolved","missing_currency","missing_history","missing_fx","insufficient_history","stale_history","invalid_history","provider_unavailable",null]},"basis":{"type":["string","null"],"enum":["total","price","nominal_cash",null]},"quoteCurrency":{"type":["string","null"]},"firstDate":{"type":["string","null"],"format":"date"},"lastDate":{"type":["string","null"],"format":"date"}},"required":["key","isin","weight","status","reason","basis","quoteCurrency","firstDate","lastDate"],"additionalProperties":false}},"replay":{"type":["object","null"],"properties":{"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"mixTotalReturn":{"type":"number"},"mixCagr":{"type":["number","null"]},"maxDrawdown":{"type":"number"},"peakDate":{"type":"string","format":"date"},"maxDrawdownDate":{"type":"string","format":"date"},"recoveryDate":{"type":["string","null"],"format":"date"},"totalContributed":{"type":"number","minimum":0},"endingValue":{"type":"number","minimum":0},"contributionTotalReturn":{"type":"number"},"annualizedReturn":{"type":["number","null"]},"resetCount":{"type":"integer","minimum":0},"series":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"value":{"type":"number","minimum":0}},"required":["date","value"],"additionalProperties":false},"maxItems":3700},"attribution":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"startWeight":{"type":"number","minimum":0,"maximum":1},"endWeight":{"type":"number","minimum":0,"maximum":1},"legReturn":{"type":"number"},"contributionToReturn":{"type":"number"}},"required":["key","startWeight","endWeight","legReturn","contributionToReturn"],"additionalProperties":false}}},"required":["startDate","endDate","mixTotalReturn","mixCagr","maxDrawdown","peakDate","maxDrawdownDate","recoveryDate","totalContributed","endingValue","contributionTotalReturn","annualizedReturn","resetCount","series","attribution"],"additionalProperties":false}},"required":["model","requestedStart","requestedEnd","coverage","failure","legs","replay"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false}}]},"error":null,"meta":{}}