Greedy Goblin

Friday, April 27, 2012

The proper profit metric

Live moron of the weekend post. Did they spent the last month under a rock?

People having trouble making ISK with trading. Some rather go missioning assuming that if you have a really good ship and know the missions inside out (like which exact point they will spawn), you can get more ISK/hour.

The first problem is the "ISK/hour" metric itself. It's an employer-way thinking that runs under the assumption that the action has only the income as result. I run a mission, I have X more ISK, end of story.

Trading needs businessman thinking. Here much time is invested without any profit. For example when I run missions for faction standing, I often gain negative ISK as I have to pay someone (usually my girlfriend) to do the security storylines. Yet it creates a lasting effect: lower broker fees for the rest of my life.

The second problem is that trading income mostly limited by capital and not time. When someone has 1-2 B, his ISK/hour can easily be worse than the income of even a miner. But doing the same moves, simply with one more zero typed into the quantity field, the income grows largely (even if not 10x). The guys who were laughing on my first posts stating that I'm just picking breadcrumbs after rich people who can't be arsed to make 2 jumps for 100K went silent some time ago, probably when I hit 10B before my third month in the game. Or when I first passed 200M/hour. My business did not change since the first month, I'm picking the same breadcrumbs, just a lot with one click. One to measure his trading/manufacturing profit must measure the profit against capital and not time spent. The latter is maybe more interesting for the player, but it will naturally grow over time, unlike in missioning or mining.

The third mistake is the metric used for profit/capital. The commonly used is completely bad. It measures profit earned over one item. If I bought it for 100M and sold it for 120M (after taxes), I got 20% profit. It's surely better than selling another 100M item for 110, right? Absolutely not! You must factor time into the metric. If you buy the item on Monday and sell it on Sunday, you got 20M during the week. If you buy an item every day and can sell it for 10M more on the evening of the same day, you got 7*10M income! To see exactly how the calculation shall go, let me show you an item from my wallet. Actually it's the wallet of all my alts, merged and sorted by time (I trade on Jita, Rens, Amarr and my Dodixie alt just started up, hence the jump in income this week).
Date Transaction Price (M) Stock
2012.03.26 14:49 2 -180.00 2
2012.03.27 04:32 -1 96.03 1
2012.03.28 16:17 -1 94.05 0
2012.03.29 18:27 2 -180.00 2
2012.03.30 03:47 -1 97.02 1
2012.03.30 05:43 -1 97.02 0
2012.03.30 11:57 2 -180.00 2
2012.03.30 17:05 -1 97.02 1
2012.03.30 18:06 1 -90.00 2
2012.03.30 19:17 -1 95.04 1
2012.03.30 19:44 1 -90.00 2
2012.03.31 01:44 -1 95.54 1
2012.03.31 04:24 1 -90.00 2
2012.03.31 05:54 -1 95.24 1
2012.03.31 06:50 -1 95.04 0
2012.03.31 08:11 3 -270.00 3
2012.03.31 12:47 -1 95.34 2
2012.03.31 13:31 -1 95.34 1
2012.03.31 13:35 -1 95.34 0
2012.03.31 13:51 3 -270.00 3
2012.03.31 15:28 -1 95.34 2
2012.04.01 03:45 -1 94.05 1
2012.04.01 06:07 -1 94.05 0
2012.04.01 08:05 3 -270.00 3
2012.04.01 13:23 -1 94.05 2
2012.04.01 17:06 -1 93.56 1
2012.04.01 19:47 1 -90.00 2
2012.04.01 20:30 -1 93.06 1
2012.04.02 04:19 2 -180.00 3
2012.04.02 06:02 -1 99.00 2
2012.04.02 15:40 1 -90.00 3
2012.04.02 18:21 -1 92.57 2
2012.04.03 11:42 -1 92.07 1
2012.04.03 14:06 2 -180.00 3
2012.04.03 15:06 -1 92.07 2
2012.04.03 17:28 -1 92.07 1
2012.04.03 17:44 3 -270.00 4
2012.04.04 03:17 -1 92.07 3
2012.04.04 04:10 -1 92.07 2
2012.04.04 04:13 -1 92.07 1
2012.04.04 04:45 3 -270.00 4
2012.04.04 09:26 -1 92.07 3
2012.04.04 12:09 -1 92.07 2
2012.04.04 13:54 2 -180.00 4
2012.04.05 20:47 -1 91.58 3
2012.04.06 00:47 -1 91.58 2
2012.04.06 04:55 -1 91.87 1
2012.04.06 15:05 -1 92.57 0
2012.04.07 05:37 1 -90.00 1
2012.04.08 06:38 -1 95.04 0
2012.04.08 12:55 1 -90.00 1
2012.04.08 14:18 -1 94.94 0
2012.04.08 14:50 2 -180.00 2
2012.04.08 15:12 -1 97.02 1
2012.04.08 15:45 -1 97.02 0
2012.04.08 15:47 1 -90.00 1
2012.04.08 15:52 1 -90.00 2
2012.04.08 18:10 -1 98.01 1
2012.04.08 18:33 2 -180.00 3
2012.04.08 19:15 -1 98.01 2
2012.04.08 19:36 -1 98.01 1
2012.04.08 20:25 -1 98.01 0
2012.04.09 01:58 2 -180.00 2
2012.04.09 07:07 -1 98.51 1
2012.04.09 12:21 -1 98.51 0
2012.04.09 14:47 1 -90.00 1
2012.04.09 16:24 -1 98.01 0
2012.04.09 18:11 2 -180.00 2
2012.04.09 20:20 -1 97.02 1
2012.04.10 01:33 -1 96.03 0
2012.04.10 07:41 2 -180.00 2
2012.04.10 11:54 -1 96.03 1
2012.04.10 13:46 -1 96.03 0
2012.04.10 17:33 2 -180.00 2
2012.04.10 19:44 -1 96.03 1
2012.04.10 22:10 -1 96.03 0
2012.04.11 01:19 2 -180.00 2
2012.04.11 02:18 -1 96.03 1
2012.04.11 07:37 -1 95.54 0
2012.04.11 13:00 2 -180.00 2
2012.04.11 13:55 -1 95.04 1
2012.04.12 03:35 1 -90.00 2
2012.04.12 04:28 1 -90.00 3
2012.04.12 04:28 2 -180.00 5
2012.04.12 14:43 -1 93.56 4
2012.04.13 11:34 -1 93.06 3
2012.04.13 20:26 -1 93.56 2
2012.04.13 23:47 -1 93.56 1
2012.04.14 04:04 2 -180.00 3
2012.04.14 09:03 -1 94.05 2
2012.04.14 10:26 -1 94.05 1
2012.04.14 14:41 2 -180.00 3
2012.04.14 22:44 -1 95.04 2
2012.04.14 23:57 -1 95.04 1
2012.04.15 04:10 4 -360.00 5
2012.04.15 05:01 -1 98.01 4
2012.04.15 05:46 -1 95.44 3
2012.04.15 08:48 -1 95.44 2
2012.04.15 10:42 -1 95.04 1
2012.04.15 14:15 1 -90.00 2
2012.04.15 18:27 1 -90.00 3
2012.04.15 18:38 1 -90.00 4
2012.04.15 19:48 -1 96.53 3
2012.04.16 02:59 1 -90.00 4
2012.04.16 04:03 -1 107.91 3
2012.04.16 06:15 -1 95.54 2
2012.04.16 09:00 -1 95.54 1
2012.04.17 16:27 2 -180.00 3
2012.04.17 19:06 -1 107.91 2
2012.04.18 04:49 1 -90.00 3
2012.04.18 08:48 -1 107.91 2
2012.04.18 15:35 -1 97.02 1
2012.04.18 19:14 2 -180.00 3
2012.04.18 19:14 1 -90.00 4
2012.04.19 04:15 -1 108.90 3
2012.04.19 15:42 2 -180.00 5
2012.04.19 20:02 -1 94.05 4
2012.04.20 03:37 1 -90.00 5
2012.04.20 06:20 -1 107.91 4
2012.04.20 14:25 2 -180.00 6
2012.04.20 15:32 -1 93.06 5
2012.04.20 20:00 -1 92.57 4
2012.04.20 21:09 -1 93.06 3
2012.04.21 12:13 -1 90.59 2
2012.04.21 15:41 3 -270.00 5
2012.04.21 17:13 -1 92.57 4
2012.04.21 22:11 -1 92.57 3
2012.04.22 02:39 -1 92.57 2
2012.04.22 04:49 1 -90.00 3
2012.04.22 05:32 3 -270.00 6
2012.04.22 10:09 -1 107.91 5
2012.04.22 13:35 -1 92.07 4
2012.04.23 01:23 -1 92.07 3
2012.04.23 01:39 -1 92.07 2
2012.04.23 15:49 3 -270.00 5
2012.04.23 16:57 -1 97.02 4
2012.04.23 18:16 -1 97.02 3
2012.04.23 18:35 -1 97.02 2
2012.04.23 19:02 4 -360.00 6
2012.04.23 23:35 -1 97.02 5
2012.04.24 01:24 -1 97.02 4
2012.04.24 20:00 -1 96.53 3
2012.04.24 20:55 -1 96.53 2
2012.04.25 03:40 3 -270.00 5


76.94 2.24

The first column is date, the second is item amount bought or sold, the third is the price after subtraction of taxes. The last one is critical, it's the stock size. It increases whenever I buy and decreases when I sell. Multiplied by the price of the item it tells the capital used for this item in that moment.

The "76.94" is the sum of the buys and sells. Watch out, it's not the net profit, as I have 5 items in stock (last row, 4th column), which worth at least their buy price, 90M each. So the net profit is 526.9M.

The "2.24" is the average of the stock. So on average I have 2.24*90 = 201.6M capital locked down in this business. Actually this isn't accurate since it should be weighted by the times. If I buy an item and hold it for a month, my stock size is 1, if I sell it in a minute, it's near zero. However the distribution of buys and sells are random enough to let me be lazy and use EXCEL instead of coding.

Now the real metric! The one we have to know evaluating this item is the monthly profit per capital. Luckily the time frame of this table is exactly one month, so I just divide total profit by capital locked, getting 261%. Nice profit.

To see the importance of this metric, lets see a much less fortunate item. The one I bought 110 instead of 10 by accident:
Date Transaction Price Stock
2012.04.02 19:03 2 -20.00 2
2012.04.02 19:29 1 -10.00 3
2012.04.02 20:12 -1 11.79 2
2012.04.03 05:09 -1 10.89 1
2012.04.03 08:47 5 -50.00 6
2012.04.03 09:19 -1 10.89 5
2012.04.03 15:32 -1 10.89 4
2012.04.04 13:43 3 -30.00 7
2012.04.04 19:58 -1 10.89 6
2012.04.05 07:19 -1 10.89 5
2012.04.05 10:08 -1 10.89 4
2012.04.05 16:02 -1 10.40 3
2012.04.05 16:24 -1 10.40 2
2012.04.05 16:56 -1 10.40 1
2012.04.05 17:39 5 -50.00 6
2012.04.05 18:19 -1 10.40 5
2012.04.05 19:52 5 -50.00 10
2012.04.05 20:22 -1 10.40 9
2012.04.05 21:08 -1 12.87 8
2012.04.05 21:12 -1 10.40 7
2012.04.05 21:43 -1 12.87 6
2012.04.05 21:47 -1 10.40 5
2012.04.05 22:42 -1 10.40 4
2012.04.06 01:58 5 -50.00 9
2012.04.06 05:39 -5 51.98 4
2012.04.06 15:07 10 -100.00 14
2012.04.06 17:24 -1 10.40 13
2012.04.06 18:50 -1 10.40 12
2012.04.06 21:04 -1 10.40 11
2012.04.07 09:30 -1 10.40 10
2012.04.07 20:13 -1 10.40 9
2012.04.07 22:55 -1 10.40 8
2012.04.08 05:32 -1 10.40 7
2012.04.08 05:43 -1 10.40 6
2012.04.08 07:11 -1 10.40 5
2012.04.08 07:40 -1 10.40 4
2012.04.08 09:08 -1 12.87 3
2012.04.08 09:29 -1 10.40 2
2012.04.08 12:46 -1 10.40 1
2012.04.08 15:02 -1 10.40 0
2012.04.08 16:14 10 -100.00 10
2012.04.08 17:58 5 -50.00 15
2012.04.08 20:07 -1 10.40 14
2012.04.08 23:43 -1 10.89 13
2012.04.09 15:56 -1 10.69 12
2012.04.09 19:58 -1 10.40 11
2012.04.09 20:02 -1 10.40 10
2012.04.10 03:46 -1 10.40 9
2012.04.10 14:02 -1 10.79 8
2012.04.10 14:49 -1 12.87 7
2012.04.10 17:24 -1 10.40 6
2012.04.10 19:47 -1 10.40 5
2012.04.10 20:10 -1 10.40 4
2012.04.10 20:27 -1 10.40 3
2012.04.11 00:17 -1 10.40 2
2012.04.11 06:42 10 -100.00 12
2012.04.11 08:50 3 -30.00 15
2012.04.11 15:44 -1 10.40 14
2012.04.11 16:32 10 -100.00 24
2012.04.11 18:48 -1 10.40 23
2012.04.11 19:45 -1 10.49 22
2012.04.11 20:19 -1 10.40 21
2012.04.11 20:55 -1 10.40 20
2012.04.11 21:19 -1 10.49 19
2012.04.11 21:39 -1 10.40 18
2012.04.12 01:20 -1 10.40 17
2012.04.12 05:01 -1 10.49 16
2012.04.12 14:50 -1 10.40 15
2012.04.12 15:59 -1 10.40 14
2012.04.12 18:19 -1 10.40 13
2012.04.12 20:19 -1 10.40 12
2012.04.12 20:34 8 -80.00 20
2012.04.13 01:17 -1 10.49 19
2012.04.13 02:53 -1 10.40 18
2012.04.13 08:42 -1 10.40 17
2012.04.13 09:15 -1 10.40 16
2012.04.13 22:10 -1 10.40 15
2012.04.13 22:51 -1 10.40 14
2012.04.14 01:30 -1 10.40 13
2012.04.14 01:41 -1 10.40 12
2012.04.14 02:10 -1 10.40 11
2012.04.14 02:38 -1 10.40 10
2012.04.14 05:14 5 -50.00 15
2012.04.14 07:42 1 -10.00 16
2012.04.14 07:58 -1 10.40 15
2012.04.14 09:38 -1 10.40 14
2012.04.14 12:34 -1 10.89 13
2012.04.14 13:50 -1 10.89 12
2012.04.14 13:56 -1 10.30 11
2012.04.14 17:38 -1 10.30 10
2012.04.14 18:00 -1 10.30 9
2012.04.14 21:46 -1 10.89 8
2012.04.15 02:47 -1 10.89 7
2012.04.15 06:31 -1 10.89 6
2012.04.15 12:14 -1 10.89 5
2012.04.15 12:50 -1 10.89 4
2012.04.15 12:57 -1 10.39 3
2012.04.15 12:59 -1 10.10 2
2012.04.15 13:38 10 -100.00 12
2012.04.15 13:44 110 -1100.00 122
2012.04.15 19:00 -1 10.00 121
2012.04.16 00:21 -1 10.84 120
2012.04.16 10:53 -1 10.89 119
2012.04.16 14:36 -1 10.84 118
2012.04.17 03:35 -1 10.84 117
2012.04.17 14:08 -1 10.84 116
2012.04.17 16:31 -1 10.00 115
2012.04.18 06:40 -1 10.84 114
2012.04.18 09:30 -1 10.84 113
2012.04.18 10:13 -1 9.95 112
2012.04.18 13:14 -1 9.95 111
2012.04.18 13:31 -1 9.95 110
2012.04.18 13:57 -1 9.95 109
2012.04.18 14:18 -1 9.95 108
2012.04.18 19:02 -1 9.90 107
2012.04.18 21:26 -1 9.90 106
2012.04.18 23:01 -1 9.90 105
2012.04.18 23:11 -1 9.90 104
2012.04.18 23:14 -1 9.90 103
2012.04.19 03:36 -2 19.80 101
2012.04.19 05:22 -1 9.90 100
2012.04.19 12:20 -1 10.05 99
2012.04.19 16:08 -1 10.05 98
2012.04.19 18:14 -1 9.90 97
2012.04.19 18:48 -1 9.90 96
2012.04.19 21:02 -1 9.90 95
2012.04.19 22:23 -1 9.90 94
2012.04.20 03:42 -1 9.90 93
2012.04.20 05:17 -1 10.00 92
2012.04.20 05:59 -1 10.84 91
2012.04.20 07:11 -1 10.00 90
2012.04.20 07:41 -1 10.00 89
2012.04.20 17:01 -1 10.00 88
2012.04.20 21:06 -1 10.00 87
2012.04.20 21:58 -1 10.00 86
2012.04.21 07:53 -1 10.00 85
2012.04.21 08:10 -1 10.00 84
2012.04.21 08:45 -1 10.00 83
2012.04.21 09:40 -1 10.25 82
2012.04.21 11:54 -1 10.00 81
2012.04.21 12:15 -1 10.05 80
2012.04.21 14:27 -1 10.00 79
2012.04.21 14:28 -1 10.00 78
2012.04.21 14:55 -1 10.00 77
2012.04.21 19:52 -1 10.00 76
2012.04.21 22:11 -1 10.00 75
2012.04.21 23:32 -1 10.25 74
2012.04.21 23:50 -1 10.25 73
2012.04.21 23:58 -1 10.25 72
2012.04.22 04:28 -1 10.00 71
2012.04.22 04:43 -1 10.00 70
2012.04.22 07:58 -1 10.00 69
2012.04.22 10:00 -1 10.00 68
2012.04.22 13:47 -1 10.00 67
2012.04.22 20:59 -1 10.00 66
2012.04.23 11:29 -1 10.25 65
2012.04.23 15:52 -1 10.00 64
2012.04.24 02:00 -1 10.00 63
2012.04.24 04:02 -1 10.00 62
2012.04.24 04:51 -1 10.25 61
2012.04.24 13:59 -1 10.00 60
2012.04.24 15:47 -1 10.00 59
2012.04.24 15:52 -1 10.00 58
2012.04.24 17:16 -1 10.25 57
2012.04.24 18:55 -1 10.00 56
2012.04.24 19:52 -1 10.00 55
2012.04.24 20:10 -1 10.00 54
2012.04.24 20:59 -1 10.00 53
2012.04.24 23:14 -1 10.49 52
2012.04.25 06:50 -1 10.49 51
2012.04.25 07:47 -1 10.00 50


-439.27 41.73
As you can see, I still have 50 items. Since one piece costs 10M, the net profit is 60.7M. The profit per item is 607%, better than 526% of the previous item! Except on average 417M of my capital is locked down in this thing, making my monthly profit per capital to 20.5% (the timeframe is 22 days). Ouch! Also, before the fail the average was 8 items on stock, with that my profit rate would still be just 106%, so this item would be worse than the first, even if I hadn't fail with that buy.

Unfortunately to create these calculations I had to copy-paste the wallet table (before that fishing in the CSV returned by the API) since no program provides this data. However knowing it is necessary to figure out proper stock size: the less items you buy at once, the higher this metric will be at the cost of less overall profit on the item (as you lose sales when you are out of stock). The perfect situation is when all your items have the same profit/capital/time and no other item (the ones you don't trade) has higher, even with one item on stock. It also means that as your capital increases, you can include more and more items or higher and higher stocks, your profit increases but with diminishing returns.

Making the same calculation for manufacturing is even harder as you have to assign the materials and the production costs to a project, define clear entry and exit points (which are obvious for trading). However I'm sure that most industrialists would be very surprised to see that their pet ship business brings some joke profit, like 20-30%/month.

If you are up to coding and want to create a useful tool, make this and I'll make it "famous" on my blog. Just make sure it's open source and doesn't need closed source programs (besides ones in control of CCP). I won't suggest or even use closed third party code that require my wallet API key for obvious reasons.


EVE Business report: Friday morning 14.5B (2 PLEX behind for second account, 0.3B spent on Titan project)
Remember that you can participate in our EVE conversations on the "goblinworks" channel (60-80 people on peak time) and your UI suggestions are welcomed.

11 comments:

Anonymous said...

Have you considered accepting investments from other players? Perhaps a 75-25 split on profits, with you doing the trading and keeping 75% of the profits produced by the invested isk? I could see that as a very good deal for all concerned, if you have more opportunity than isk.

Kana said...

@Gevlon have you tryed EveHQ? It can export wallet to csv and have many over functions, reprocessing and manufactoring profit calculators based on Jita prices, for example.

chewy said...

The first problem is the "ISK/hour" metric itself

During your WoW years this metric or the equivalent g/hr was always your mantra. Is this opinion shift because the games are different ? If so then a comparison to real life (employer thinking) isn't valid since real life is far more constant than gaming.

If it's not the game then why the shift of approach ?

Gevlon said...

@Chewy: WoW had no arbitrage and no hauling as there was only one market.

In WoW one could only be an industrialist crafting something. It's hourly paid work by default.

Of course you could pick up some idiot selling something below market price and relist, but that wasn't reliable income.

In WoW there were no traders just dumb farmers and smart farmers.

dobablo said...

@Chewy
It is a case of limiting factors. In WoW, you nealy always have enough gold to do something so the limit is the time you spend doing it, hence g/hour is the prime metric.

In Eve, you'll only have a fixed amount of your capital that you want to invest. Since the investment size is the limiting factor, return on investment per period is the optimal metric.

Gevlon said...

Dobablo is more right than me. In WoW, besides patches you simply can't invest in your capital beyond the price of the most expensive item. You'll have hundreds of thousands rotting in your wallet doing nothing, and your income is limited by the time you spend crafting, buying, selling, emptying mailbox.

Nielas said...

Another factor is that in WoW Gevlon was able to set up a system where he only had to work on his business every couple of days. Thus it really did not matter if a glyph he posted sold in an hour or two days since he would not bother restocking it right away.

In EVE Gevlon is much more active right now and with low capital reserves liquidity is more important to him. If he chooses to spend his time on other activities, he'll probably trade less frequently and thus profit/capital will become more significant than profit/time.

Mentat said...

If you can write up clearly what data you want presented in what way I'm sure I can at least put together something that could product Excel ready data. I'll take a closer look at the EVE API ASAP.

Gevlon said...

@Mentat: I try to be more precise than in the post.

First data: income and costs of that item. Sales, buys and (approximated) taxes and broker fees. These can also be user-defined like assign X% broker, Y% tax to sales and Z% broker to buys (which is 0 if you buy from sell orders).

Second data: current stocks of item, multiplied by the average value of the item (average of buy and sell-tax).

Third data: average stock size, how many items I had of these, averaged over time. So if I buy 5, sell one 1 day later, 1 the next day and so on, than during the five days my average is (5+4+3+2+1)/5.

The result: ([first]+[second])/([third]*average value)

Mentat said...

@Gevlon do you have an environment that you can run a python script in? First version will likely be command line.

Gevlon said...

@Mentat: it's something I can surely get.