Community Awareness, Altruism & Diversification 🎯TOP 25🎯 CURATORS🏅 {CAD Curation Ranking System}
Concept
Have you ever wondered which Steemians are best Curators? ...Unfortunately, SteemPower by itself says nothing. It is however, easy to see who are best Content Creators; just navigate through Tags and Trends...and there you go!
But, what about Curators?
I believe there is not enough attention for them, and, as they are as important -if not more- than Content Creators, a better visibility is well deserved.
CAD is an open-source ranking system developed to portrait and rank Steemit Curators by specific indicators. Although CAD is still a prototype, theoretically the following three different indicators are strong enough to discriminate how good a Curator is.
Community Awareness:
This coefficient measures how much a curator votes different authors in relation to the total voted posts.
Altruism Coefficient:

The more a Curator votes other authors rather than himself, the greater the coefficient.
Diversification Coefficient:

Some Curators might vote very generously other users; however, this coefficient ensures that those who selectively vote with more weight specific accounts get penalized.
Do you still remember Standard Deviation from high school maths lessons? This is exactly what is used here. Although a bit complex to explain with actual numbers, Standard Deviation basically measures how spread the voting is among the different authors.
Formula
The CAD system aims to discriminate among users by three different coefficients.
Ranking Top25 best Curators
"A" stands for Altruism, "D" for Diversification & "C" for Community Awareness
| name | Authors | A | AvgVote% | D (σ) | C | Votes | σ | Index |
|---|---|---|---|---|---|---|---|---|
| @pharesim | 1710 | 0,992 | 94 | 1,06E-02 | 0,332 | 5148 | 313 | 297969 |
| @freeyourmind | 206 | 1,000 | 9958 | 1,00E-04 | 0,312 | 660 | 611 | 193249 |
| @acidyo | 472 | 0,963 | 2097 | 4,77E-04 | 0,454 | 1040 | 2004 | 177694 |
| @glitterfart | 353 | 0,990 | 6057 | 1,65E-04 | 0,731 | 483 | 3091 | 132668 |
| @analisa | 278 | 1,000 | 2304 | 4,34E-04 | 0,522 | 533 | 782 | 95501 |
| @skan | 186 | 1,000 | 2647 | 3,78E-04 | 0,809 | 230 | 1839 | 67059 |
| @dunia | 706 | 1,000 | 7912 | 1,26E-04 | 0,503 | 1403 | 3119 | 47368 |
| @anwenbaumeister | 388 | 0,967 | 4001 | 2,50E-04 | 0,736 | 527 | 2079 | 45625 |
| @onceuponatime | 69 | 1,000 | 9638 | 1,04E-04 | 0,335 | 206 | 1639 | 44770 |
| @fuzzyvest | 151 | 1,000 | 4995 | 2,00E-04 | 0,314 | 481 | 3553 | 44729 |
| @dan | 46 | 1,000 | 1108 | 9,02E-04 | 0,780 | 59 | 1990 | 42890 |
| @thisvsthis | 166 | 1,000 | 750 | 1,33E-03 | 0,348 | 477 | 884 | 42815 |
| @cervantes | 198 | 0,987 | 2320 | 4,31E-04 | 0,371 | 533 | 1456 | 42046 |
| @kushed | 547 | 1,000 | 3471 | 2,88E-04 | 0,425 | 1287 | 2862 | 38875 |
| @xaero1 | 194 | 0,998 | 5641 | 1,77E-04 | 0,649 | 299 | 3469 | 33013 |
| @shaka | 173 | 0,998 | 3169 | 3,16E-04 | 0,579 | 299 | 2649 | 31656 |
| @slowwalker | 452 | 0,991 | 1695 | 5,90E-04 | 0,352 | 1283 | 2522 | 31357 |
| @steemed | 24 | 1,000 | 9474 | 1,06E-04 | 0,113 | 212 | 1701 | 31335 |
| @fyrstikken | 591 | 0,992 | 1373 | 7,28E-04 | 0,713 | 829 | 3266 | 30045 |
| @transisto | 106 | 1,000 | 7210 | 1,39E-04 | 0,442 | 240 | 4834 | 26041 |
| @steempower | 129 | 1,000 | 8992 | 1,11E-04 | 0,510 | 253 | 2090 | 25245 |
| @s4s | 390 | 1,000 | 8558 | 1,17E-04 | 0,589 | 662 | 2993 | 24384 |
| @ioc | 118 | 1,000 | 6688 | 1,50E-04 | 0,494 | 239 | 3868 | 19997 |
| @fminerten | 277 | 1,000 | 2911 | 3,43E-04 | 0,247 | 1120 | 4031 | 19244 |
| @steempty | 281 | 1,000 | 3006 | 3,33E-04 | 0,247 | 1137 | 4085 | 19118 |
Data Conditions
- Minimum Total Weight: 10^7
- Date: after HF19
- Only considering Posts with payouts greater than 20BSD
Code & Developers Support
Javascript query to SteemData server. Thanks @Furion for the great work!
Feel free to suggest changes or improvements!
db.Posts.aggregate([
{$match :{"total_payout_value.amount":{$gt:20},"created":{$gte: new ISODate("2017-06-20T12:27:12.000Z")}}
},
{$unwind : "$active_votes"},
{
$project:{
areEqual: {$eq:["$active_votes.voter","$author"]},
author:"$author",
voter: "$active_votes.voter",
weight: "$active_votes.weight",
percent: "$active_votes.percent"
}
},
{
$group:{
_id: {voter:"$voter"},
total_weight: {$sum:"$weight"},
authors:{$addToSet:"$author"},
total_curated_weight: {$sum:
{$cond:[{$eq:["$autor","$votante"]},null,"$weight"]}},
avg_percent:{$avg:"$percent"},
avg_weight:{$avg:"$weight"},
max_weight:{$max:"$weight"},
stdDev:{ $stdDevPop:"$percent"},
count: { $sum: 1}
}},
{
$match:{
total_weight:{$gt:100000000}
}
},
{
$project:{
_id:0,
name:"$_id.votante",
UniqueVotedAuthors:{$size:"$authors"},
Altruism: {$cond:[{$eq:["$total_weight",0]},null,
{$divide:["$total_curated_weight","$total_weight"]}]},
Total_curated_weight: "$total_curated_weight",
Total_weight: "$total_weight",
AvgVotepercent:{$trunc:"$avg_percent"},
diversification:{$abs:{$cond:[{$eq:["$stdDev",0]},null,
{$divide:[1,"$avg_percent"]}]}},
CommunityAwareness:{$cond:[{$eq:["$count",0]},null,
{$divide:[{$size:"$authors"},"$count"]}]},
Count:"$count",
VoteStdDeviation:{$trunc:"$stdDev"},
CAD_Index: {$trunc:{$multiply:["$total_curated_weight",
{$cond:[{$eq:["$stdDev",0]},null,
{$divide:[1,"$stdDev"]}]},
{$cond:[{$eq:["$count",0]},null,
{$divide:[{$size:"$authors"},"$count"]}]}]}}
}
},
{
$match:{
diversification:{$ne:null}
}
},
{$limit:35},
{$sort:{"CAD_Index":-1}}
]
).toArray()
Image sources:
http://www.npr.org/tags/131336520/altruism
https://blogs.cfainstitute.org/investor/2015/05/21/the-diversification-dividend/
http://www.warollers.com/community-awareness.html
Very good, congrats again.
Would it be possible to prepare a web page with a form on it to calculate CAD?
Keep up the good work!
Thanks @ervin-lemark.
Yes sure, wouldnt be a big deal. What is the idea behind?
The idea is to simply enter one's username and get out her / his CAD. If it can be done as a web service then other sites can use it too. Like steem.supply for example.
good information
Glad to hear that!
Great analytics. Resteeming so I have it in my feed to re-read later.
I want to learn how to code and retrieve from steem data! Any tutorials? I am not familiar with open source. I am too bound in .NET.
Yeah why not, I could make one =) what would you like to learn exactly?
That is the thing... I do not know where to start looking into it. How to read the steem metadata and probably easily to retrieve posts later on web pages for easy access, as a start I guess
I will think about something ;)
Great information!
I appreciate!