That being said, the substitute instances considered could be trivially accepted by any task running on the original instance, so long as it doesn't misbehave when given too many resources. In the case of vCPU, you can even hide extra vCPU cores, so a c6g.xlarge can be made effectively indistinguishable from a m6g.2xlarge by disabling the vCPUs at the hypervisor level.
You are hypothesizing that the price differences produce "lost" revenues.
An alternative hypothesis can be that the price differences produce similar or higher level of revenues for AWS through price segmentation, with Amazon recognizing the lack of adoption of certain spot instance bidding features and auction markets reacting appropriately.
Unless you have the capacity and quantity demanded for each instance types, you can't prove your hypothesis. You are assuming scenario 3 (below) with no insights into price elasticity of the underlying customers.
Example:
Baseline:
Instance types A and B are equivalent.A is priced at $3, with capacity of 1000, quantity demanded of 800. B is priced at $2, with capacity of 1000, quantity demanded of 200. Total quantity demanded = 1,000.
Revenues from instance type A = $3 x 800 = $2,400 Revenues from instance type B = $2 x 200 = $ 400
Total revenues = $2,800
Scenario 1: All customers purchase instance B instead due to better price discovery.
Revenues from instance type A = $3 x 0 = $0
Revenues from instance type B = $2 x 1,000 = $ $2,000
Total quantity demanded = 1,000.Total revenues = $2,000
Amazon loses $800 in revenues, there are no "lost" revenues" recovered.
Scenario 2: Amazon changes instance type B price to $3. Total quantity demand decreases to 900 due to price elasticity of instance type B customers.
Revenues from instance type A = $3 x 800 = $2,400
Revenues from instance type B = $3 x 100 = $300Total revenues = $2,700
Amazon loses $100 in revenues, there are no "lost" revenues recovered.
Scenario 3: Amazon changes instance type B price to $3. Total quantity demand remains at 1,000.
Revenues from instance type A = $3 x 800 = $2,400
Revenues from instance type B = $3 x 200 = $600Total revenues = $3,000
Amazon recovers $200 in "lost" revenues.
Assuming the market is in equilibrium, the above scenarious aren't realistic, as demand at the market price would equal supply at the current price (roughly, of course).
Suppose there are 1000 c6g and 200 c6gd, with equilibrium price of $3 and $2, respectively (i.e., all instances have demand). Amazon re-SKUs c6gd as c6g until there are 1100 c6g selling fro $2.90 and 100 c6gd selling at $2.90. Total revenue is $3480 vs. $3400. Of course it's impossible to know the true numbers without hidden knowledge of the market, but this is more akin to what would occur. Amazon effectively has a risk-free arbitrage opportunity here, so it stands to reason that there is revenue to be made. Customers don't have this option (since you can't short spot instances), so the best you can do is diversify and save money.
Edit: Actually, the AWS spot market is often out of equilibrium in a way that makes this reselling even more effective. For instance, in the example in the article the c6gd instance is actually pegged at the minimum price, so some number of those instances could be resold as c6g without moving the c6gd price at all.
Spot instance capacities are a function of the all instance capacity for the same type and on-demand instance usage. Spot instance pricing can influence the quantity demanded of on-demand instances of the same type, and vice-versa.
Anyhow, there’s no way we can figure out whether you’re right or wrong with any reasonable level of certainty.