def calculate_health(bunch_percentage, gap_percentage, on_time_percentage):
    """
    Calculates an average of 3 main statistics, returns a float

    (does not use coverage since that is
    already dependent on on-time and bunches)

    Arguments:
        bunch_percentage (float): the bunched percentage score
        gap_percentage (float): the gapped percentage score
        on_time_percentage (float): the on-time percentage score
    """

    # invert bunches and gaps, since fewer of those is better
    bunch_percentage = 1 - bunch_percentage
    gap_percentage = 1 - gap_percentage

    return (bunch_percentage + gap_percentage + on_time_percentage) / 3