create account

non-gameable liquidity points system - reposted by jl777

View this thread on: hive.blogpeakd.comecency.com
· @jl777 ·
$79.17
non-gameable liquidity points system - reposted
We want to reward market makers for providing liquidity, but the problem has been that the algorithm's used so far have been toys. Very easy to break and only looks like the real thing as abit has repeatedly shown.

I made a market maker called "taker" that never takes and doesnt selftrade (wash trade with any of my accounts) and it gets about 2% the rewards that the selftrading bots do. Clearly something is wrong, but it is impossible to fix, or at least that is what people say.

However, as one who is deep in this problem, I do see a way to have an algorithm that is mostly ungameable, but I dont have the math skills to figure out the exact equations. Following the process of curation rewards, the first thing that is needed are:

The principles

What are they? From a systems point of view we want to have as much liquidity as possible with as small a spread from the theoretical price. The current reward only looks at amount of liquidity offered, without regard to the value being provided, ie. a below market bid is quite useless as is an above market ask.

Before you go and say that we dont know what the price should be so we cant have the rewards based on the theoretical price, keep in mind that we dont need an exact theoretical price, just an approximation is fine as the rewards system is a statistical process. As long as the reference theoretical price is close to what it really should be most of the time, well, that is much better than what we had in the past.

So, the first principle is to reward market makers based on providing liquidity close to the theoretical price. And conveniently if you look at steemd.com way down the right hand column, what do we see?

state
feed_price
base 3.460 SBD
quote 1.000 STEEM

I am just a simple C programmer, but to me that sure looks like a theoretical price. I know its not perfect, but its there already accessible to the consensus code and sure is a lot more accurate than arbitrary 10% to 30% discounting that is done to minimize risk by the large market makers in the past.

The second principle would be to not reward silly things. I know that sounds silly, but right now massive points are awarded for orders that will never ever be filled, ie. asks for 100000 STEEM, which would use up ALL of the SBD in existence outside of poloniex and bittrex. Somehow I really doubt that order would be filled. Yet, when the washtrade comes through and clears out the 100000 STEEM, we just generated millions of points and bots that are not washtrading get left behind in the dust.

So that would mean some sort of common sense cap on the amount of points that can be earned due to amount of liquidity provided. Maybe this principle is to incentivize reasonable amounts of liquidity, but not unreasonable amounts.

Similarily, time on the books (duration) is something that we want, but only to a certain point. Long enough that simultaneous washtrading is not possible, but not too long that wet paint dries. The 30 minute timeframe now actually discourages making tight spreads as they are likely to be filled before the 30 minutes and no credit obtained. I estimate that if all the volumes my bot provided were counted, it would have earned a much fairer amount of points

Putting these things together we have distance from theoretical price, sane limits to volume and duration. I am sure @theoretical can make an equation based on these principles that will provide the right type of incentives most of the time.

Something like (DURATION / DISTANCE) * sqrt(BUYVOLUME * ASKVOLUME) where the variables have sane caps/floors applied to them.

Now to the question of washtrades, is this a real problem or will the above solve things enough? I think it would be pretty good, but given the creativity shown so far by the existing market makers, I would like to add a layer of human judgement to this.

Clearly, nobody has the time or inclination to be watching each and every bid, ask, trade, so the human judgement needs to be applied at the account level. Why not have each market maker that wants to earn points register their intent by naming their accounts. Before you say, sybil accounts dont have to register, I say that only registered accounts would get points. And this goes for both making and taking. Right now, all you need to do is split your making account from your taking account and then your taking account gets all the negative points which you dont suffer from and your maker account accrues all the benefits. My guess is that if the existing point systems penalized the accounts for the takings, they would have very little points indeed.

So, now we have the problem of unregistered accounts that fill the orders from the registered ones, which while technically impossible to prevent, practically speaking it is usually possible to identify the controller of an account. So we would be left with dishonest rogue operators only and I do not believe any of the existing market makers would resort to such things.

What that means is that 99% of the volumes can be fully accounted for by mapping the account to its controller and thus washtrades can be removed from the points calculations. Add a provision that only accounts older than a week (a month?) are eligible for some reasonable exemption (100 STEEM) amount of volume and so even in the presence of a dishonest player, the total amount of false liquidity possible is capped by the need for new accounts that are old enough and then it is only good for a small amount.

I dont have the exact equations, but I am hopeful that @theoretical can use this information to come up with some specifics and I am sure the community will be happy to provide feedback and identify any blatant attack vectors.

Principles

Use theoretical price
Dont allow insanity
Apply human judgement
While it is possible for collusion between market makers, I think that can be solved with an objective summary report of market maker to market maker trades that is either voted on or maybe some sort of correlation is done and only the least common denominator is credited.

As an example, let us say there are 4 market makers A, B, C, D, where all the accounts for each market maker is combined, ie only net trades outside the market maker's own accounts are relevant.

For each period a matrix is created that represents the amount of trades between the pair of market makers, conveniently the diagonal is the amount of washtrades. In a busy market, it cant be helped that some cross trades will happen, but there will be some sort of average amount of cross trading (normalized for each market maker's overall volumes).

Once we have this data it should be possible to find min/max/ave amounts of cross trades that are allowed and anything above the max would not be allowed, or maybe there is some steep decay function after it goes above the minimum.

Anyway, now that liquidity point awards are being suspended, we need a replacement! Hopefully this post will help toward achieving this
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authorjl777
permlinknon-gameable-liquidity-points-system-reposted
categorysteemit
json_metadata{"tags":["steemit","market","trading","steem","liquidity"],"users":["theoretical"]}
created2016-07-28 21:49:57
last_update2016-07-28 21:49:57
depth0
children8
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value66.550 HBD
curator_payout_value12.623 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length7,009
author_reputation14,988,697,980,664
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id447,993
net_rshares17,590,240,776,439
author_curate_reward""
vote details (47)
@adamgud ·
Very informative. Thank you.
properties (22)
authoradamgud
permlinkre-jl777-non-gameable-liquidity-points-system-reposted-20160729t171913230z
categorysteemit
json_metadata{"tags":["steemit"]}
created2016-07-29 17:19:15
last_update2016-07-29 17:19:15
depth1
children0
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length28
author_reputation46,031,102,137
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id469,700
net_rshares0
@cheetah ·
Hi! I am a content-detection robot. This post is to help manual curators; I have NOT flagged you.
Here is similar content:
https://steemit.com/steem/@jl777/a-non-gameable-liquidity-points-system
NOTE: I cannot tell if you are the author, so ensure you have proper verification in your post (or in a reply to me), for humans to check!
👍  ,
properties (23)
authorcheetah
permlinkre-non-gameable-liquidity-points-system-reposted-20160728t215052
categorysteemit
json_metadata""
created2016-07-28 21:50:54
last_update2016-07-28 21:50:54
depth1
children1
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length333
author_reputation942,693,160,055,713
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id448,015
net_rshares5,695,693,096
author_curate_reward""
vote details (2)
@jl777 ·
$0.25
Mr cheetah, I added "repost" as the last word in the title. maybe you can update your algorithm to detect reposts. This post is about a very important issue and the first time around it got buried
👍  , ,
properties (23)
authorjl777
permlinkre-cheetah-re-non-gameable-liquidity-points-system-reposted-20160728t215052-20160728t215314923z
categorysteemit
json_metadata{"tags":["steemit"]}
created2016-07-28 21:53:15
last_update2016-07-28 21:53:15
depth2
children0
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.253 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length196
author_reputation14,988,697,980,664
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id448,070
net_rshares180,740,318,475
author_curate_reward""
vote details (3)
@dogguy ·
$0.06
jl777, 

you probably don't remember my username given the amount of people you interact with within the crypto space but this is Xosihc from bitcointalk.org - we interacted via VRC back in 2014 while it went through the process of being added to SUPERNET. 

Just wanted to give a quick hello and say that I'm a big fan of your work in the crypto space and happy to see your on steemit and active with posts. I'll continue to follow your work.

You're a great asset the the crypto space.
👍  
properties (23)
authordogguy
permlinkre-jl777-non-gameable-liquidity-points-system-reposted-20160728t233729955z
categorysteemit
json_metadata{"tags":["steemit"]}
created2016-07-28 23:38:39
last_update2016-07-28 23:38:39
depth1
children0
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.062 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length487
author_reputation2,124,168,147,125
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id450,496
net_rshares117,989,470,028
author_curate_reward""
vote details (1)
@msjennifer ·
Thanks for the post!!
👎  
properties (23)
authormsjennifer
permlinknon-gameable-liquidity-points-system-reposted
categorysteemit
json_metadata""
created2016-07-28 21:50:30
last_update2016-07-28 21:50:30
depth1
children0
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length21
author_reputation-1,468,839,175,006
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id448,006
net_rshares-10,752,943
author_curate_reward""
vote details (1)
@pjheinz ·
The lack of comments is correlated to the high reading level of this post.
I am on my 5th read through. I'll get back to you when I understand.
properties (22)
authorpjheinz
permlinkre-jl777-non-gameable-liquidity-points-system-reposted-20160802t110432882z
categorysteemit
json_metadata{"tags":["steemit"]}
created2016-08-02 11:04:39
last_update2016-08-02 11:04:39
depth1
children0
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length143
author_reputation36,849,454,027,778
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id556,744
net_rshares0
@vi1son ·
@dan or @ned Can u read it?
properties (22)
authorvi1son
permlinkre-jl777-non-gameable-liquidity-points-system-reposted-20160728t223058573z
categorysteemit
json_metadata{"tags":["steemit"],"users":["dan","ned"]}
created2016-07-28 22:30:57
last_update2016-07-28 22:30:57
depth1
children1
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length27
author_reputation6,286,810,078,777
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id449,024
net_rshares0
@jasonmcz ·
$0.03
lol just post to steemit Git please @jl777
create an issue.
👍  
properties (23)
authorjasonmcz
permlinkre-vi1son-re-jl777-non-gameable-liquidity-points-system-reposted-20160802t214542647z
categorysteemit
json_metadata{"tags":["steemit"],"users":["jl777"]}
created2016-08-02 21:45:42
last_update2016-08-02 21:45:42
depth2
children0
last_payout2016-08-28 10:17:54
cashout_time1969-12-31 23:59:59
total_payout_value0.023 HBD
curator_payout_value0.007 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length59
author_reputation15,125,782,224,192
root_title"non-gameable liquidity points system - reposted"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id568,042
net_rshares59,203,743,315
author_curate_reward""
vote details (1)