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()