Tuesday, November 18, 2008

Rating Lenders in a Mutual Trust System

I am creating a book sharing system. A problem I am facing is how would I reward my lenders. This is a mutual trust system, where the system does not have any direct way of verifying whether the lends were genuine. For example, I can create 10 fake accounts, lend books to those accounts, and increase my rating to get rewards.

It struck me that this is a generic problem, and must be faced by all systems which are trust based.

Is it possible to write an algorithm to rate the lenders in such a way that it catches/penalizes the malicious/fake lenders, or may be just make the fake lending expensive enough?
For example, suppose I reward my best lender over a month with a 200Rs crossword voucher, and if I feel that I can spend 200Rs on a person who spends 10 hours on my website distributed over 10 days within a month (as that might increase my advertising revenue), I just need to make the fake lending that much expensive.

So, how do we define "good" lends? What are the factors that define a genuine lend?

Requirements:
1. These factors should be implicit/natural for genuine lends but take extra cost for fake ones.
2. These factors should reinforce healthy lending trends into the system.

Here is a list of such factors I can think of:

1. The simplest one - number of lends
Factor: "number of total lends made"
Cost for fake lender: Time to put requests and approvals.
Healthy trend: Rewards lenders who lend more.

2. Lends to different unique borrowers
Factor: "number of borrower with a unique mail id lender lends to"
(Any lends to a user with same mail id as lender not counted)
Cost for fake lender: Time to create unique mail id's + time to create accounts with those mail id's.
Healthy trend: Reward lenders who lend to various people, instead of a fixed closed group.

3. Number of different items lent
Factor: "number of unique items lent by the lender"
Cost for fake lender: Time to add different items in collection.
Healthy trend: Reward people who increase number of unique items available in the system.

4. How distributed lends are over time.
Factor: "number of unique days" on which lends were made.
Cost for fake lender: Time for logging into website on different days.
Healthy trend: Reward people for being prompt with approvals (if people check their inbox every day their approvals will be distributed, if they check for example once a week, they will be clustered).

5. Last but the best, "lend rating" of borrowers.
Factor: "sum of ratings of all borrower's with unique email id's"
Cost for fake lender: All the above costs added for all the fake borrower accounts!
Healthy trend: Encourages people to lend to good lenders. So, lenders get rewarded for doing genuine lending.

So, a simplistic formula taking in all the above factors goes something like:
lender's rating = "number of lends" * "number of unique borrower mail-id's" * "number of unique items lent" * "number of unique days on which lends were made" * "sum of ratings of borrowers with unique mail-id's"

As, you can see, this formula is recursive. If we are calculating the rating for all the users on our system, we start with a rating of 1 everybody, and do a first pass of rating calculation. Then we do a second pass to get final ratings.

Would love to hear more thoughts on this... so do share!