-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
make fuzz vary by rating and over the season #344
base: master
Are you sure you want to change the base?
Conversation
return ovrC; | ||
}; | ||
|
||
const fuzzRating = (rating: number, fuzz: number, isDraft = false): number => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would need to accept season as a parameter too, right? Otherwise fuzz for past season ratings would be constantly oscillating.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could default to g.get("season")
since in many places it's only the current season, probably.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But you don't store fuzz per season, do you? That'd need to be added? At which point, better remove the storage for fuzz entirely and make it something you'd want to do deterministically on the fly then (hash pid, season and a per-league salt as the seed to an RNG).
pf.ratings.ovr, | ||
Math.round(p.ratings[1].ovr + p.ratings[1].fuzz), | ||
); | ||
// fuzz is not this simple anymore |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should just be deleted rather than commented out
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My thinking was I should add tests. Check for decent bounds. Check that the +/- functions behave correctly. I don't think losing tests make sense, especially when the code just got more complicated. I should just write some additional replacement test.
I can do that.
Assuming 82 games is enough to get as accurate as we're going to get is fine, I think.
What about this... Fuzz here is a random number. So if your 35 year old player goes up, you'd assume that 99% of the time it's just fuzz. What if instead fuzz was a random number picked from a distribution centered around the expected change in ratings (given a player's age)? Factoring in the actual change in ratings. So like if a 35 year old is expected to decline by 5 points, but actually declined by 3, his fuzz would be drawn from a distribution centered around -2. Another complication - ideally that would be per rating, since different ratings decline differently. Is this too complicated? It sounds kinda cool though... |
Can you sell me on fuzzing on the +/- scale rather than the ovr scale? Is it worth adding that complexity, and having to do something else for football? |
So there's a handful of reasons
|
That's also be pretty interesting. I like the idea that the uncertainty is drawn from progs distribution. That handles the age factor as well. And it has the property that "known" guys (like Harden) are going to have less uncertainty than unknown guys, although there the variance would be coming from age, not overall quality, it'd have similar gameplay effect of non-uniform fuzz. |
After thinking more about it, I think it would ultimately be too confusing to have ratings change over time, but only due to fuzz and nothing else. People would think the actual underlying ratings are changing. Do you think this PR would still be worthwhile without that part? |
Yeah the idea to have fuzz vary during the season was actually your proposal in discord. I've always been more interested in non-uniform fuzz (or at least uniform in something like "on court impact", where I used +/- as a surrogate) |
still has some issues