action portfoliooptimizer_post_portfolio_construction_mimicking { label: "Mimicking Portfolio" description: "Construct a portfolio as close as possible, in terms of returns, to a benchmark, optionally subject to:\n* Minimum and maximum weights constraints\n* Maximum group weights constraints\n* Minimum and maximum portfolio exposure constraints\n\nReferences \n* Konstantinos Benidis, Yiyong Feng, Daniel P. Palomar, Optimization Methods for Financial Index Tracking: From Theory to Practice, now publishers Inc (7 juin 2018)\n" provider: portfoliooptimizer method: POST path: "/portfolio/construction/mimicking" encoding: json input: { type: "object" required: ["assets", "benchmarkReturns"] properties: { assets: { type: "array" items: { type: "object" required: ["assetReturns"] properties: { assetReturns: { type: "array" description: "assetReturns[t] is the return of the asset at the time t; all the assetReturns arrays must have the same length" items: { type: "number" } } } } } benchmarkReturns: { type: "array" description: "benchmarkReturns[t] is the return of the benchmark at the time t; the benchmarkReturns array must have the same length as all the assetReturns arrays" items: { type: "number" } } constraints: { type: "object" properties: { assetsGroups: { type: "array" items: { type: "array" description: "assetsGroups[k] is the indexes of the assets belonging to the assets group k in the portfolio; exclusive with assetsGroupsMatrix" items: { type: "integer" } } } assetsGroupsMatrix: { type: "array" description: "assetsGroupsMatrix[k][i] is the weight of the asset i in the group of assets k; exclusive with assetsGroups" items: { type: "array" items: { type: "number" } } } maximumAssetsGroupsWeights: { type: "array" description: "maximumAssetsGroupsWeights[k] is the maximum weight of the assets group k in the portfolio, in percentage between 0 and 1 if assetsGroups is provided" items: { type: "number" } } maximumAssetsWeights: { type: "array" description: "maximumAssetsWeights[i] is the maximum weight of the asset i in the portfolio, in percentage" items: { type: "number" } } maximumPortfolioExposure: { type: "number" description: "The maximum portfolio exposure; must be higher than or equal to minimumPortfolioExposure" } minimumAssetsWeights: { type: "array" description: "minimumAssetsWeights[i] is the minimum weight of the asset i in the portfolio, in percentage" items: { type: "number" } } minimumPortfolioExposure: { type: "number" description: "The minimum portfolio exposure; must be lower than or equal to maximumPortfolioExposure" } } } } } output: { type: "object" required: ["assetsWeights"] properties: { assetsWeights: { type: "array" description: "assetsWeights[i] is the weight of the asset i in the portfolio, in percentage" items: { type: "number" } } } } }