My day job is writing trading software, specifically for exchange traded instruments (shares, futures, options, some spreads, and a couple of other things). We (and a few of our competitors) DO use (k, m, b) for (1000, 1x10^6, 1x10^9). Our system has configurable per user and per group limits on the number of units or the value of the trade - specifically to stop this kind of thing from happening. I find it unusual that a trader would only deal in amounts of $100m for shares though, this tends to be more for FX (foreign exchange) deals doesn't it?
But I pretty much agree with you here though, there's a whole load of controls to stop this from happening. The are a few other possibilities other than a fat finger (or cat) but the one that jumps to my mind straight away is an algo gone wrong.