Building Auction OperationsThe Default auction operation is good for beginners and does its job. It can be difficult to decipher. Sapu
explained it, and I
took a crack, too.
My goal in this article is to cover these things:
write a cleaner, easy to read operation- ensure we sell for a profit
- create the operation in steps
- make it extensible
Everything Ends with the Auction House CutWhen an item sells at the auction house, the auction house gets a cut of 5% of the sale price. We want to adjust for that loss, and to do so, divide by 0.95. A simple math check verifies that multiplying by 1.05 or 1.06 is incorrect.
100 / 0.95 = 105.2632, or 105g26s32c- 100 * 1.05 = 105, or 105g0s0c
- 100 * 1.06 = 106, or 106g0s0c
- 100 * 1.052632 = 105.2632, or 105g26s32c 1
Let's take those and apply the cut to calculate what we get as a net result.
105g26s32c * 0.95 = 100g0s0c after rounding- 105g * 0.95 = 99g75s0c –– that is not 100g
- 106 * 0.95 = 100g70s0c –– that is not 100g
1 This does not work unless we start with nice, round, integers, which are multiples of 10, and we can't multiply by 1.052632 consistently unless we start with multiples of 10. If the starting value includes decimals (gold and silver, or silver and copper, or any combination that causes rounding), it won't work.
It Begins...This
link to part 6 contains links to the previous articles.
Let's assume a minimum profit of 10%. In TSM, we can write either 1.1 * or 110%; I will use 1.1 * and apply it to the operation. Use whichever method you find easiest to read. Now we start building the operation.
TSM ignores any price sources that are not valid. There is no need to create an operation for crafting, and another for flipping, etc. We can do it all within one operation. If you do not know a recipe, crafting is ignored; if you did not purchase an item, smartavgbuy, minbuy, maxbuy, and avgbuy are ignored.
1.1 * smartavgbuy / 0.95 is a good start. smartavgbuy is the average purchase price you paid for your current inventory. avgbuy is the average purchase price you paid based on your accounting history, whether you have the item or not. I prefer smartavgbuy because it typically is not affected by long periods, going back months, perhaps years.
Building...We are going to add auctioning higher than selling to an NPC, or vendorsell, and crafting for a profit, or crafting, to the operation. Furthermore, we want to use the most valuable of these, which is handled by TSM's max() function, which returns the highest or largest of the supplied parameters, provided it is
valid.
1.1 * max(smartavgbuy, vendorsell, crafting) / 0.95
AuctionDB ValuesTSM offers several auctionDB values: dbmarket, dbregionmarketavg, dbregionsaleavg, dbminbuyout, dbrecent, dbhistorical, and dbregionhistorical. I will use the first three, as dbminbuyout and dbrecent are too volatile, and the last two cover data over 60 days, which gets long in the tooth.
I found that averaging the values is a good, solid, base. avg(dbmarket, dbregionmarketavg, dbregionsaleavg) –– looks good, but we are trying to undercut, so I'll use 30% of the average. You can use 0.3 *, but in this case, I find a percent easier to read.
30% avg(dbmarket, dbregionmarketavg, dbregionsaleavg)
Putting Them TogetherWe need to put the average into the rest of the operation, which is easy.
1.1 * max(smartavgbuy, vendorsell, crafting, 30% avg(dbmarket, dbregionmarketavg, dbregionsaleavg)) / 0.95
The ResultsRemember that we are multiplying the result by 1.1, which resolves to whichever of these is valid and worth the most gold
after the 5% auction house cut:
110% smartavgbuy- 110% vendorsell
- 110% crafting
- 33% of the average of your realm's market value, the region's average of all realms' market values, and the region's average sell price.
Wait, how did I get 33% of the average? 30% is 0.3; 0.3 * 1.1 = 0.33, or 33%.
This operation string makes for a good minimum, undercutting most things while maintaining a profit.
But... My Maximum! My Normal!One of the goals above was to make an operation which is easy to read. To that end, we need to change one thing for maximum and normal, right at the beginning. No monkeying with altering the syntax.
Maximum6 * max(smartavgbuy, vendorsell, crafting, 30% avg(dbmarket, dbregionmarketavg, dbregionsaleavg)) / 0.95
The Results
600% smartavgbuy- 600% vendorsell
- 600% crafting
- 180% of the average
Normal3 * max(smartavgbuy, vendorsell, crafting, 30% avg(dbmarket, dbregionmarketavg, dbregionsaleavg)) / 0.95
The Results
300% smartavgbuy- 300% vendorsell
- 300% crafting
- 90% of the average
It Ends...You can change things around, and try different approaches. The above is a guide, and should not be taken as the only way to create auction operations. It accomplishes its goals and functions well. I use this setup, with slight variations, daily.
Editing the operations is quick and easy. If you play Cataclysm and have a potion master, change crafting to crafting / 1.2 as per the proc guide. If you sell BoEs, you can add destroy to either the first half or within the average. Do you want to reign in BoE prices with itemlevel? Go ahead. The possibilities are limitless!
Hopefully, this helps my fellow goblins. Have fun and make all the gold!