Ulbricht trial exhibit GX-940.pdf (mirror) is a 7-page spreadsheet recording "SILK ROAD SALES DATA: 02/06/2011 - 10/02/2013". It list total transaction count and Bitcoin turnover for all categories (ranging from the hyper-specific "4-AcO-Met" with 0 sales to the general "Custom Orders" to a catch-all null category with 190,803 transactions which apparently there is no data on or the data was perhaps lost?).
While interesting, GX-940 is hard to use because the copy-paste is useless and it cannot be parsed. I have taken the data and reformatted it into a CSV file which can be analyzed more easily.
For example, if you wanted to know the top 20 drug sales on SR1, you could write in R:
srSales <- read.csv("~/gx-940-sr1salesdata-060211-02102013.csv")
categorySales <- aggregate(Payment.BTC ~ Parent.Name, sum, data=srSales)
categorySales[order(categorySales$Payment.BTC, decreasing=TRUE),][1:20,]
Parent.Name Payment.BTC
20 Cannabis 1350442.74
35 Ecstasy 1327712.14
80 Stimulants 1163084.11
72 Prescription 370747.51
34 Drugs 318762.78
73 Psychedelics 250638.86
63 Opioids 229782.41
55 MDMA 227276.68
87 Weed 193671.25
53 LSD 163894.33
74 Relaxants 148088.99
30 Dissociatives 143852.47
68 Pain Relief 120276.79
77 Shrooms 102323.69
61 NBOMe 101860.20
47 Heroin 90260.01
1 2C family 60410.03
43 Forgeries 34711.31
25 Concentrates 26482.40
6 Alprazolam 25283.54
We can compute percentages too; of recorded sales, LSD & marijuana seem to make up ~22% of SR1's sales:
R> sum(categorySales[categorySales$Parent.Name=="Cannabis" | categorySales$Parent.Name=="LSD",]$Payment.USD.equivalent) / sum(categorySales$Payment.USD.equivalent)
[1] 0.2179536975
Interpretation of the numbers is not quite clear. I think that the conversion to USD may not be as simple as summing Bitcoin revenue and multiplying by a post-October-2013 exchange rate, because if I redo the ranking with USD instead, the rankings change:
R> categorySales <- aggregate(Payment.USD.equivalent ~ Parent.Name, sum, data=srSales)
R> categorySales[order(categorySales$Payment.USD.equivalent, decreasing=TRUE),][1:20,]
Parent.Name Payment.USD.equivalent
35 Ecstasy 35814820
20 Cannabis 33489389
80 Stimulants 31066989
34 Drugs 8482343
87 Weed 8300721
63 Opioids 7028938
72 Prescription 5589656
73 Psychedelics 4840689
53 LSD 4667347
30 Dissociatives 4321799
68 Pain Relief 4131742
55 MDMA 3955539
74 Relaxants 2887472
61 NBOMe 2706007
47 Heroin 2309606
77 Shrooms 1964256
6 Alprazolam 1277981
78 Speed 1195298
1 2C family 1193402
25 Concentrates 1162722
The USD equivalent fields may be converted at each sales' exchange rate, which is more competent than I expected.
I converted the PDF to text using pdftotext
; this left each entry on its own line, each run of columns separated by 1 blank line, and after 9 runs, another group has begun so eg the first batch is 268 lines long, 9 blank lines. I puzzled over some solutions but wound up using an elaborate Emacs macro to copy each of the 9 runs to separate files and then merging them, fixing errors that popped up along the way. The totals I calculate in R match the totals provided at the bottom of the spreadsheet, within 0.1btc (probably rounding) so I think my version is accurate.
[–]earthmoonsun 0 points1 point2 points (3 children)
[–]gwern[S] 0 points1 point2 points (2 children)
[–]earthmoonsun 0 points1 point2 points (1 child)
[–]gwern[S] -1 points0 points1 point (0 children)
[–]Michaelm2434 0 points1 point2 points (4 children)
[–]gwern[S] -1 points0 points1 point (3 children)
[–]Michaelm2434 0 points1 point2 points (2 children)
[–]gwern[S] -1 points0 points1 point (1 child)
[–]Michaelm2434 0 points1 point2 points (0 children)