示例#1
0
def test_curve():
    curve = PriceSupplyCurve(factor=0.0001, base_price=5)
    assert curve.supply(0) == 0
    assert curve.price(0) == curve.b
    assert curve.supply_at_price(curve.b) == 0, curve.supply_at_price(curve.b)
    assert curve.reserve_at_price(curve.b) == 0
    assert curve.reserve(0) == 0

    supply = 1000000
    price = curve.price(supply)
    assert curve.supply_at_price(price) == supply
    reserve = curve.reserve(supply)
    assert curve.reserve_at_price(price) == reserve
    num = 1000
    value = curve.cost(supply, num)
    assert value > 0
    xassert(num, curve.issued(supply, value))
    num = -1000
    value = curve.cost(supply, num)
    assert value < 0
    assert num == curve.issued(supply, value)
    assert -curve.cost(supply, -1) < curve.cost(supply, 1)  # bid < ask
    mktcap = supply * price
    supply2 = curve.supply_at_mktcap(mktcap)
    assert supply == supply2

    # test mktcap
    p = 100
    s = curve.supply_at_price(p)
    assert curve.price(s) == p
    m = p * s
    assert m == curve.mktcap(s)
    assert curve.supply_at_mktcap(m) == s
示例#2
0
from math import sqrt

bf = 0.3
M = 1000**2
c = PriceSupplyCurve(factor=0.0001, base_price=0)

reserve = 50 * M  # the total proceeds
s = c.supply(reserve)
xassert(c.reserve(s), reserve)
p = c.price(s)  # all bought at this price
issued = reserve / p
skipped = s - issued
print 'issued', issued, s, skipped
mktcap = issued * p

fmt = 'ceil:{:,.0f}\tprice:{:,.0f}\tfloor:{:,.0f}\tmktcap:{:,.0f}\treserve:{:,.0f}'
fmt += '\tpval:{:,.0f}\tsupply:{:,.0f}\tbval:{:,.0f}'

mktcap /= 2
for i in range(7):
    mktcap *= 2
    s = c.supply_at_mktcap(mktcap, skipped)
    price = c.price(s + skipped)
    xassert(mktcap, s * price)
    r = c.reserve_at_price(price)
    f = r / s
    ceil = price / (1 - bf)
    bval = bf * mktcap
    pval = mktcap - r
    print fmt.format(ceil, price, f, mktcap, r, pval, s, bval)