The best practice for recreational diving is that your BCD needs to be able to do three things.
1. Your BCD should be able to float your tank (Full) and all your gear independently of the diver at the surface.
2. The BCD should also be able to float all your gear and YOU with your head above water in an upright position.
3. If you are using a compressible exposure suit, you need to be able to swim your gear up at depth. That means that if you are NOT using a dry suit, you will need about twice the reserve buoyancy used at your safety stop for a dive at the sport limit, assuming you are a reasonably strong swimmer. Overhead environment divers, you already know your requirements, so this is obviously simplified for recreational diving.
Now let's assume you are diving a dry suit, because that takes case #3 off the table for the moment, we'll come back to that one.
Most divers in any exposure suit are positively buoyant, so the first rule often determines the requirement.
The practical way to do this is to find a salt water pool, put all your gear on with a near empty tank and do a weight check, then take off all your gear and see if your BCD can float it. Done. But there are few salt water pools and fewer dive shops that will let you try that new BCD you really want to buy in a saltwater pool. So, let's try some math.
Here's how to calculate the requirement:
Add up the buoyancy of all your gear and you get the minimum lift of your gear. To do this, you will need to know your minimum weighting at a safety stop. But of course you have been logging all the gear you wear on every dive, so calculating that should be easy! My dry suit demands that I have a minimum of -22# with 500psi in my tank at 15fsw
With a bit of apprehension, I'll do my kit here in public to show you how
Let's see, my steel HP 100cf tank is about -10# when full (-2.5# when empty), -2# for my first and second stage, -1.5# for my aluminum backplate, -7# for my single tank adapter and keel weight, -1# for my jet fins, and -8# for my lead. I need a bit more than +28.5# of lift in my BCD- In real life, I use a 40# wing for my cold water adventures which gives me a bit of room to work with. My gear is safe without me, and I will be buoyant without my gear. The two requirements are met.
Now let's do a doubles rig, just to make sure it still works. The doubles rig has two steel 100cf tanks, so that part becomes -20# full and -5# empty. There is no STA and keel weight, but I add in tank bands and a manifold, for -7#. Add another set of regs (-4# now) and keep my Aluminum backplate -1.5#, and fins -1#, add -4# of lead and I'm ready to dive! So now I'm -37.5# with tanks full and -22.5# with tanks empty. I can get by with a 40# wing in my doubles using the same dry suit. It's a balanced rig, and I don't intend to do safety stops with empty tanks, so there is a bit of conservatism built in, but if I get a set of HP Steel 120 tanks, I'll need a higher capacity wing.
OK wet suit lovers, your turn.
You already know that you need to know your total balast requirements with near empty tanks at your safety stop. Let's say you have the same requirement as me in my wet suit, -22# at 15fsw. What happens at 130'?
At 15 fsw, your wet suit is compressed 1.5 bar at 15fsw. Remember boyles law? What happens at 5 bar? That's right, your wet suit will be compressed to near nothingness and loses just about all of it's buoyancy (you'll have about +2# at depth.)
So here we are at the bottom and we've lost +20#. In my singles kit, I have an extra 11.5# of lift and I might consider swimming up -8.5 with a completely full BCD. In reality, I know I could do this, but this would add un necessary task loading. Besides, nobody looks cool swimming around at 130' negatively buoyant. This is one of the reasons I dive a dry suit. I don't want to be cold at 130fsw, and I certainly don't want to be negatively buoyant, fighting to maintain trim.
The doubles kit is a non-starter in a wet suit at depth, I'd have to jump up to a +60# wing using a wet suit.
Wet suits require some additional planning if you will be diving deep.
I hope that was useful!