Esempio n. 1
0
 def test_div_by_non_Money(self):
     currency_usd, created = get_or_create(self.session,
                                           Currency,
                                           name='Dollar',
                                           code='USD')
     x = Money(amount=50, currency=currency_usd)
     y = 2
     self.assertEquals(x / y, Money(amount=25, currency=currency_usd))
Esempio n. 2
0
 def test_lgt(self):
     currency_usd, created = get_or_create(self.session,
                                           Currency,
                                           name='Dollar',
                                           code='USD')
     x = Money(amount=2, currency=currency_usd)
     y = Money(amount=1, currency=currency_usd)
     self.assertTrue(x > y)
Esempio n. 3
0
 def test_div(self):
     currency_usd, created = get_or_create(self.session,
                                           Currency,
                                           name='Dollar',
                                           code='USD')
     x = Money(amount=50, currency=currency_usd)
     y = Money(amount=2, currency=currency_usd)
     self.assertEquals(x / y, Decimal(25))
Esempio n. 4
0
    def test_money_gt(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')
        usd_10 = Money(amount=10, currency=currency_usd)
        usd_11 = Money(amount=11, currency=currency_usd)

        self.assertTrue(usd_11 > usd_10)
Esempio n. 5
0
    def test_money_equals(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')

        usd_10 = Money(amount=10, currency=currency_usd)
        other_usd_10 = Money(amount=10, currency=currency_usd)
        self.assertTrue(other_usd_10 == usd_10)
Esempio n. 6
0
 def test_sum(self):
     currency_usd, created = get_or_create(self.session,
                                           Currency,
                                           name='Dollar',
                                           code='USD')
     money = sum([
         Money(amount=1, currency=currency_usd),
         Money(amount=2, currency=currency_usd)
     ])
     self.assertEquals(money, Money(amount=3, currency=currency_usd))
Esempio n. 7
0
    def test_not_equal_by_amount(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')

        usd_10 = Money(amount=Decimal(10), currency=currency_usd)
        usd_20 = Money(amount=Decimal(20), currency=currency_usd)

        self.assertTrue(usd_10 != usd_20)
Esempio n. 8
0
    def test_money_compare_currencies(self):
        currency_arg, created = get_or_create(self.session,
                                              Currency,
                                              name='Peso',
                                              code='ARG')
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')

        ar_10 = Money(amount=10, currency=currency_arg)
        usd_10 = Money(amount=10, currency=currency_usd)
Esempio n. 9
0
    def test_sub(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')

        usd_10 = Money(amount=Decimal(10), currency=currency_usd)
        usd_20 = Money(amount=Decimal(20), currency=currency_usd)

        usd_sub = usd_20 - usd_10

        self.assertEquals(usd_sub.amount, 10)
        self.assertEquals(usd_sub.currency.code, 'USD')
Esempio n. 10
0
    def test_add_money(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')

        usd_10 = Money(amount=Decimal(10), currency=currency_usd)
        usd_20 = Money(amount=Decimal(20), currency=currency_usd)

        usd_30 = usd_10 + usd_20

        self.assertEquals(usd_30.amount, 30)
        self.assertEquals(usd_30.currency.code, 'USD')
Esempio n. 11
0
    def test_not_equal_by_currency(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')
        currency_ar, created = get_or_create(self.session,
                                             Currency,
                                             name='Peso',
                                             code='ARG')

        usd_10 = Money(amount=Decimal(10), currency=currency_usd)
        ar_10 = Money(amount=Decimal(10), currency=currency_ar)

        self.assertTrue(usd_10 != ar_10)
Esempio n. 12
0
 def test_rmod_bad(self):
     currency_usd, created = get_or_create(self.session,
                                           Currency,
                                           name='Dollar',
                                           code='USD')
     x = Money(amount=2, currency=currency_usd)
     with self.assertRaises(Exception):
         self.assertEquals(x, 1)
Esempio n. 13
0
 def setUp(self):
     super(TestAccount, self).setUp()
     self.owner = Owner(name='lucky')
     self.pesos = Currency(name='Pesos', code='ARG')
     self.exchange = Exchange(name='Merval', currency=self.pesos)
     self.free_broker = Broker(name='Free Broker')
     self.stock_one = Stock(symbol='PBR', description='Petrobras BR', ISIN='US71654V4086', exchange=self.exchange)
     self.stock_two = Stock(symbol='YPF', description='YPF S.A', ISIN='US9842451000', exchange=self.exchange)
     self.account=Account(owner=self.owner, broker=self.free_broker)
     self.money = Money(amount=1000, currency=self.pesos)
Esempio n. 14
0
    def test_mul(self):
        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')
        usd_10, created = get_or_create(self.session,
                                        Money,
                                        amount=Decimal(10),
                                        currency=currency_usd)

        self.assertEquals(
            usd_10 * 20, Money(amount=Decimal(10 * 20), currency=currency_usd))
Esempio n. 15
0
    def test_abs(self):

        currency_usd, created = get_or_create(self.session,
                                              Currency,
                                              name='Dollar',
                                              code='USD')
        usd_minus_200, created = get_or_create(self.session,
                                               Money,
                                               amount=Decimal(-200),
                                               currency=currency_usd)

        self.assertEquals(Money(amount=Decimal(200), currency=currency_usd),
                          abs(usd_minus_200))
Esempio n. 16
0
    def test_is_order_met(self):
        now = datetime.datetime.now()
        broker = Broker(name='Broker1')
        account = Account(broker=broker)

        pesos = Currency(name='Pesos', code='ARG')
        account.deposit(Money(amount=10000, currency=pesos))
        exchange = Exchange(name='Merval', code='MERV', currency=pesos)
        stock = Stock(symbol='symbol',
                      description='a stock',
                      ISIN='US123456789',
                      exchange=exchange)
        tick1 = Tick(trade_date=now,
                     price=13.20,
                     amount=1000,
                     volume=1000,
                     security=stock)
        order1 = BuyOrder(account=account,
                          security=stock,
                          price=13.25,
                          share=10,
                          is_market=True)
        order2 = BuyOrder(account=account,
                          security=stock,
                          price=13.15,
                          share=10)
        order3 = SellOrder(account=account,
                           security=stock,
                           price=13.25,
                           share=10)
        order4 = SellOrder(account=account,
                           security=stock,
                           price=13.15,
                           share=10,
                           is_market=True)
        self.session.add(order1)
        self.session.add(order2)
        self.session.add(order3)
        self.session.add(order4)
        self.session.commit()

        self.assertTrue(order1.is_order_met(tick1))
        self.assertFalse(order2.is_order_met(tick1))
        self.assertFalse(order3.is_order_met(tick1))
        self.assertTrue(order4.is_order_met(tick1))
Esempio n. 17
0
def validate_buy_order(mapper, connection, target):
    from pystock.models.money import Money
    from pystock.models import Position, OpenPositionStage
    cost = target.share * target.price + target.account.broker.commission(
        target)
    if cost > target.account.cash[target.security.currency]:
        raise Exception(
            'Transition fails validation: cash {0} is smaller than cost {1}'.
            format(target.account.cash[target.security.currency], cost))

    target.account.deposit(
        Money(amount=target.share * -1 * Decimal(target.price),
              currency=target.security.exchange.currency))
    session = object_session(target)
    position = Position(buy_order=target,
                        stage=OpenPositionStage(),
                        share=target.share,
                        account=target.account)
    session.add(position)
Esempio n. 18
0
    def _buy_stock(self):
        pesos = Currency(name='Pesos', code='ARG')
        broker = Broker(name='Cheap')
        self.account = Account(broker=broker)
        ten_thousand_pesos = Money(amount=Decimal(10000), currency=pesos)
        self.account.deposit(ten_thousand_pesos)
        exchange = Exchange(name='Merval', currency=pesos)
        self.security = Stock(symbol='PBR',
                              description='Petrobras BR',
                              ISIN='US71654V4086',
                              exchange=exchange)
        filled_stage = FillOrderStage(executed_on=datetime.datetime.now())
        price = Decimal(10)
        share = 10
        order = BuyOrder(account=self.account,
                         security=self.security,
                         stage=filled_stage,
                         price=price,
                         share=share)

        self.session.add(order)
        self.session.commit()
        return self.account
Esempio n. 19
0
 def test_cash_deposit(self):
     account = Account()
     one_thousands_pesos = Money(amount=1000, currency=self.pesos)
     account.deposit(one_thousands_pesos)
     self.assertEquals(1000, account.cash[self.pesos])
Esempio n. 20
0
 def test_add_non_money(self):
     with self.assertRaises(Exception):
         Money(1000) + 123