I am good with using some combination of either squad rankings or HQ levels. They both have distinct advantages over base score, which only approximates defensive strength and does not factor in offensive strength very much. I think war matchups, at least the bad one's in the eyes of participants, comes down to three problems. The number of squads within each level that are participating, differences in skill level, and how active the squads are.
I think squad rankings capture skill level and activity level more than HQ does, and might make the most sense. It takes some combination of activity and/or skill to accumulate medals which in turn affects your squad ranking. It's a simple number that factors in both to some degree, acknowledging that sandbaggers might circumvent the system. The number of participating squads within each level will be difficult to fix. I went through a lot squad matchups through KSOD, and it seems clear there are more top 1000 squads in wars that those outside the top 1000. Quick and dirty math says it's about 10 to 1.
The only suggestion I can think of, is to have an option to select any matchup or a quote fair matchup only. If you select any matchup, the matchup process will go through it's selection process until it exhausts all options and will force a matchup. The fair matchup option, will only match a squad with a similar squad ranking. If it can't find a fair matchup based on that criteria, it would boot you out of the cue after X amount of hours. You don't go to war if that happens, and you are out of luck.
After looking through the various matchups our squad and other squads are seeing, it's clear to me that my squad does not have any issues currently with matchups. Why? Because we have a big pool of squads to matchup with. There are more squads playing in wars that are in the top 1000 in squad rankings than there are outside of the top 1000. Even though the actual algorithm uses base scores, I suspect squads in the top 1000 have similar base scores, war participation levels, squad mix, etc. Therefore, they are matched up frequently. The squads outside of the top 1000 will rarely see another similar squad, and the matchmaking algo continues until it runs out of options. The only other option is a top 1000 squad. Bingo ... lopsided loss for the lower ranked squad.
The squads participating are to blame and not the matchmaking system. The only option for squads outside the top 1000 right now, is launch a war and if there's no matchup within the first 15 to 30 minutes, cancel. You need to live with not having a war if that happens, not because the matchmaking is bad. It's because there are no other squads at your level, that are currently available to play. I don't know how you can program around that much, except to automate the cancelling of the matchmaking process if there are no close matchups.
This might not be the answer lower ranked squads want to hear, but it is what it is.
Squad Level: 50