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
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
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
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=[])
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
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()