Feather Trading - Suspicious market behaviour

Someone must be cheating. The number of peacock feathers floating around is unnaturally high and still getting higher.

(log in to comment)

Comments

I have logs of peacock feathers doubling in volume at certain point in time. However, I don't think its my bot's doing. This is because I don't think it is possible to change the total number (#feathers in stock+#feathers owned) even with negative number buys/sells (unless I misunderstood the descriptions of these negative buy/sell because I haven't experimented with it myself). Can anyone confirm that you cannot (or can) sell your feather and have it too? This is actually quite annoying for my (bot's) original intent of buying out the whole market (which you pointed out was possible in another thread).

My conjecture is that the current behaviour is caused by a buggy bot which abuses of negative number. However, sometimes when it tries to buy existing feathers, it buys the negative of the originally intended amount for some reason.
Seems like there's a number of people trying really hard to find and exploit bugs in this game. What's up with that? Is it because it's multiplayer? I can't help thinking that if somebody found a way to rack up a million points in a shoot-em-up pyweek game, the last thing they'd do is write a bot to play for them.
This is because I don't think it is possible to change the total number (#feathers in stock+#feathers owned) even with negative number buys/sells

Not for a single player, but if someone had two cooperating bots, one of them could carry out a large negative buy transaction, creating feathers for the other one to use.

You might think that ought to leave evidence in the form of another player somewhere with massively negative wealth. However, I don't think that will show up, because they will have correspondingly negative inventory cancelling it out in the net worth table.

If we could see the number of coins other players have, it might be telling.

And now the server seems to have gone down again... just when RDaneelOlivaw was starting to catch up with the Pig-bot... darn!
What I don't understand is if people just wanted to win why do they need more than one account. They can trade any amount of feathers within a minute and that alone should be sufficient to get any number of coins very quickly.

Also, I mentioned the invariant total as a check that my own bot wasn't inadvertently buying/selling negative (because I didn't log my own coins so I couldn't check by looking at that).

Actually, if the scoreboard updated every minute (rather than every 5), we could detect this on Central by looking at the change in net worth when peacock feather changes (assuming it does so soon). It is still doable with the 5 mins delay (especially if this happens near the threshold). However, I don't have a log of other players' net worth.

By my estimate, RDaneelOlivaw should take over Pig-bot in about 5 hours. This should happen if no new feathers are generated (and it should happen faster if new ones are generated).
Seems like there's a number of people trying really hard to find and exploit bugs in this game... Is it because it's multiplayer? I can't help thinking that if somebody found a way to rack up a million points in a shoot-em-up pyweek game, the last thing they'd do is write a bot to play for them.

Multiplayer is a part of it, but I think one of the reasons for the bots is that it's a very slow-moving game -- you have a strategy in mind that you would like to try, but you don't have the time and/or patience to sit there for hours waiting for things to happen. So the obvious thing to do is write a program to play for you while you do something else. Also, to people like us, developing a bot that plays well can be more fun than playing the game itself. It's an interesting AI problem, after all. What's more, the web format makes it very easy to interface a bot to the game. All in all, this kind of game is practically asking people to write bots for it!

Finding bugs -- that's a perfectly natural hacker's instinct. Exploiting them beyond proof-of-concept is another matter, although in this particular case, the fact that someone's exploiting a bug is the only thing that's keeping the game at all interesting for anyone with a net worth over about 1e6. The game might actually benefit from having a bot injecting some feathers in a measured and neutral way from time to time.

If nothing else, it's giving us something to talk about.
What I don't understand is if people just wanted to win why do they need more than one account. They can trade any amount of feathers within a minute and that alone should be sufficient to get any number of coins very quickly.

Yes, thinking about it, it seems like should be possible to increase your net worth by buying negative feathers when the price is high, and selling them when the price is low.

However, there wouldn't be any challenge in doing that, which is probably why nobody has bothered so far. Or maybe they just haven't thought of it.

BTW, the server wasn't down, it was a network problem at my end.
I've been recording some logs of net worth values, and it seems there are three players, "jojo", "srekel" and "vaik", whose net worths are fluctuating wildly between positive and negative.
Uh-Oh. Thats interesting, I created jojo to keep an eye while traveling with other players ( claxo, kiko).
But for at least two days I have not played.
The password was very weak, so maybe...
I've just wrote the following code and am surprised at the result it generated. It suggests that there is nobody with a large negative amount of peacock feathers (to counter the existing amount).

from numpy import array,linalg,dot

f=open("datapts")
t=-1
N=7
maxt=10
h=[[1 for x in xrange(N+1)] for i in xrange(maxt)]
p=[{} for i in xrange(maxt)]
names=["peacock","Amazon","honey","twelve-corded","Western","Mandarin","Eagle"]
for l in f:
    l=l.split()
    if len(l)>2 and l[0]=="Feather":
        t+=1
    elif len(l)>2 and l[0]!="Feather":
        h[t][names.index(l[0])]=int(l[-4])
    elif len(l)==2 and l[0]!="Player":
        p[t][l[0]]=int(l[1])

a=array(h[:N+1])
for x in p[0]:
    b=array([p[t][x] for t in range(N+1)])
    sol=[int(round(y)) for y in linalg.solve(a,b)]
    err=sum(abs(dot(h[N+1+i],sol)-p[N+1+i][x]) for i in xrange(maxt-N-1))/float(maxt-N-1)
    relerr=sum(abs(dot(h[N+1+i],sol)-p[N+1+i][x])/float(max(1,p[N+1+i][x])) for i in xrange(maxt-N-1))/float(maxt-N-1)
    print x,sol,"abs error",err,"rel error",relerr

It needs at least 8 data points pasted into the file "datapts". They should be copied and pasted LaoHu Central feather prices table (including column titles) followed by copied and pasted player networth for each data point. The remaining data is used to calculate the error (caused by the player buying/selling feather between the first and eighth data point). If there were no trades, the error should always be 0. Also, it won't work in the unlikely event that a does not have full rank.
Forgot to mention that

maxt=10

needs to be changed and be set to the actual number of datapoints in the file "datapts".
How recently did you run this? I haven't seen any sign of those peacock feathers for at least the last 12 hours or so, so either someone is holding onto them or they don't exist any more.
Those feather still exist. They are with Pig-bot, of course.