You can see the details
here and
here, but in short, you are graded on a bell curve. You won't see much gain or loss on the top and bottom end, because there simply not enough players to match you equally, as indicated by the graphs in those links.
The actual GSP numbers are meaningless. What's important is your win rate. If you want to get into Elite for instance, I find I'm roughly around a 60% win rate (over 50 games) whenever I get a character into Elite. GSP is a proxy for your actual rank, not the process itself. It doesn't matter how much GSP you have relative to your opponent, it matters how consistently you win against that opponent.
So if it is expected that you beat someone one deviation lower than you 3 out of 4 times, then doing so will maintain your current rank. You will gain more GSP each of the three times you win, but then will take a huge hit on the fourth time when you lose. The bigger loss is perceived to be set you back more than you were, but it actually is just putting you right back where you were before (maintaining your current rank). This is to prevent your GSP from inflating indefinitely. Otherwise, your GSP would just keep rising, even though the rank it's supposed to represent will stay the same.
But if you happen to win 4/4 games, then you'll get a big boost regardless of how much the gap in GSP is between you. That's because you exceeded the algorithm's expectation of you and that's when you rank up or see a big boost in GSP. And if you lose more than one game, you will see a huge hit that puts you lower than you were before, because you did worse than expected and your rank has now fallen.
That's why GSP was a dumb metric. If you don't understand what's going on behind the scenes, it just seems random and arbitrary. And that's because it is mostly random and arbitrary. How much you gain and lose is separate from GSP disparity between the players and is more based on trying to keep sync with the "hidden" ranking process.
And that's also why it is silly to try to game the system by leaving after every match. Leaving after every match doesn't magically reset the 3/4 counter just because you are fighting someone new. And it doesn't change the bell curve either, so every new player you face is going to be roughly in the same skill range. Meaning your rank will still rise and fall relative to whether you actually "deserve" to be at this rank.
Unfamiliar MUs or playstyles you particularly struggle against or just plain old online jank can wreck your ranking, but so long as you actually are better than the average within that rank, you'll quickly make it back. I play doubles with Lucas a lot, because nobody plays doubles in Elite, but I get inundated with Free for Alls that tank my rank. When it gets too low I switch back to 1v1 and breeze back to where I was before. That's because my actual skill level is much greater than where I was, so it isn't too much trouble to rank up from there.
So just forget the numbers and focus on improving. If you must have numbers, look at your win rate in the online Records section. Try to keep it above 50% over 50 games. And by that, I mean actually build solid fundamentals and rematch whenever you lose to figure out why you lost (provided it wasn't an awful connection). The better you are, the easier it is to manipulate your rank. And at some point, your rank will cease to have any real meaning to you.