Ejemplo n.º 1
0
    def run(self):
        date = dateHelper.getDateAsDatetime(self.startDate)
        endDate = dateHelper.getDateAsDatetime(self.endDate)
        provider = DataProvider()
        balance = BalancePortfolio(provider)
        broker = Broker(provider)
        broker.addCash(self.initialCash)
        portfolioValue = []

        while (date < endDate):
            date_str = dateHelper.getDateAsString(date)

            if (date.weekday() < 5 and not self.isHoliday(date)):
                value = broker.getValue(dateHelper.getDateAsString(date))

                if (self.lastRebalance > self.rebalanceDays):
                    self.lastRebalance = 0
                    broker.setPortfolio(balance.getPortfolio(date_str, value),
                                        date_str)
                else:
                    self.lastRebalance += 1

                portfolioValue += [[date, value]]
            date += timedelta(days=1)

        # print(portfolioValue)
        with open('data/portfolioValue.csv', 'w') as file:
            for item in portfolioValue:
                date = dateHelper.getDateAsString(item[0])
                file.writelines(date + "," + str(item[1]) + "\n")

        print('Performance ' + self.startDate + ' - ' + self.endDate)
        print('Starting value: ' + str(self.initialCash))
        print('Final value: ' + str(portfolioValue[-1][1]))