Hacker News new | ask | show | jobs
by nromiun 2237 days ago
> Its software couldn’t cope with that pesky minus sign, even though it was always technically possible -- though this was an outlandish idea before the pandemic -- for the crude market to go upside down.

Wow, just wow. They are handling millions (billions?) of dollars every day and couldn't find the time to test that they can just DISPLAY a minus sign. That's insane.

And it's not even that outlandish. People were saying it could go into the negative weeks before it happened. This just seems like pure laziness. Just pretend everything is business as usual.

2 comments

This is an industry that couldn't anticipate the year 2000 coming to happen.
Makes me wonder about their testing - any decent tester is going to throw a negative number in as a matter of course.

I have a gut feeling that this bug was flagged and closed as WONTDO because "that'll never happen"

Just as likely it was a feature. If you really think "that'll never happen", then the right thing to do is explicitly ignore negative prices or refuse to send orders at negative prices, and that's exactly the kind of failsafe I'd want to have in my trading software, since you can get spurious prices for all kinds of reasons.

It turned out the assumption was wrong and yeah, you should remove the logic handling that once it's evident futures may go negative, and you should have a process capable of making that change with only a day or two notice. But being robust the rest of the time at the expense of mishandling a once-in-fifty-years event is not in itself a bug.

If you disagree, should a trading system also allow negative prices for precious metals futures? Stocks? Currencies? Options? Bonds? Futures on stocks or bonds? I can contemplate all of those trading negative in extraordinary, contrived scenarios but I would design systems today not to trade them at negative prices.

But the fact that they didn't display negative prices to customers indicates that they were explicitly ignoring them in a very very bad way. I'm suspecting an abs() function was involved.