コード例 #1
0
ファイル: test_query.py プロジェクト: robertbetts/Kew
class Test(unittest.TestCase):


    def setUp(self):
        test_db_path = 'test-kew-pe.db'
        if os.path.isfile(test_db_path):
            os.remove(test_db_path)
        self.control = Control(db_url="sqlite:///" + test_db_path,echo=False)


    def tearDown(self):
        self.control._dispose_()


    def testName(self):
        date1 = datetime.date(2009, 5, 23)
        date2 = datetime.date(2010, 5, 23)
        date3 = datetime.date(2011, 5, 23)
        date4 = datetime.date(2013, 5, 23)
        date5 = datetime.date(2014, 5, 23)
        with self.control._session_context as session:
            deal = model.Deal()
            session.add(deal)
            deal.cashflows.append(model.Cashflow(amount=Decimal(15), settlement_date = date1))
            deal.cashflows.append(model.Cashflow(amount=Decimal(15), settlement_date = date1))
            deal.cashflows.append(model.Cashflow(amount=Decimal(-15), settlement_date = date1))
            deal.cashflows.append(model.Cashflow(amount=Decimal(-15), settlement_date = date2))
            deal.cashflows.append(model.Cashflow(amount=Decimal(-15), settlement_date = date4))
            deal.forward_cashflows.append(model.ForwardCashflow(amount=Decimal(25), settlement_date = date4))
            deal.forward_cashflows.append(model.ForwardCashflow(amount=Decimal(75), settlement_date = date5))
            deal.holdings.append(model.Holding(current_value=Decimal(10)))
            deal.holdings.append(model.Holding(current_value=Decimal(-5)))
            session.commit()
            
            s = session.query(func.sum(model.Cashflow.amount), func.avg(model.Cashflow.amount))
            s = s.filter(model.Cashflow.amount == Decimal(15))
            print s
            #s.filter(model.Cashflow.amount == Decimal(15))
            #print s
            r = session.execute(s)
            id = deal.id
            cash_flows = []
            #for row in r:
                #print row
            back = session.query(model.Cashflow.settlement_date.label("settlement_date"),model.Cashflow.amount.label("amount")).\
                filter(model.Cashflow.deal_id==deal.id)
            forward = session.query(model.ForwardCashflow.settlement_date.label("settlement_date"), model.ForwardCashflow.amount.label("amount")).\
                filter(model.ForwardCashflow.deal_id==deal.id)
            cash = back.union_all(forward).order_by(literal_column("settlement_date").asc(), literal_column("amount").asc())
            for c in cash:
                print c
                cash_flows.append(c)
            irr = IRRCalculator(Decimal('0.10'), cash_flows)
            irr2 = IRRCalculator(Decimal('0.10'), [])
            #print irr.theIRR
            #print irr2.theIRR
            mm = MMCalculator(cash_flows)
            print mm.theMM
            print mm.errors
コード例 #2
0
ファイル: test_cash_pnl.py プロジェクト: robertbetts/Kew
class Test(unittest.TestCase):


    def setUp(self):
        test_db_path = 'shop.db'
        if os.path.isfile(test_db_path):
            os.remove(test_db_path)
        test_db_path = '../shop.db'
        db_url = "sqlite:///" + test_db_path
#        db_url = 'mysql://*****:*****@localhost/kew_pe?charset=utf8' 
        self.control = Control(db_url=db_url,echo=True, drop_all=True)


    def tearDown(self):
        self.control._dispose_()


    def testName(self):
        with self.control._session_context as session:
            deal = model.Deal()
            deal2 = model.Deal()
            session.add_all([deal,deal2])
            deal.cashflows.append(model.Cashflow(amount=Decimal(10)))
            deal.cashflows.append(model.Cashflow(amount=Decimal("10.1333")))
            deal.cashflows.append(model.Cashflow(amount=Decimal(10)))
            deal.cashflows.append(model.Cashflow(amount=Decimal(10)))
            deal.forward_cashflows.append(model.ForwardCashflow(amount=Decimal(-5)))
            deal.forward_cashflows.append(model.ForwardCashflow(amount=Decimal("-5")))
            deal.forward_cashflows.append(model.ForwardCashflow(amount=Decimal(-5)))
            deal.holdings.append(model.Holding(current_value=Decimal(10),pnl=30,fx_pnl=300))
            deal.holdings.append(model.Holding(current_value=Decimal(-5),current_invested_capital=Decimal(1000000)))
            
            
            deal2.cashflows.append(model.Cashflow(amount=Decimal(10)))
            deal2.cashflows.append(model.Cashflow(amount=Decimal(10)))
            deal2.forward_cashflows.append(model.ForwardCashflow(amount=-Decimal(5)))
            deal2.holdings.append(model.Holding(current_value=Decimal(10),pnl=30,fx_pnl=2))
            session.commit()
                        
            self.assertEquals(deal.current_value, Decimal(5))
            self.assertEquals(deal.current_invested_capital, Decimal(1000000))
            self.assertEquals(deal.current_pnl, Decimal(30))
            self.assertEquals(deal.current_fx_pnl, Decimal(300))
            
            self.assertEquals(deal.cash_total + deal.forward_total, Decimal("25.1333"))
            self.assertEquals(deal2.cash_total + deal2.forward_total, Decimal(15))
            
            self.assertEquals(deal.cash_pnl, Decimal("25.1333"))
            self.assertEquals(deal2.cash_pnl, Decimal(15))
            
            
    def _testName(self):
        with self.control._session_context as session:
            deal = session.query(model.Deal).get(1)
            
#            print deal.current_value
            print deal.cash_pnl
コード例 #3
0
ファイル: test_call_sf_feed.py プロジェクト: robertbetts/Kew
class Test(unittest.TestCase):


    def setUp(self):
        db_url = 'mysql://*****:*****@localhost/kew_pe?charset=utf8' 
        self.control = Control(file_archive="", db_url=db_url)


    def tearDown(self):
        self.control._dispose_()
            
            
    def testPowerPointFeed(self):
        with self.control._session_context as session:
            deal_name="12 Eaton Place"
            result = self.control.update_structure_chart_image(deal_name)
            print result
コード例 #4
0
ファイル: test_deal_save.py プロジェクト: robertbetts/Kew
class Test(unittest.TestCase):


    def setUp(self):
        db_url = 'mysql://*****:*****@localhost/kew_pe?charset=utf8' 
        self.control = Control(file_archive='',db_url=db_url)


    def tearDown(self):
        self.control._dispose_()


    def testSave(self):
        with self.control._session_context as session:
            deal  = session.query(model.Deal).filter(model.Deal.name=="12 Eaton Place").first()
            if deal:
                data = deal.to_json()
                collections = []
                self.control.genoa_save('Deal', data, collections, surrogates=[])
コード例 #5
0
ファイル: test_entity_model.py プロジェクト: robertbetts/Kew
class Test(unittest.TestCase):


    def setUp(self):
        test_db_path = 'deal_test.db'
        if os.path.isfile(test_db_path):
            os.remove(test_db_path)
        test_db_path = '../deal_test.db'
#        db_url = "sqlite:///" + test_db_path
        db_url = 'mysql://*****:*****@localhost/kew_pe?charset=utf8' 
        self.control = Control(file_archive='',db_url=db_url)


    def tearDown(self):
        self.control._dispose_()


    def testHoldings(self):
        with self.control._session_context as session:
            entity = session.query(model.Entity).filter(model.Entity.name=='').first()
            if entity:
                for i, h in enumerate(entity.key_contacts):
                    print i, h.id, h.name
コード例 #6
0
ファイル: test_deal_model.py プロジェクト: robertbetts/Kew
class Test(unittest.TestCase):


    def setUp(self):
        test_db_path = 'deal_test.db'
        if os.path.isfile(test_db_path):
            os.remove(test_db_path)
        test_db_path = '../deal_test.db'
#        db_url = "sqlite:///" + test_db_path
        db_url = 'mysql://*****:*****@localhost/kew_pe?charset=utf8' 
        self.control = Control(file_archive='',db_url=db_url, echo=False)


    def tearDown(self):
        self.control._dispose_()


    def _testHoldings(self):
        with self.control._session_context as session:
            deal = session.query(model.Deal).get(1)
            if deal:
                for i, h in enumerate(deal.holdings):
                    print i, h.id, h.name, h.deal_id
            
    def _testEntity(self):
        with self.control._session_context as session:
            obj = session.query(model.Entity).get(99)
            if obj:
                for i, o in enumerate(obj.accounts):
                    print i, o

    def _testVersionInc(self):
        with self.control._session_context as session:
            deals = [34]
            version_date = datetime.date.today()
            self.control.roll_version(deals, version_date=version_date, version_label="New Report")
            
    def testColProps(self):
        with self.control._session_context as session:
            print "*"*20, datetime.datetime.now()
            
            deal_27 = session.query(model.Deal).get(27)
            deal_34 = session.query(model.Deal).get(34)
            
            print deal_27.version_id, deal_34.version_id
            print deal_27.current_value, deal_34.current_value
            print deal_27.current_invested_capital, deal_34.current_invested_capital
            print deal_27.current_pnl, deal_34.current_pnl
            print deal_27.cash_pnl, deal_34.cash_pnl
            
            #print '*'*20, deal.current_invested_capital
            #json = deal.to_json()
            #print json
            print "*"*20, datetime.datetime.now()
            print "genoa_item"
            #list = self.control.genoa_list(model='Cashflow', criteria={u'deal_id': 27, u'version_id': 27}, offset=None, limit=None, summary=None, order_by=None)
            data = self.control.genoa_item(model='Deal', pk=27, collections=['cashflows'], surrogates=[], version_id=None)
            print "*"*20, datetime.datetime.now()
            print "genoa_save"
            self.control.genoa_save('Deal', data, collections=[['cashflows', 'Cashflow', 'ONETOMANY']], surrogates=[])
            print "*"*20, datetime.datetime.now()
            print "genoa_list"
            self.control.genoa_list('Cashflow', criteria={'deal_id':27, 'version_id':59})
            print "*"*20, datetime.datetime.now()