Your math is impeccable, and you are definitely a better mathematician than I am.

However the logical contradiction needs to be resolved. You say skill squish does this, CG says it can’t change a player’s rank. Contradiction. And since your goal is to convince CG, you need hard, incontrovertible proof. Because it doesn’t matter how many of us stand in a circle and say “I agree” if we are basing that on speculative or circumstantial proof.

And if you say you have hard evidence, I’m fine with accepting your word on it.

Sorry, I was at work all day!

CG used…. CG logic.

When they apply the data squish it “doesn’t change your rank”. However, at the end of the following battle you change to whatever your new rating puts you at.

As an arbitrary example, if you are at 3611, you are kyber 1. Say you are squished 50 rating points. Now you are 3561. But you’re still listed at kyber 1 and put into a kyber 1 bracket (this is why the beginning of the month numbers don’t drop right away).

Now you do your first battle and win, and get 40 rating points. Now you are skill rating 3601.

NOW the game does the ranking comparison and….. ooops! You’re kyber 2 now, even though you won your first battle.

so…they can claim the “squish” didn’t change your rankings! The effect gets delayed and is applied a battle later. They are technically/literally correct but functionally wrong. (Either that or their claim was disingenuous. You decide…)

This is also why there is such a big difference between week 1 and week 2/3 of the month on kyber1 numbers. If you do a bracket count, everyone who has been rating dropped into kyber 2 still gets listed as being in a kyber1 bracket, but gets a kyber 2 payout.

Of course we have numbers :-) the graph you see right there is in counts. Fluctuation of the entire player base is around 2k +/- week to week. The kyber drop last summer was ~30k on a smooth curve. Between week 1 and 3 last month, total registered players went up by 2k. Players in k1 dropped by 800 - that’s around 20% of kyber1 players.

Keeping in mind that any squish they do will result in a graph like the one at the very top of this thread. Looking at this, I think the scoring method will result in the skill score range ballooning. I haven't yet looked at, simulation-wise, how this would affect league groupings, but any centering technique would bring the scores of carbonite 5 and kyber 1 in drastically.

However, the percentages in each league should stay the same, contrary to what is presented here. However, it occurs to me that new, previously unscored players entering the system is an issue. If they are all given the same score, then this could affect the distribution, and I'm not sure yet what that would do to the percentages of kyber 1 players. With small numbers of new players, it may be a non-issue. However, a large enough spike at the bottom of the distribution could have a drastic effect.

Previously unscored players entering when they reach level 85 get entered into carbonite, I believe. Then they need to rise through the ranks.

Way back in January when new GAC started, they assigned skill ratings to any player who had been active within approximately a year (at least within old division 1 GPs, based on people scanning their ally lists and looking at who got ranked and who did not). Then when GAC started, the inactive accounts didn't join, so didn't get assigned into brackets, and therefore don't show up in these "active GAC" counts that I'm representing here. That was part of why there were such wild league resizings in Feb - I don't even start the data until March when it started to settle down.

(also, they screwed up month 1 and set kyber 1 to be 20% of kyber, not 10%, and had an extra 10% of players in kyber, and that's when they moved the actual skill rating boundary; that was a bloody month for the bottom of kyber 1....)

I don't know what they do with people who were SO idle they didn't even get a rating last year. Someone in my arena shard just showed up after around a year and a half to 2 years away - if they stick around until next GAC start, I'll ask them? But those are fairly small numbers of players.

League-wise: they're pretty good at manipulating the leagues to the sizes they want with the squish. The only place it appears to be screwed up is kyber 1, and I'm really assuming that's because they applied the same shape squish to kyber as they did to the middle leagues, but kyber has an edge effect that makes it continually shrink.

The person you REALLY want to talk to about squish shapes is Dawnsinger; she hangs out on many of the usual community discords. GrandArenaScience is one of the main places these discussions take place. You can also ping her on swgohevents I think?

The thing I understand least about the Skill Rating system is the gradual decrease in the SR points awarded / removed if you win or lose.

Why do these values decrease as the season progresses? Why would my "final" in the 3rd bracket be worth so much fewer points than the first match in my 1st bracket?

And why is the amount won or lost exactly the same for both players? Wouldn't the problem with non-participants falling so far so fast be at least partially addressed if the SR reduction when you lose was smaller than the SR gain when you win?

So I often wondered this myself, and at some point I thought maybe it was an attempt to prevent rematches, at least at the middle ranges. If in week 1, my first opponent has the same SR as me, even if we go the same record that week, we will end with different SRs. If I had won our match, then any round I lose where my previous opponent won would still put me slightly ahead of them. If I lose the next two and my opponent wins the next two, now they are way ahead of me. Any time we win or lose in the same round, we shift together. So it will be almost impossible to face each other again in week 2 unless there are insufficient numbers of players with our exact SRs, or we end up on the edges of an SR range, etc. We probably won't even face each other in week three. It would take a specific pattern of wins/losses for each of us over time to end up with the same SRs as each other again.

...........

Still, I wonder if the skill squish being a blanket calculation that doesn't take into account the extremes is indeed just a mistake/oversight. And it needn't be. ....

1) they said they were using a Bayesian system and left it at that. I went and read up on some of the papers for what that means; typically there is a factor for skill, and then a factor for "how certain" the system is of the accuracy of your skill rating. That's supposed to help new players find their way in the matchmaking more quickly. CG is doing something odd with the certainty factor, and resetting it every season even though the skill ratings only changed by squish? I don't entirely understand, but from what I could tell on how other games use this system, that's why the decreasing banner change. Also, as CrzyDroid says, it effectively helps shuffle up rematches when you're in a broad part of the population

2) Yeah, that's the conclusion I came to. The fact that they don't modify the shape of the squish when they hit the boundary of kyber is what cements it for me. The thing I wonder is why their stats people haven't noticed the shrinking... but then again, we know that by the time they changed the old GAC divisions, division 1 had 36% of all players in it, so we know they let things go far beyond what players like.

What I really, really think in my heart of hearts is that CG doesn't realize that this is an urgent matter, and that THEY NEED TO TALK TO US about it. I've talked to many players who have some variation of "I must really suck at this game, because I'm trying my hardest but the battles are just getting harder, and I'm dropping instead of improving." I think CG did artificial manipulations to the shape of leagues through the squish that made a lot of sense structurally or in the big picture, but they forgot the impact on individual players. Aaaaaand then they really dropped the ball on kyber 1. And didn't realize that kyber 1 players tend to be super obsessed and notice these things!

Your math is impeccable, and you are definitely a better mathematician than I am.

However the logical contradiction needs to be resolved. You say skill squish does this, CG says it can’t change a player’s rank. Contradiction. And since your goal is to convince CG, you need hard, incontrovertible proof. Because it doesn’t matter how many of us stand in a circle and say “I agree” if we are basing that on speculative or circumstantial proof.

And if you say you have hard evidence, I’m fine with accepting your word on it.

Sorry, I was at work all day!

CG used…. CG logic.

When they apply the data squish it “doesn’t change your rank”. However, at the end of the following battle you change to whatever your new rating puts you at.

As an arbitrary example, if you are at 3611, you are kyber 1. Say you are squished 50 rating points. Now you are 3561. But you’re still listed at kyber 1 and put into a kyber 1 bracket (this is why the beginning of the month numbers don’t drop right away).

Now you do your first battle and win, and get 40 rating points. Now you are skill rating 3601.

NOW the game does the ranking comparison and….. ooops! You’re kyber 2 now, even though you won your first battle.

so…they can claim the “squish” didn’t change your rankings! The effect gets delayed and is applied a battle later. They are technically/literally correct but functionally wrong. (Either that or their claim was disingenuous. You decide…)

This is also why there is such a big difference between week 1 and week 2/3 of the month on kyber1 numbers. If you do a bracket count, everyone who has been rating dropped into kyber 2 still gets listed as being in a kyber1 bracket, but gets a kyber 2 payout.

Are you sure about this? I feel like when I'm in the border when the squish happens, I get pushed down a division before the first round starts.

Hey, here's a random thought: are all players who have received a skill score ever included in the beginning of season skill squish, or just players active for the current season/week 1? I would have assumed the latter, but this could make a huge difference in the porportions of active players in each league.

Hey, here's a random thought: are all players who have received a skill score ever included in the beginning of season skill squish, or just players active for the current season/week 1? I would have assumed the latter, but this could make a huge difference in the porportions of active players in each league.

Everyone. Go to swgoh.gg and click on any player. Look at the Nov 6 to Nov 7 skill rating change. That is the squish. You can click on many different players at many different ranks and find the magnitude.

Are you sure about this? I feel like when I'm in the border when the squish happens, I get pushed down a division before the first round starts.

Yes. Go to swgoh.gg and check for yourself! Here's an example - I went to Kyber 2 leaderboard, and started clicking into accounts because I figured that was most likely to catch a relevant account. I get this one.

On Nov 3-5, they had 3625 Skill Rating points and if you hover over the data dots, they are Kyber 1.

On Nov 7 they got squished down to 3567 SRs. They are still labeled as kyber 1. They are also K1 on Nov 8, 9, and 10. Then they won their first match. This took them up to 3609 SR points. When you hover over the Nov 11 dot, NOW they are marked as kyber 2. Because squish + 1 win isn't enough to get them back to kyber1.

Over 3v3, that person had 5 wins, and 4 losses - so they ended last season in kyber 1 before the squish, and had a winning record this season! But after that winning season, they were still net down 15 banners, and therefore in kyber 2.

If they squish all of kyber, then reverse squish the top 10%, won't that create a weird gap at the top of k2, making it much harder to move up? The players just outside the 10% will need a whole bunch of wins to make up the difference wouldn't they?

Would it make more sense to just move the division borders after every squish to maintain the populations?

So I took the liberty of setting up some simulations. I generated a random, normally distributed dataset of 312,000 players with a mean of 2530, and a standard deviation of 525.8676. I got these numbers from looking at the division cut-off scores on the swogh wiki. I took the midpoint of the Kyber 1 and Carbonite 5 cut-offs for the mean, and I also set the Kyber 1 cut-off as the 98th percentile in order to derive the standard deviation.

Here are some quantiles for a generation of the data:
2%-1452, 20%-2089, 50%-2350, 80%-2973, 98%-3610

So you see that the second and 98th percentiles correspond approximately to the Carbonite 5, and Kyber 1 cut-offs, and I found that the 20th percentile roughly corresponds to the Carbonite-Bronzium border, and the 80th percentile roughly falls along the Aurodium-Kyber border. The fact that the borders for some of the leagues seem to overlap (probably due to the end-of-season league updates) throws a bit of a wrench (spanner) into the calculations of quantiles between leagues.

At any rate, I then ran the dataset through a grand arena season simulator. For each "week" of the simulation, I sorted the dataset by skill score to start. I then made brackets of 8 in a linear fashion, doing 39,000 groups of 8 adjacent players starting at 1 and going through the list. I did not account for groups of 7 and byes, using a sample size divisible by 8, and I also didn't add or remove players from the list between weeks--I just used a closed system. For each bracket, I went through three rounds. Round 1, I just did four groups of adjacent pairs. I sent the pairs through a battle function--which was nothing more than a 50% coin flip to determine who won and who lost. I did this because CG's stated goal was to have you winning 50% of your matches, and indeed, if everyone had an accurate measure of "Skill Rating" (winability factor), then in being matched with players of equal SR, you should have a 50% chance of winning if everything is working perfectly as described. So I worked off that assumption. After determining the winner and loser, SRs were adjusted according to the week and round from the numbers I pulled off of swgoh.gg. Numbers of wins and losses for each player are also updated, and a matrix stores that the two fought each other previously.

For round two, I split the bracket into halves; If player 1 had the same score as player 3, then 1&3 and 2&4 were paired, and if not, then 1&4 and 2&3 went into battle. I did a similar pairing procedure for players 5-8. For the round 3 matches, I paired the two players with score of 0, the two with a score of 2, and of the four players with a score of 1, I checked to see whether player 1 had previously played each of the others in order to determine the matchups.

The next iteration of the loop does the next bracket, and then the outer loop goes to the next week, sorts the players by SR again, and goes about making new brackets and doing new "battles."

For a sample size this large, I found that the standard deviations after a season did not balloon nearly as much as my preliminary tests with smaller sample sizes, but still increased by about 10 SR points. Kyber 1 stayed at 2.3% of players, for this first run, and Bronzium 5 increased slightly to 2.2% as well.

I then employed my own "squish" according to a z-score transformation that I suggested in an earlier post. NOTE: I have NO idea whatsoever if this is what CG is doing for the squish. This corrected Kyber 1 to 2.01% of players.

I then ran another season. Again, there wasn't much drift--Kyber 1 increased to about 2.24%. Again, post squish brought Kyber 1 to about 2%. However, I started to notice what seemed like a downward trend, so I ran a total of 45 seasons just to check if this was just random fluctuation. The post squish Kyber 1 sizes started going down to about the 1980s. Here is the graph:

If I'm reading the output of the regression function in R correctly, this is a correlation of about -0.80. So it seems as though there is a downward drift even in my simulation.

There could be a couple of things going on here: 1, I could have just screwed something up majorly. 2, there's maybe some sort of regression to the mean thing going on here.

I think my simulation is missing several key ingredients, at any rate, that make it different from a real player base. I didn't factor in players quitting, new players joining for the first time, returning players hopping in after having their previous SRs adjusted at a 1-2 rate, etc. This happens in the game not only between seasons, but mid-season as well. Additionally, I can't account for varying levels of participation, which would throw off the probabilities of winning any particular match for a specific player. We know from forum posts that there are players who intentionally drop just to get an easy week, or other such shennanigans that they think give them more overall crystals.

My simulation assumed a 50% win rate, which we know is wrong in the real data for several reasons. One is the new players coming in, who are yet to have their SRs accurately estimated. This can throw things off at the lower end, I should think. Another reason is the above mentioned shennanigans throwing off SR estimates for mid-range and high-end players. And the biggest thing is, the algorithm may simply have not had enough time to estimate SRs to the desired 50% win-rate that CG wants for all players. I started with a clean, normally distributed dataset, that assumed initial SR values were indicative of true SR (hence the 50% win rate from the go). However, SRs were initially seeded by GP, and we know that GP is not correlated with skill. So we started off with SR prior estimates that were far off from the "true" values. There may be a lot of error in SR estimates even now, and in the future, if I feel it's worth my time, I might sample win percentages from a distribution--at least in the early seasons--in order to see if this would indeed affect the post-squish division sizes.

To be clear, the only reason I should think the squish would alter the sizes so drastically--if they are indeed using a simple z-score transformation--is because I think the distribution of SRs would be lumpy. There might be huge spikes of the same SR, and maybe certain SRs have very few players. If this effect were very very bad throughout the distribution, it may not be easy to say, "Put 2% of players in Kyber 1." You may face a situation where you either let in too many or too few, depending on how jagged/lumpy the distribution is. The fact that my simulation with clean, smooth distributions with no movement in or out, and assuming 50% win rate from the beginning, even showed a slight shrinkage of Kyber 1 after many seasons. So either I made some error, or that's an artifact of doing this over and over, which is only magnified by the irregularities of the real dataset. And keep in mind, I'm not even sure if we're using the same methods for the skill squish--CG may be doing something entirely different.

So if it is true that there's an effect of shrinking Kyber 1, waiting until SRs settle out may not fix the problem. Maybe some adjustment can be made to account for shrinkage. Additionally, if we see that Kyber 1 is shrinking too much in practice because of a lumpy distribution, perhaps some kind of smoothing procedure can be done before the squish. Maybe using GP, I don't know. Smoothing out the distribution and then doing the squish would undoubtedly make some players mad--we would see their SRs go down for sure, though some people would see theirs increase before the squish.

Interesting, I was discarding the idea of a global ladder because of my observations of accounts dropping from Bronzium 5 to Carbonite 2, for example. I assumed the ladders were specific to each division, or maybe to each league.

Edit: It makes more sense now, especially if it is a global ladder and it’s merely an event trigger that changes your division/league, and you are inserted where appropriate in the new league. It certainly allows that skill squish can change a division without alterring your relative rank.

Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for life.

It now occurs to me that when I was doing my z-score transformation, I was using R's SD function, and I don't know if this uses the population SD formula or the sample formula. The reason we have a sample formula is because we already know that the population formula is a biased estimator over large samples. So I may run it again making sure I do it the right way when I have time.

We're still taking bets on why exactly we're seeing a shrinking of K1 in the real data.

We know why k1 is shrinking. The squish that they are using (see the real example of a k1 squished to k2 player) is too large, such that the value of squish is more than the banners you can get back with a winning record. There is no mathematical way that you can keep k1 from shrinking when you take away more banners than it is possible for players to win.

Again I point you here:
And I will add this, which is skill ratings color coded by divisions for 11/9 (aka post squish SR adjustment but BEFORE re-divisioning happens in week 2):

They are just applying a linear transformation by skill rating across all of kyber. By visual inspection of the squish chart,, the crossover point for a negative squish is somewhere around 3200. That's the middle of kyber 3, as it should be. Kyber 1 is 3610 and above and gets extreme squish down. What we're seeing is that growth up is not as large as the squish down out on the edges of kyber.

So it's a binning problem combined with the magnitude of their squish; the boundary of kyber1 is too far out on the long tail for the squish they apply. The people out in the 4000-4500 region need a bigger squish, the people in the 3550-3700 ish region need a smaller squish.

They're concerned about keeping each LEAGUE the same size. So they squish each league towards the middle, which leaves a gap of skill ratings right below the league boundary.

They need to do the same with k1 to protect it *shrug* they can flatten the gap if they want, I don't really care about the fine details.... but that is the effect they need to have. Once they restore our player numbers.

I remembered the other reason I had discarded the global ladder: matchmaking problems. It’s fine to blur the lines between two divisions, but you can’t match opponents in two different leagues together. So at least at the league level the matchmaking ladders must be separated.

Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for life.

Actually that might even be a reason for some of the inactives/zombies. If the population for a given beacket of matchmaking isn’t divisible by 8, accounts get “drafted” even if they didn’t click join. They could still be shielded from one of the losses, but they are used as filler.

Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for life.

Actually that might even be a reason for some of the inactives/zombies. If the population for a given beacket of matchmaking isn’t divisible by 8, accounts get “drafted” even if they didn’t click join. They could still be shielded from one of the losses, but they are used as filler.

No one gets drafted that didn't join. Some people end up in brackets of 7, and for the round where they don't have an opponent, they get a bye.

It now occurs to me that when I was doing my z-score transformation, I was using R's SD function, and I don't know if this uses the population SD formula or the sample formula. The reason we have a sample formula is because we already know that the population formula is a biased estimator over large samples. So I may run it again making sure I do it the right way when I have time.

We're still taking bets on why exactly we're seeing a shrinking of K1 in the real data.

We know why k1 is shrinking. The squish that they are using (see the real example of a k1 squished to k2 player) is too large, such that the value of squish is more than the banners you can get back with a winning record. There is no mathematical way that you can keep k1 from shrinking when you take away more banners than it is possible for players to win.

Again I point you here:
And I will add this, which is skill ratings color coded by divisions for 11/9 (aka post squish SR adjustment but BEFORE re-divisioning happens in week 2):

They are just applying a linear transformation by skill rating across all of kyber. By visual inspection of the squish chart,, the crossover point for a negative squish is somewhere around 3200. That's the middle of kyber 3, as it should be. Kyber 1 is 3610 and above and gets extreme squish down. What we're seeing is that growth up is not as large as the squish down out on the edges of kyber.

So it's a binning problem combined with the magnitude of their squish; the boundary of kyber1 is too far out on the long tail for the squish they apply. The people out in the 4000-4500 region need a bigger squish, the people in the 3550-3700 ish region need a smaller squish.

The second graph here is fascinating. It does look like there is a chunk missing around 3000. Also, it looks like not only did K1 shrink, but C5 grew substantially. That tail goes on forever and there is even a bump at the end. This is probably not just the new players, but also people who join and never attack, giving far more players each season with 0-9 records (or close to) than expected. If your server has access to the data table, I would love to see the skewness and kurtosis values on this. It looks like it might be a little platykurtic, but it's hard to tell from looking, and the spikes at the top might compensate the rest of the distribution in terms of the value.

In theory a linear transformation should work fine at preserving all boundaries where they want them to be without the need for piecemeal functions; all it's doing its changing the scale. This assumes, however, that the distribution is behaving itself, and I don't think it is. I don't know if my suggestion of a smoothing function is completely necessary, but I'm wondering if some adjustment for skewness and kurtosis could also do the trick. Skewness, more than else, I might think.

Granted, I think they might also impose limits on how far someone can fall, as I don't think it's fun for people in Carbonite to face someone with 6 GLs, but that's a separate issue.

The second graph here is fascinating. It does look like there is a chunk missing around 3000. Also, it looks like not only did K1 shrink, but C5 grew substantially. That tail goes on forever and there is even a bump at the end. This is probably not just the new players, but also people who join and never attack, giving far more players each season with 0-9 records (or close to) than expected. If your server has access to the data table, I would love to see the skewness and kurtosis values on this. It looks like it might be a little platykurtic, but it's hard to tell from looking, and the spikes at the top might compensate the rest of the distribution in terms of the value.

I'm sure the GG guys have a data table for that, but I don't; I just have the graph they put out. I'm just thankful that they share the data they do, which has allowed me to do this kind of analysis.

Granted, I think they might also impose limits on how far someone can fall, as I don't think it's fun for people in Carbonite to face someone with 6 GLs, but that's a separate issue.

I mean, someone with 6 GLs in Carbonite is at the appropriate skill rating for their gameplay style - even with those GLs, they lose because they don't use them.

There is a whole OTHER discussion we could have about whether they "ought to" be using the same rating for matchmaking and for rewards or whether that structure is causing a lot of the problems, but in this world, that's the mechanism they chose, and these kinds of matches are the natural outcome.

I've been in Kyber 1 since the new system and I've had all 5-4 seasons for the last 6 seasons (except one 4-5 season). So in theory I should at least be holding steady. However my skill rating has continued to drop season over season due to the squish. I'm aware of the decreasing point changes as the season progresses however having a "winning" season irrespective of how you got there should not cause you to start lower the following season.

I have noticed this. It has affected my approach to GAC and to the game in general because in order to swim against the current of the current squish you need to maintain 6-3 seasons. Fix the Kyber 1 squish formula and do it before it's too late.

They're concerned about keeping each LEAGUE the same size. So they squish each league towards the middle, which leaves a gap of skill ratings right below the league boundary.

Which also isn't always right. I've posted screenshots here before were it is clearly visible, that the squish took points away from me, moving me further from the middle instead of moving me towards it. (In Aurodium)

They're concerned about keeping each LEAGUE the same size. So they squish each league towards the middle, which leaves a gap of skill ratings right below the league boundary.

Which also isn't always right. I've posted screenshots here before were it is clearly visible, that the squish took points away from me, moving me further from the middle instead of moving me towards it. (In Aurodium)

I would be curious to know if that has happened since the big shift downwards in upper league size this summer? When they made the ~30k adjustment down over 3 months in kyber size but aurodium stayed around the same, that must have also coincided with a downward pressure on aurodium players, since the kyber players would presumably had pushed equivalent aurodium players into chromium…

If it was just that, then we’d expect aurodium to have standard “center squish” September through November….

They're concerned about keeping each LEAGUE the same size. So they squish each league towards the middle, which leaves a gap of skill ratings right below the league boundary.

Which also isn't always right. I've posted screenshots here before were it is clearly visible, that the squish took points away from me, moving me further from the middle instead of moving me towards it. (In Aurodium)

I would be curious to know if that has happened since the big shift downwards in upper league size this summer? When they made the ~30k adjustment down over 3 months in kyber size but aurodium stayed around the same, that must have also coincided with a downward pressure on aurodium players, since the kyber players would presumably had pushed equivalent aurodium players into chromium…

If it was just that, then we’d expect aurodium to have standard “center squish” September through November….

I assume it is exactly what you said. I can tell because almost all of my opponents are players whom would belong more into Kyber and I slowly fall down. I was in Aurodium 3 for quite a while, now I am in 4 and if my matches will be as they were the last 2-3 seasons, I will fall further.

Now I don't have any data, but I do usually see high quality posts from Taliana with lots of data to back up my anecdotal experiences and observations within GAC.
K1 have definitely been shrinking and it do feel like it's getting smaller than what was initially outlined, with this data suggests.

As another anecdotal datapoint, I did pretty poorly in 3v3 resulting in a pre-squish skill score of 3.641 and a post squish score of 3.582.
This means I am effectively down to K2 (still showing as K1 until at least first round).
My rank was around 2.400 in K1 end of last season, so pretty sure K1 is now nearing 2.000 players.

I was squished from 3687 to 3622, and that’s after a 5-4 season, which was preceded by a 6-3 season.

Despite 2 winning seasons in a row, if I lose round 1, I’m demoted to k2

Out of curiosity, what is your rank in K1? Ideally pulled after end of signup phase since it updates as people sign up. But it would be interesting to hear where you are with only 12 points more than the threshold

Regarding the issue of people dropping a league after winning: Do you think this is because division changes don't update until after each round? I do now find myself in the situation where my updated SR should put me in K3, but I'm still listed as K2--and I finished last season in K2 and have been getting K2 rewards during the off-week. So do you think the fact that I'm still being listed as K2 is merely to preserve that crystal income until after the first round, as the season actually hasn't started yet?

I was squished from 3687 to 3622, and that’s after a 5-4 season, which was preceded by a 6-3 season.

Despite 2 winning seasons in a row, if I lose round 1, I’m demoted to k2

Out of curiosity, what is your rank in K1? Ideally pulled after end of signup phase since it updates as people sign up. But it would be interesting to hear where you are with only 12 points more than the threshold

Currently 1937. Will check again just before signup ends.

## Replies

Sorry, I was at work all day!

CG used…. CG logic.

When they apply the data squish it “doesn’t change your rank”. However, at the end of the following battle you change to whatever your new rating puts you at.

As an arbitrary example, if you are at 3611, you are kyber 1. Say you are squished 50 rating points. Now you are 3561. But you’re still listed at kyber 1 and put into a kyber 1 bracket (this is why the beginning of the month numbers don’t drop right away).

Now you do your first battle and win, and get 40 rating points. Now you are skill rating 3601.

NOW the game does the ranking comparison and….. ooops! You’re kyber 2 now, even though you won your first battle.

so…they can claim the “squish” didn’t change your rankings! The effect gets delayed and is applied a battle later. They are technically/literally correct but functionally wrong. (Either that or their claim was disingenuous. You decide…)

This is also why there is such a big difference between week 1 and week 2/3 of the month on kyber1 numbers. If you do a bracket count, everyone who has been rating dropped into kyber 2 still gets listed as being in a kyber1 bracket, but gets a kyber 2 payout.

Previously unscored players entering when they reach level 85 get entered into carbonite, I believe. Then they need to rise through the ranks.

Way back in January when new GAC started, they assigned skill ratings to any player who had been active within approximately a year (at least within old division 1 GPs, based on people scanning their ally lists and looking at who got ranked and who did not). Then when GAC started, the inactive accounts didn't join, so didn't get assigned into brackets, and therefore don't show up in these "active GAC" counts that I'm representing here. That was part of why there were such wild league resizings in Feb - I don't even start the data until March when it started to settle down.

(also, they screwed up month 1 and set kyber 1 to be 20% of kyber, not 10%, and had an extra 10% of players in kyber, and that's when they moved the actual skill rating boundary; that was a bloody month for the bottom of kyber 1....)

I don't know what they do with people who were SO idle they didn't even get a rating last year. Someone in my arena shard just showed up after around a year and a half to 2 years away - if they stick around until next GAC start, I'll ask them? But those are fairly small numbers of players.

League-wise: they're pretty good at manipulating the leagues to the sizes they want with the squish. The only place it appears to be screwed up is kyber 1, and I'm really assuming that's because they applied the same shape squish to kyber as they did to the middle leagues, but kyber has an edge effect that makes it continually shrink.

The person you REALLY want to talk to about squish shapes is Dawnsinger; she hangs out on many of the usual community discords. GrandArenaScience is one of the main places these discussions take place. You can also ping her on swgohevents I think?

1) they said they were using a Bayesian system and left it at that. I went and read up on some of the papers for what that means; typically there is a factor for skill, and then a factor for "how certain" the system is of the accuracy of your skill rating. That's supposed to help new players find their way in the matchmaking more quickly. CG is doing something odd with the certainty factor, and resetting it every season even though the skill ratings only changed by squish? I don't entirely understand, but from what I could tell on how other games use this system, that's why the decreasing banner change. Also, as CrzyDroid says, it effectively helps shuffle up rematches when you're in a broad part of the population

2) Yeah, that's the conclusion I came to. The fact that they don't modify the shape of the squish when they hit the boundary of kyber is what cements it for me. The thing I wonder is why their stats people haven't noticed the shrinking... but then again, we know that by the time they changed the old GAC divisions, division 1 had 36% of all players in it, so we know they let things go far beyond what players like.

What I really, really think in my heart of hearts is that CG doesn't realize that this is an urgent matter, and that THEY NEED TO TALK TO US about it. I've talked to many players who have some variation of "I must really suck at this game, because I'm trying my hardest but the battles are just getting harder, and I'm dropping instead of improving." I think CG did artificial manipulations to the shape of leagues through the squish that made a lot of sense structurally or in the big picture, but they forgot the impact on individual players. Aaaaaand then they really dropped the ball on kyber 1. And didn't realize that kyber 1 players tend to be super obsessed and notice these things!

Are you sure about this? I feel like when I'm in the border when the squish happens, I get pushed down a division before the first round starts.

Everyone. Go to swgoh.gg and click on any player. Look at the Nov 6 to Nov 7 skill rating change. That is the squish. You can click on many different players at many different ranks and find the magnitude.

Yes. Go to swgoh.gg and check for yourself! Here's an example - I went to Kyber 2 leaderboard, and started clicking into accounts because I figured that was most likely to catch a relevant account. I get this one.

On Nov 3-5, they had 3625 Skill Rating points and if you hover over the data dots, they are Kyber 1.

On Nov 7 they got squished down to 3567 SRs. They are still labeled as kyber 1. They are also K1 on Nov 8, 9, and 10. Then they won their first match. This took them up to 3609 SR points. When you hover over the Nov 11 dot, NOW they are marked as kyber 2. Because squish + 1 win isn't enough to get them back to kyber1.

Over 3v3, that person had 5 wins, and 4 losses - so they ended last season in kyber 1 before the squish, and had a winning record this season! But after that winning season, they were still net down 15 banners, and therefore in kyber 2.

That's what squish does. Over and over again.

https://swgoh.gg/p/517579727/

Would it make more sense to just move the division borders after every squish to maintain the populations?

Here are some quantiles for a generation of the data:

2%-1452, 20%-2089, 50%-2350, 80%-2973, 98%-3610

So you see that the second and 98th percentiles correspond approximately to the Carbonite 5, and Kyber 1 cut-offs, and I found that the 20th percentile roughly corresponds to the Carbonite-Bronzium border, and the 80th percentile roughly falls along the Aurodium-Kyber border. The fact that the borders for some of the leagues seem to overlap (probably due to the end-of-season league updates) throws a bit of a wrench (spanner) into the calculations of quantiles between leagues.

At any rate, I then ran the dataset through a grand arena season simulator. For each "week" of the simulation, I sorted the dataset by skill score to start. I then made brackets of 8 in a linear fashion, doing 39,000 groups of 8 adjacent players starting at 1 and going through the list. I did not account for groups of 7 and byes, using a sample size divisible by 8, and I also didn't add or remove players from the list between weeks--I just used a closed system. For each bracket, I went through three rounds. Round 1, I just did four groups of adjacent pairs. I sent the pairs through a battle function--which was nothing more than a 50% coin flip to determine who won and who lost. I did this because CG's stated goal was to have you winning 50% of your matches, and indeed, if everyone had an accurate measure of "Skill Rating" (winability factor), then in being matched with players of equal SR, you should have a 50% chance of winning if everything is working perfectly as described. So I worked off that assumption. After determining the winner and loser, SRs were adjusted according to the week and round from the numbers I pulled off of swgoh.gg. Numbers of wins and losses for each player are also updated, and a matrix stores that the two fought each other previously.

For round two, I split the bracket into halves; If player 1 had the same score as player 3, then 1&3 and 2&4 were paired, and if not, then 1&4 and 2&3 went into battle. I did a similar pairing procedure for players 5-8. For the round 3 matches, I paired the two players with score of 0, the two with a score of 2, and of the four players with a score of 1, I checked to see whether player 1 had previously played each of the others in order to determine the matchups.

The next iteration of the loop does the next bracket, and then the outer loop goes to the next week, sorts the players by SR again, and goes about making new brackets and doing new "battles."

For a sample size this large, I found that the standard deviations after a season did not balloon nearly as much as my preliminary tests with smaller sample sizes, but still increased by about 10 SR points. Kyber 1 stayed at 2.3% of players, for this first run, and Bronzium 5 increased slightly to 2.2% as well.

I then employed my own "squish" according to a z-score transformation that I suggested in an earlier post. NOTE: I have NO idea whatsoever if this is what CG is doing for the squish. This corrected Kyber 1 to 2.01% of players.

I then ran another season. Again, there wasn't much drift--Kyber 1 increased to about 2.24%. Again, post squish brought Kyber 1 to about 2%. However, I started to notice what seemed like a downward trend, so I ran a total of 45 seasons just to check if this was just random fluctuation. The post squish Kyber 1 sizes started going down to about the 1980s. Here is the graph:

If I'm reading the output of the regression function in R correctly, this is a correlation of about -0.80. So it seems as though there is a downward drift even in my simulation.

There could be a couple of things going on here: 1, I could have just screwed something up majorly. 2, there's maybe some sort of regression to the mean thing going on here.

I think my simulation is missing several key ingredients, at any rate, that make it different from a real player base. I didn't factor in players quitting, new players joining for the first time, returning players hopping in after having their previous SRs adjusted at a 1-2 rate, etc. This happens in the game not only between seasons, but mid-season as well. Additionally, I can't account for varying levels of participation, which would throw off the probabilities of winning any particular match for a specific player. We know from forum posts that there are players who intentionally drop just to get an easy week, or other such shennanigans that they think give them more overall crystals.

My simulation assumed a 50% win rate, which we know is wrong in the real data for several reasons. One is the new players coming in, who are yet to have their SRs accurately estimated. This can throw things off at the lower end, I should think. Another reason is the above mentioned shennanigans throwing off SR estimates for mid-range and high-end players. And the biggest thing is, the algorithm may simply have not had enough time to estimate SRs to the desired 50% win-rate that CG wants for all players. I started with a clean, normally distributed dataset, that assumed initial SR values were indicative of true SR (hence the 50% win rate from the go). However, SRs were initially seeded by GP, and we know that GP is not correlated with skill. So we started off with SR prior estimates that were far off from the "true" values. There may be a lot of error in SR estimates even now, and in the future, if I feel it's worth my time, I might sample win percentages from a distribution--at least in the early seasons--in order to see if this would indeed affect the post-squish division sizes.

To be clear, the only reason I should think the squish would alter the sizes so drastically--if they are indeed using a simple z-score transformation--is because I think the distribution of SRs would be lumpy. There might be huge spikes of the same SR, and maybe certain SRs have very few players. If this effect were very very bad throughout the distribution, it may not be easy to say, "Put 2% of players in Kyber 1." You may face a situation where you either let in too many or too few, depending on how jagged/lumpy the distribution is. The fact that my simulation with clean, smooth distributions with no movement in or out, and assuming 50% win rate from the beginning, even showed a slight shrinkage of Kyber 1 after many seasons. So either I made some error, or that's an artifact of doing this over and over, which is only magnified by the irregularities of the real dataset. And keep in mind, I'm not even sure if we're using the same methods for the skill squish--CG may be doing something entirely different.

So if it is true that there's an effect of shrinking Kyber 1, waiting until SRs settle out may not fix the problem. Maybe some adjustment can be made to account for shrinkage. Additionally, if we see that Kyber 1 is shrinking too much in practice because of a lumpy distribution, perhaps some kind of smoothing procedure can be done before the squish. Maybe using GP, I don't know. Smoothing out the distribution and then doing the squish would undoubtedly make some players mad--we would see their SRs go down for sure, though some people would see theirs increase before the squish.

Edit: It makes more sense now, especially if it is a global ladder and it’s merely an event trigger that changes your division/league, and you are inserted where appropriate in the new league. It certainly allows that skill squish can change a division without alterring your relative rank.

We know why k1 is shrinking. The squish that they are using (see the real example of a k1 squished to k2 player) is too large, such that the value of squish is more than the banners you can get back with a winning record. There is no mathematical way that you can keep k1 from shrinking when you take away more banners than it is possible for players to win.

Again I point you here:

And I will add this, which is skill ratings color coded by divisions for 11/9 (aka post squish SR adjustment but BEFORE re-divisioning happens in week 2):

They are just applying a linear transformation by skill rating across all of kyber. By visual inspection of the squish chart,, the crossover point for a negative squish is somewhere around 3200. That's the middle of kyber 3, as it should be. Kyber 1 is 3610 and above and gets extreme squish down. What we're seeing is that growth up is not as large as the squish down out on the edges of kyber.

So it's a binning problem combined with the magnitude of their squish; the boundary of kyber1 is too far out on the long tail for the squish they apply. The people out in the 4000-4500 region need a bigger squish, the people in the 3550-3700 ish region need a smaller squish.

They need to do the same with k1 to protect it *shrug* they can flatten the gap if they want, I don't really care about the fine details.... but that is the effect they need to have. Once they restore our player numbers.

No one gets drafted that didn't join. Some people end up in brackets of 7, and for the round where they don't have an opponent, they get a bye.

The second graph here is fascinating. It does look like there is a chunk missing around 3000. Also, it looks like not only did K1 shrink, but C5 grew substantially. That tail goes on forever and there is even a bump at the end. This is probably not just the new players, but also people who join and never attack, giving far more players each season with 0-9 records (or close to) than expected. If your server has access to the data table, I would love to see the skewness and kurtosis values on this. It looks like it might be a little platykurtic, but it's hard to tell from looking, and the spikes at the top might compensate the rest of the distribution in terms of the value.

In theory a linear transformation should work fine at preserving all boundaries where they want them to be without the need for piecemeal functions; all it's doing its changing the scale. This assumes, however, that the distribution is behaving itself, and I don't think it is. I don't know if my suggestion of a smoothing function is completely necessary, but I'm wondering if some adjustment for skewness and kurtosis could also do the trick. Skewness, more than else, I might think.

Granted, I think they might also impose limits on how far someone can fall, as I don't think it's fun for people in Carbonite to face someone with 6 GLs, but that's a separate issue.

I'm sure the GG guys have a data table for that, but I don't; I just have the graph they put out. I'm just thankful that they share the data they do, which has allowed me to do this kind of analysis.

I mean, someone with 6 GLs in Carbonite is at the appropriate skill rating for their gameplay style - even with those GLs, they lose because they don't use them.

There is a whole OTHER discussion we could have about whether they "ought to" be using the same rating for matchmaking and for rewards or whether that structure is causing a lot of the problems, but in this world, that's the mechanism they chose, and these kinds of matches are the natural outcome.

I have noticed this. It has affected my approach to GAC and to the game in general because in order to swim against the current of the current squish you need to maintain 6-3 seasons. Fix the Kyber 1 squish formula and do it before it's too late.

Which also isn't always right. I've posted screenshots here before were it is clearly visible, that the squish took points away from me, moving me further from the middle instead of moving me towards it. (In Aurodium)

We are all made of star-stuffI would be curious to know if that has happened since the big shift downwards in upper league size this summer? When they made the ~30k adjustment down over 3 months in kyber size but aurodium stayed around the same, that must have also coincided with a downward pressure on aurodium players, since the kyber players would presumably had pushed equivalent aurodium players into chromium…

If it was just that, then we’d expect aurodium to have standard “center squish” September through November….

I assume it is exactly what you said. I can tell because almost all of my opponents are players whom would belong more into Kyber and I slowly fall down. I was in Aurodium 3 for quite a while, now I am in 4 and if my matches will be as they were the last 2-3 seasons, I will fall further.

We are all made of star-stuffWe are all made of star-stuffK1 have definitely been shrinking and it do feel like it's getting smaller than what was initially outlined, with this data suggests.

As another anecdotal datapoint, I did pretty poorly in 3v3 resulting in a pre-squish skill score of 3.641 and a post squish score of 3.582.

This means I am effectively down to K2 (still showing as K1 until at least first round).

My rank was around 2.400 in K1 end of last season, so pretty sure K1 is now nearing 2.000 players.

Despite 2 winning seasons in a row, if I lose round 1, I’m demoted to k2

Out of curiosity, what is your rank in K1? Ideally pulled after end of signup phase since it updates as people sign up. But it would be interesting to hear where you are with only 12 points more than the threshold

We are all made of star-stuff