Beer Stock Exchange
by Daniel Dyla
- Let
S(x)be the sigmoid function. - Let
tbe the time period between price changes - Let
pbe the starting price for a given beer. - Let
sbe the amount of $ you want to let the price “swing”. E.G a 0.5swould let a beer that costs $3 base cost from $2.5 to $3.5 - Let
cbe the amount you want to allow any given beer’s x to change in a single trading period (I’m going to use .5). - Let
lbe the largest absolute value of the difference between actual sales of each beer and the average sales per beer. - Let
abe the normalizing factor wherea = l/c
Abusing the Sigmoid Function for fun and profit
We need to modify our sigmoid function so that we can control its min and max.
- Realize
S(x)has a base price of $0.50 with a $0.50 swing. - =>
S(x)-.5has a base price of $0 with a $0.50 swing. - =>
2(S(x)-.5)has a base price of $0 with a $1 swing. - =>
2s * (S(x)-.5) + bhas a base price ofbwith a swing ofs.
Description of the algorithm
Start with your list of beers [b1,b2,b3,b4,b5].At the beginning of the night the price for all beers is its base price (x=0)
[0,0,0,0,0].
At the end of each trading period, count the number of beers sold in the time period [135, 152, 65, 103, 201].
Find the average number sold per beer (131.2) and find the difference between average and actual number sold for each beer
[3.8, 20.8, -66.2, -28.2, 69.8]. Normalize this against your c by dividing by a (139.6) to get [0.03, 0.15, -0.47, -0.20, 0.5].
This becomes the change between the old x and the new x for each beer. If you never round, the average x will always be 0, however this
is not feasible so you may want to normalize x every few rounds to make sure your average x stays 0.
Subscribe via RSS