Ads displayed for guests and not donating members only. Get ad-free by donating. If you have already donated, please read here.
Results 1 to 7 of 7

Thread: WN8 Calculation

  1. #1

    WN8 Calculation

    I'm having trouble recreating the overall WN8 values displayed on vbaddict.

    I'm setting up our clan page with some custom data gathering and display. On a tank by tank basis the WN8 values I calculate myself match those from vbaddict (or noobmeter) almost perfectly (there's a difference of up to 4-5 points per tanks, but that's clearly a rounding/precision effect I can live with). [Explanation: I'm doing all the WN8 calculations in database as decimal(18,8) - my reasoning is that's I can loose precision as needed if/when there are load or storage issues].

    If I run aggregates by tank class or tier, I'm still pretty close to vbaddict on my own account:
    Class VBAddict Own calculation
    Light 1213 1212,0399
    Medium 1557 1558,6727
    Heavy 1539 1540,2332
    TD 1472 1472,5999
    SPG 1625 1625,7416
    Tier VBAddict Own calculation
    1* 401 364,1269
    2 739 736,5215
    3 1443 1446,2632
    4 779 781,6507
    5 1242 1243,4303
    6 1676 1676,7112
    7 1369 1368,4551
    8 1499 1500,4365
    9 1535 1536,2373
    10 1591 1591,8541
    (*) I'm assuming the difference at Tier 1 comes from the fact, that some T1 tanks display a WN8 of '-' in the tank list, but still have an actual WN8 value (see M5A1 Stuart for example). I guess vbaddict skips this value during aggregation, while I don't.

    So far everything looks close enough - but the for life of me I cannot get, how vbaddict reaches it's WN8 account wide value of 1536,83 (see Profile page). Noobmeter agrees with a value of 1537 by the way.

    If I aggregate everything myself I get a value of 1485 - this is not anywhere near vbaddict or noobmeter.

    Is there some additional filtering or weighting going on for the overall aggregation? Plain SUM([WN8] * Battles) / SUM(Battles) obviously doesn't cut it.

    I'd really appreciate some help here, since I'm completely stumped....

  2. #2
    Commander's Avatar
    Join Date
    Jan 2013
    Erlangen, Germany
    It needs to be weighted by the amount of battles.

    Example for step 1. You need to multiply the damage done by a tank with the battles and divide by the sum of expected wn8 damage multiplied with the battles:

    foreach (tank)
                rDAMAGE += (damage_tank * battles) / (damage_expected * battles);
                rFRAG += (frags_tank * battles) / (frags_expected * battles);

  3. #3
    First of, thanks for the reply

    So I guess the overall Wn8 is not calculated by aggregating the tank specific Wn8s, but by some aggregation of the raw component values over all tanks - okay.

    I still totally do not get your code snippet. For one, there must be something missing - you'll end up with huge r[XY] values if you simply sum values up for all tanks. How do you normalize things back down (I'm, assuming by number of tanks)?

    Do you normalize the r[XY] values? The r[XY]c values? Or at the last step with the Wn8 value?

    Also, if you both weigh the actual and the expected values with the battle count, you're not weighing at all, since the 'battles' value in both numerator & denominator will cancel each other out for each term. Is one of those values battles in tank, the other battles total?

    It would really help me to see a more complete code sample for 'overall wn8' calculation.

  4. #4
    Commander's Avatar
    Join Date
    Jan 2013
    Erlangen, Germany
    You can see an example by viewing WOT Statistics Source:

    Starting with Line 174:

    After tank calculations, here is the relevant part:

    rDAMAGE = RatingWN8_TotalDamage / RatingWN8_ExpDamage;

  5. #5
    Thanks, with that as a guideline I could put together my SQL which get's me to within spitting (rounding) distance from vbaddict's values

  6. #6
    Hi Guys.

    How would I calculate the WN8 for the last 60 days or the last n games?

  7. #7
    Commander's Avatar
    Join Date
    Jan 2013
    Erlangen, Germany
    Just include the data generated by this battles.

    Are you using the API to get the data?


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts