I made a buying robot that evaluates secondary market offers that has been running for over a year now. These days it is evaluating over 150k opportunities for buys each day. The chief problem is that of those 150k, only about 0.1% pass my criteria gauntlet and OF THOSE less than a dozen yield a SUCCESS_PENDING_SETTLEMENT. And OF THOSE only like 30% pass the "Cancelled, Payment Processing" check (I didn't put in a filter for payment date yet). That means of 150k evaluations in a day, 1 or 2 a day land as a success.
Most of these I can't control. I can't make people desire lower returns on their secondary market sells. I can't fix the payment processing checks on the LC backend. But I CAN control the gait of "list, evaluate, buy". The only signal that can be garnered here, though, is the ratio of SUCCESS_PENDING_SETTLEMENT to NOTE_NOT_AVAILABLE. This yields a huge blind spot into the real meaning of NOTE_NOT_AVAILABLE.
A naive interpretation would simply be "your buy was too slow." As a simple example, a List request takes a fraction of a second, and a buy request takes one or more seconds on a regular basis. This means that while a buy request is being processed by the LC backend, there are MULTIPLE other rounds of "lists" that other market buyers have gone through. Likewise, when I see the List come up, there may be multiple other people who have noticed the opportunity and are in the process of a buy request.
But I'm not fully convinced that is what is happening. The other explanation for what is happening is that I make a buy request, but the system that handles the buy requests simply hasn't received the information that the note has been put up for sale (aka, the buy is TOO fast).
I would HOPE that the note no longer being available would yield the "NOTE_DATA_STALE" state, but have no evidence on why that one shows up. Does anyone have some more insight into what the NOTE_NOT_AVAILABLE status means, or if there's a better way to distinguish between "buying too fast" and "buying too slow"?