def test_evaluate_profitable():
    market = Market('test', 0, '', 'SingleMarket')
    c1 = Contract('test', 'test1', '')
    c2 = Contract('test', 'test2', '')
    c3 = Contract('test', 'test3', '')

    c1.short_offers = [ Offer(c1, 'NO', .4, 10) ]
    c2.short_offers = [ Offer(c2, 'NO', .6, 10) ]
    c3.short_offers = [ Offer(c3, 'NO', .8, 10) ]


    market.contracts = [ c1, c2, c3 ]

    r = buy_no.evaluate(market)
    
    assert r is not None

    ret = r[0]
    gain = r[1]
    cost = r[2]
    shares = r[3]

    assert cost == 18
    assert shares == 10
    assert round(ret, 2) == .1
    assert round(gain, 2) == 1.8
def test_contract_costs():
	c = Contract('ticker', 'test', '')
	c.long_offers = [
		Offer(c, 'Yes', .1, 5),
		Offer(c, 'Yes', .16, 10),
		Offer(c, 'Yes', .2, 100),
	]

	c.short_offers = [
		Offer(c, 'Yes', .4, 6),
		Offer(c, 'Yes', .5, 4),
		Offer(c, 'Yes', .6, 10),
	]

	assert c.cost_to_buy_n_long(1000) is None
	assert c.cost_to_buy_n_short(1000) is None

	assert c.cost_to_buy_n_long(5) == .5
	assert c.cost_to_buy_n_long(10) == 1.3
	assert c.cost_to_buy_n_long(20) == 3.1

	assert c.cost_to_buy_n_short(6) == 2.4
	assert c.cost_to_buy_n_short(10) == 4.4
	assert c.cost_to_buy_n_short(12) == 5.6
	assert c.cost_to_buy_n_short(20) == 10.4
def test_evaluate_notprofitable():
    market = Market('test', 0, '', 'SingleMarket')
    c1 = Contract('test', 'test1', '')
    c2 = Contract('test', 'test2', '')
    c3 = Contract('test', 'test3', '')

    c1.short_offers = [ Offer(c1, 'NO', .9, 10) ]
    c2.short_offers = [ Offer(c2, 'NO', .95, 10) ]
    c3.short_offers = [ Offer(c3, 'NO', .99, 10) ]


    market.contracts = [ c1, c2, c3 ]

    r = buy_no.evaluate(market)
    
    assert r is None
def test_evaluate_notprofitable():
    market = Market('test', 0, '', 'SingleMarket')
    c1 = Contract('test', 'test1', '')

    c1.long_offers = [ Offer(c1, 'YES', .52, 10) ]
    c1.short_offers = [ Offer(c1, 'NO', .54, 5)]


    market.contracts = [ c1 ]

    r = buy_yes_no.evaluate(market)
    
    assert r is None
def test_evaluate_profitable():
    market = Market('test', 0, '', 'SingleMarket')
    c1 = Contract('test', 'test1', '')

    c1.long_offers = [ Offer(c1, 'YES', .4, 10) ]
    c1.short_offers = [ Offer(c1, 'NO', .4, 5)]

    market.contracts = [ c1 ]

    r = buy_yes_no.evaluate(market)
    
    assert r is not None

    ret = r[0]
    gain = r[1]
    cost = r[2]
    shares = r[3]

    assert shares == 5
    assert cost == 4
    assert round(ret, 2) == .23
    assert round(gain, 2) == 1
Example #6
0
def load(path):
    raw = json.loads(open(path).read())
    markets = []
    for r in raw:
        m = Market(r['name'], r['id'], r['url'], r['type'])
        if('contracts' in r):
            for x in r['contracts'].keys():
                rc = r['contracts'][x]

                c = Contract(x, rc['name'], rc['url'])

                for z in rc['buy_yes_offers']:
                    o = Offer(c, 'buy_yes', z['price'], z['shares'])
                    c.long_offers.append(o)
                for z in rc['buy_no_offers']:
                    o = Offer(c, 'buy_no', z['price'], z['shares'])
                    c.short_offers.append(o)

                c.long_offers=sorted(c.long_offers, key=lambda x: x.price)
                c.short_offers=sorted(c.short_offers, key=lambda x: x.price)
                m.contracts.append(c)
            markets.append(m)
    return markets