@staticmethod
def _compute_bi(c_final, asset_bounds_i):
    """
        Calculates which bound value to assign to a bounded asset - lower bound or upper bound.

        :param c_final: (float) a value calculated using the covariance matrices of free weights.
                          Refer to https://pdfs.semanticscholar.org/4fb1/2c1129ba5389bafe47b03e595d098d0252b9.pdf for
                          more information.
        :param asset_bounds_i: (list) a list containing the lower and upper bound values for the ith weight
        :return: bounded weight value
        """
    if c_final > 0:
        return asset_bounds_i[1][0]
    return asset_bounds_i[0][0]
