Beer Stock Exchange
S(x)be the sigmoid function.
tbe the time period between price changes
pbe the starting price for a given beer.
sbe the amount of $ you want to let the price "swing". E.G a 0.5
swould let a beer that costs $3 base cost from $2.5 to $3.5
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).
lbe the largest absolute value of the difference between actual sales of each beer and the average sales per beer.
abe the normalizing factor where
a = 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.
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 of
bwith a swing of
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 (
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.