UCRFL

UCR Foosball League

Rating change calcuations

back to main

The calcuations are based on the relative rankings of each player and also the difference in score for the games. After each game the ratings for each player is adjusted as such (pseudo python code):

    factor = (0.75, 1.00, 1.25, 2.00, 4.00)
    base = 500
    weight = 25
    sweight = 50

    for player in winners :
        adjust = math.floor( ( average rating of opponents - player.rating + base + score difference * score weight ) / weight )
        if adjust > 0 :
            adjust = adjust * factor[score difference - 1]
        else :
            adjust = adjust * factor[- score difference]
        player.rating += math.floor(adjust)

    for player in losers :
        adjust = math.ceil( ( average rating of opponents - player.rating - base - score difference * score weight ) / weight )
        if adjust < 0 :
            adjust = adjust * factor[score difference - 1]
        else :
            adjust = adjust * factor[- score difference]
        player.rating += math.ceil(adjust)