Exemplo n.º 1
0
class InteractiveEPF():
    
    def __init__(self, parent):
        '''
        Constructor
        '''
        self.parent = parent
        self.portfolioManager = PortfolioManager()
        self.plotter = Plotter(parent)


    
    def initUI(self, expReturn=.0100):
        
        self.portfolioManager.initEPF()
        self.portfolioManager.runEPF(expReturn=expReturn)
        self.plotter.initRanges(self.portfolioManager.portfolios, self.portfolioManager.companies)
        self.plotter.initPlot(self.portfolioManager.portfolios, self.portfolioManager.companies)
        self.plotter.initChart(self.portfolioManager.portfolios, self.portfolioManager.companies)
        #self.plotter.pack()
        axcolor = 'white'
        axRet = pyplot.axes([0.25, 0.032, 0.65, 0.02], axisbg=axcolor)
        self.sRet = Slider(axRet, 'Expected Return', 0.0, self.plotter.ymax, valinit=expReturn, valfmt='%1.4f')
        self.sRet.on_changed(self.expReturnChange)
        
        axRet = pyplot.axes([0.25, 0.008, 0.65, 0.02], axisbg=axcolor)
        self.tRet = Slider(axRet, 'Risk-Free Return', 0.0, self.plotter.ymax, valinit=0.0, valfmt='%1.4f')
        self.tRet.on_changed(self.tanChange)
        
    def addPortfolio(self, portfolio):
        self.portfolioManager.addPortfolio(portfolio)
        
    def expReturnChange(self, expRet):
        expRet = self.sRet.val
        tanRet = self.tRet.val
        self.portfolioManager.runEPF(expReturn=float(expRet), freeReturn=float(tanRet))
        self.plotter.updateExpRetPlot(self.portfolioManager.portfolios)
        self.plotter.updateExpRetChart(self.portfolioManager.portfolios)
    
    def tanChange(self, expRet):
        expRet = self.sRet.val
        tanRet = self.tRet.val
        self.portfolioManager.runEPF(expReturn=float(expRet), freeReturn=float(tanRet))
        self.plotter.updateTanPlot(self.portfolioManager.portfolios)
        self.plotter.updateTanChart(self.portfolioManager.portfolios)
    
    def show(self):
        pyplot.show()