def kelly_binary(win_probability: float, win_size: float, lose_size: float) -> float:
    """
    Calculates the value of the Kelly Criterion (the fraction of money that should be invested) for a bet
    that has two possible outcomes.

    NOTE: This method should not be used to estimate the kelly value for a timeseries.

    Parameters
    ----------
    win_probability:float
        probability of winning. Assumes that probability of losing is 1 - win_probability.
    win_size: float
        gain if we win.
        For example: 0.7 means that we get additional 70% of what we bet. (if we bet 10$ and we win we now have 17$)
        new_value = old_value * (1 + win_size)
    lose_size: float
        lose if we lose. This value should be negative.
        For example: -0.2 means that we lose 20% of what we bet. (if we bet 10$ and we lose we now have 8$)
        new_value = old_value * (1 + lose_size)
    Returns
    -------
    float
        fraction of money that should be invested

    """

    kelly_value = (-win_size * win_probability + lose_size * win_probability - lose_size) / (win_size * lose_size)
    return kelly_value