I calculate CPU as a % of all CPU-eligible flights for which I have not applied an instrument, then weight yes/no by BIS to get an overall percentage. I do something similar (but independent) for RPU and GPU.
The weighting-by-distance fixes most of the SDC/VDB issues. For corner cases (rebooked onto Y-only craft/OAL), I'd probably count it as a CPU if I had already cleared into F (or obviously would imminently) prior to the switch.
Sadly I don't travel with companions on CPU-eligible flights on which I stand a shot, or personally on YBM fares, enough for those to have a statistical impact on my upgrade rates
