code: def get_min_risk(self, weights, cov_matrix):
          
  
          def func(weights):
              """The objective function that minimizes variance."""
              return np.matmul(np.matmul(weights.transpose(), cov_matrix), weights)
  
          def func_deriv(weights):
              """The derivative of the objective function."""
              return (
                  np.matmul(weights.transpose(), cov_matrix.transpose()) +
                  np.matmul(weights.transpose(), cov_matrix)
              )
  
          constraints = ({'type': 'eq', 'fun': lambda weights: (weights.sum() - 1)})
          solution = self.solve_minimize(func, weights, constraints, func_deriv=func_deriv)
          # NOTE: `min_risk` is unused, but may be helpful later.
          # min_risk = solution.fun
          allocation = solution.x
  
          return allocation
docs: Minimizes the variance of a portfolio.