Now, do a sanity check:
1. Split offensive and defensive level. Your level is the average of those two.
2. Map offensive and defensive CR to your offensive and defensive levels, and overall level.
It appears that your HP goes up by 8 per level and your DPR goes up by 5. I find this fishy - your damage output scales super fast.
A baseline 5e rogue with two short swords does 2d6+3-5 + 1d6*level/2, with bonus accuracy on the sneak attack dice (worth approx a 1.5x multiplier). This is 10-12 + 3.5 * 1.5 * L/2 = 10-12 + 2.625 * L. This rogue scales at half the speed your monster does.
A baseline 5e fighter using a greatsword does 2d6(8)+3-5, xTier, plus surges. This is 11-13 * (1 + 3L/20) roughly, or 11-13 + 1.95L. Again, scales at under half the speed your monsters do. If we assume 4 rounds between short rests (!) this is boosted by a factor of 6/4 (x1.5) at level 20, hitting ~80 roughly. Still, far behind
A L 20 Fighter with 16 Con has 9*20 + 4 = 184 HP with 25.5 self healing (second wind) is 209.5 HP. Blows the durability of your monsters out of the water.
Going further, a level 20 Paladin has 184 HP and a 200 HP daily LoH budget, and a L 20 cleric has insane HP available (via heals) with not much optimization.
It appears you are looking at anti-optimized durability PCs and heavily optimized DPS PCs if you claim that matches PC abilities.
At level 20, 22 AC is very good for anyone not loaded down with AC (VRare and Legendary) boosting items, or a heavy defensive build (+3 shield user with plate or capped dex and similar); but this is your baseline AC for a L 20 monster.
The DMG has HP go up by 15 per CR and DPR go up by 6.
Offensive CR is very roughly DPR/6 -1.
Defensive CR is very roughly HP/15 -4.
Your offensive Level is very roughly DPR/5.
Your defensive Level is very roughly HP/8.
(Your AC, ATK and Saves grows much faster, but for a first pass I will neglect it).
DPR ~= 5*oL
HP ~= 8*dL
DPR ~= 6oCR+6
HP ~= 15dCR+75
oCR = 5/6 oL -1
dCR = 8/15 dL -4
oL = 1.2 * oCR + 1.2
dL = 15/8 dCR +7.5
So a oCR 12 dCR 8, overall level 19 monster maps to a oL 16 dL 22.5, overall level 19.
oCR 10 dCR 10 maps to oL 13 dL 26.25 overall level 19.
oCR 8 dCR 12 maps to oL 11 dL 30 overall level 21.
If we set 2L = oL+dL and oCR=dCR=CR, we get
2L = 1.2 * CR + 1.2 + 15/8 CR +7.5
L = 1.54 CR + 4.35
CR 1 is L 6
CR 2 is L 7
CR 3 is L 9
CR 4 is L 10
CR 5 is L 12
CR 6 is L 13
CR 7 is L 15
CR 8 is L 16
CR 9 is L 18
CR 10 is L 19
CR 11 is L 21
much of this is because your HP are so low compared to monster building guidelines; 5e monsters are mostly designed as solos, so a lot of HP and not enough DPR in comparison.