action portfoliooptimizer_post_assets_returns_simulation_bootstrap { label: "Bootstrap" description: "Simulate the return(s) of one or several asset(s) for one or several time period(s) using a bootstrap method.\n\nReferences\n* [Efron, B. (1979), Bootstrap methods: Another look at the jackknife, The Annals of Statistics 7, 1-26](https://projecteuclid.org/journals/annals-of-statistics/volume-7/issue-1/Bootstrap-Methods-Another-Look-at-the-Jackknife/10.1214/aos/1176344552.full)\n* [Politis, D. N. and Romano, J. P., A circular block resampling procedure for stationary data, in R. Lepage and L. Billard, eds, Exploring the Limits of Bootstrap, Wiley, New York, pp. 263-270](https://statistics.stanford.edu/technical-reports/circular-block-resampling-procedure-stationary-data)\n* [Politis, D. N. and Romano, J. P., The stationary bootstrap, Journal of the American Statistical Association 89, 1303-1313](https://www.jstor.org/stable/2290993)\n" provider: portfoliooptimizer method: POST path: "/assets/returns/simulation/bootstrap" encoding: json input: { type: "object" required: ["assets"] properties: { assets: { type: "array" items: { type: "object" required: ["assetReturns"] properties: { assetReturns: { type: "array" description: "assetReturns[t] is the return of the asset over the time period t; all the assetReturns arrays must have the same length" items: { type: "number" } } } } } bootstrapAverageBlockLength: { type: "number" description: "The average length of the blocks to use in case the bootstrap method is 'stationaryBlock', in time periods; if not provided, defaults to the inverse of 3.15 * the common length of the assetReturns arrays^1/3" } bootstrapBlockLength: { type: "integer" description: "The length of the blocks to use in case the bootstrap method is 'circularBlock', in time periods; if not provided, defaults to [3.15 * the common length of the assetReturns arrays^1/3]" } bootstrapMethod: { type: "string" description: "The bootstrap method to use" enum: ["iid", "circularBlock", "stationaryBlock"] } simulations: { type: "integer" description: "The number of simulations to perform" } simulationsLength: { type: "integer" description: "The number of time period(s) to simulate per simulation; if not provided, defaults to the common length of the assetReturns arrays" } } } output: { type: "object" required: ["simulations"] properties: { simulations: { type: "array" items: { type: "object" required: ["assets"] properties: { assets: { type: "array" description: "assets[i] is the data for the i-th asset" items: { type: "object" required: ["assetReturns"] properties: { assetReturns: { type: "array" description: "assetReturns[t] is the simulated return of the i-th asset for the t-th time period, in percentage" items: { type: "number" } } } } } } } } } } }