Giter VIP home page Giter VIP logo

pythonloanladder's People

Contributors

afarmelo avatar farmerjoe12 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

pythonloanladder's Issues

Lifecycle Simulation

Making payments on a Loan has a life-cycle, the more payments you make, the lower the balance, the more you've paid to principal and interest. I think this task is tightly coupled to the overall functionality of the program, and would be a key component when it's finished.

To start, there should be some kind of functionality to simulate making payments over time and the ability to change term length/additional payments/etc.

This would probably best be implemented from the start as a console interface, then as the GUI arises, it can be integrated.

Add loan creation/modification controls to the GUI

The GUI is working as of now, but users need to be able to interact with it.

Functionality required:

  • Text Field or Slider to add Loan amount to be graphed
  • Slider or Choice box to set Loan repayment period
  • Labels to view amount paid on principal and interest

Moving forward

Python is a rich expressive language, but has some pretty serious drawbacks in terms of full-stack application development.

I had hoped that this project could turn into a decent desktop application or maybe a web app someday, but the more that I learn about Python the more I think that I’m trying to make it something that it’s not.

I hate that I’m saying this but I think perhaps the .Net family of development tools will be my next area of research because it seems to be all inclusive, similar to the Java family.

Class representing the repayment (amortization) of a loan

As it stands, a Loan object contains information about a term as well as functionality which is used to calculate monthly payments and amortization schedules. Since a Loan is given as a single object from a lending institution with only a principal amount and an interest rate, in the spirit of OOP (as well as financing) should the repayment be separate from the loan itself?

Implement sorting of loans based on other criteria

US: As a user, I'd like to sort my loans in some order other than by interest rate.

From what I understand, there are different payment schemes and prioritization methods to pay off loans. Ex: snowball method.

This might necessarily need to be updated and split after research is done.

Will update with research.

Loan Consolidation/Refinancing

As a user, I'd like to see the effect of loan consolidation/refinance on my existing loans.

Loan consolidation is basically taking out a loan to pay off your other loans, thereby reducing the number of total payments which need to be made.

Consolidation has a number of things which need to be represented,

  • The possible interest rates that could be given and their profitability
  • Term length changes
  • Monthly payment changes
  • Interest payment changes
  • Savings (or losses)

Class needed to represent a collection of loans.

After removing all methods from LoanExcelDAO that are related to a collection of loans in commit 7c61054, it now stands that there is no functionality to operate on a collection of loans. Since the Loan Ladder methodology is based on the quickest way to pay off a collection of loans, the missing functionality is core to the operation of the program.

Implement basic loan simulation

US: As a user, rather than viewing new loan information, I'd like to run the application on loans that may already be in the payment process.

Loans stick with you for a long time, like an annoying pet. This application would greatly benefit the end user if she could pick it up and enter her own loan information about where she's at in the payment process and she could see how she's doing.

Some information that could be shown:

  • Based on how many payments she's made, whether she's ahead or behind the schedule

    • Also how many payments she has left to make
  • A graph of where she's at in the loan payment process and how much longer she has left

Interactive plotting with additional payments

US: As a user I'd like to see the effect of additional payments on the overall lifetime of loan repayment.

Any money in excess of the minimum monthly loan payment is paid directly towards principal. This greatly reduces the amount of money paid towards interest and shortens the lifetime of the loan repayment.

On the GUI this would be controlled by something like a slider or text field (or both?), and would be represented on the repayment schedule as a shortened term and lower overall interest paid.

Without the GUI it will have to be set manually as a field like "Additional payment: 50" and replotted every time the payment value would change.

Implement more functionality related to loan comparison

The methods for comparing two loans side by side are already implemented, now it's a matter of adding UI components and interaction with the user to properly get information from the user and display those loan comparisons.

Make the application more interactive

The point of this application is to act as a personal finance assistant specifically related to loans. It needs to be interactive and there need to be things to change, loan amounts, terms, payments, etc.

From the start it would be easiest to start with a console UI, then gravitate toward a GUI over time.

UT - RepaymentSchedule needs to be more thoroughly tested.

Unit tests needed. There is currently one test case for RepaymentSchedule.get_payment_schedule, but there are many ways (up to 4) that this method can be called in happy cases, and many more unhappy cases that could arise.

In addition, I've put this off when considering test cases, is it necessary to test larger term payment schedules? It's much more simple to test smaller terms like a single year. I assume that if 12 months can be accurately calculated, then 12 years could be reliable as well.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.