{"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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},"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","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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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":["en","de"],"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},"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","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},"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","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},"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","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},"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","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":["en","de"],"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"]},"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"]},"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 DACH alternatives catalog is read; it may have no entries for this listing."},"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"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"]},"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"]}},"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"]},"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"]}},"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":["en","de"],"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":["en","de"],"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_and_listing_currency_shocks"]},"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"]},"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"},"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","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 and currency shocks are rounded directional approximations from published cross-asset and FX moves. 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"],"reviewedAt":"2026-05-31"}},{"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 and currency shocks are rounded directional approximations. 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"],"reviewedAt":"2026-05-31"}},{"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; FX shocks approximate the EUR/USD slide below parity. 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"],"reviewedAt":"2026-05-31"}},{"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 strongly positive (safe-haven, pre-SNB-floor). Asset-class and currency shocks are rounded directional approximations. 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"],"reviewedAt":"2026-05-31"}},{"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. 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"],"reviewedAt":"2026-05-31"}}],"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_and_listing_currency_shocks"]},"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"]},"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"},"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","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":["en","de"],"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":["en","de"],"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"]},"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"]},"basis":{"type":["string","null"],"enum":["total","price","nominal_cash"]},"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"]},"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"]},"basis":{"type":["string","null"],"enum":["total","price","nominal_cash"]},"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":{}}