def min_cvar(self, s=<NUM_LIT>, beta=<NUM_LIT>, random_state=None):
args = (self.returns, s, beta, random_state)<EOL>result = noisyopt.minimizeSPSA(<EOL>objective_functions.negative_cvar,<EOL>args=args,<EOL>bounds=self.bounds,<EOL>x0=self.initial_guess,<EOL>niter=<NUM_LIT:1000>,<EOL>paired=False,<EOL>)<EOL>self.weights = self.normalize_weights(result["<STR_LIT:x>"])<EOL>return dict(zip(self.tickers, self.weights))<EOL>
Find the portfolio weights that minimises the CVaR, via
Monte Carlo sampling from the return distribution.

:param s: number of bootstrap draws, defaults to 10000
:type s: int, optional
:param beta: "significance level" (i. 1 - q), defaults to 0.95
:type beta: float, optional
:param random_state: seed for random sampling, defaults to None
:type random_state: int, optional
:return: asset weights for the Sharpe-maximising portfolio
:rtype: dict