Create financial statements from real world investment transactions
Report Bug
·
Request Feature
Table of Contents
Investment Accountant provides a simple interface for creating financial statements from real world financial investment transactions. The Investment Accountant uses double entry accounting principles and strives to be GAAP compliant. There are some default transaction classes available for use and extension. Transactions can represent buying/selling a stock, sending/receiving a cryptocurrency, or anything else you can think of!
An Asset represents the financial asset involved in a transaction. It contains useful information such as its symbol and whether it is stable or fiat. The Asset component is used to unify the interface and provide the data that is used throughout the system (for example, in the Positions and Entries).
An Entry is the basic unit of accounting in this system. Each transaction must have at least two corresponding entries to keep the equation equal, however a single transaction may have many correlating entries.
Transactions must contain all of the information needed in order for the bookkeeper to accurately account for it. Initially, we are accounting for investment transactions so we have to provide the relevant Asset information to track, and provide entry_templates which explain how it is tracked in accounts. In other accounting systems, Asset may be substituted for an inventory, equipment, land, or other physical items that are involved in transactions. This will require new entry templates, and further functions to accurately represent the accounting involved.
The Ledger consumes accounting journal entries and manipulates those entries within a pandas dataframe. The Ledger provides a simple interface for organizing data into common accounting structures.
The Bookkeeper converts Transactions
to Entries
and maintains a Ledger
and Positions
. It is responsible for enforcing Transaction, Entry, Position, and Ledger interfaces.
A Bookkeeper can
-
Accept transaction(s), which will trigger
- Update Assets' Position
- Get Entries from Transaction
- create Adjusting Entries for Affected Positions
- Record Transaction and Adjusting Entries on Ledger
-
Accept New Asset Price
- Update Assets' Position
- Create Adjusting Entries for Asset Positions
- Record Adjusting Entries on Ledger
- Finalize Transaction interface
- Finalize Entry interface
- Finalize Position interface
- Create financial statements
- Allow Bookkeeper to maintain correct books in real-time environment
- Add usage docs
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch
git checkout -b feature/AmazingFeature
- Commit your Changes
git commit -m 'Add some AmazingFeature'
- Push to the Branch
git push origin feature/AmazingFeature
- Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Free Software, Yee Haw!
Riley Stephens - [email protected]