packages feed

hledger-interest-1.7.0: hledger-interest.cabal

Name:                   hledger-interest
Version:                1.7.0
Synopsis:               computes interest for a given account
License:                BSD3
License-file:           LICENSE
Author:                 Peter Simons <simons@cryp.to>
Maintainer:             Peter Simons <simons@cryp.to>
Homepage:               https://github.com/peti/hledger-interest
Category:               Finance
Build-type:             Simple
Cabal-version:          >= 1.10
Extra-source-files:     README.md
                        CHANGELOG.md
Stability:              stable
tested-with:            GHC == 9.6.7, GHC == 9.8.4, GHC == 9.10.3,
                        GHC == 9.12.2, GHC == 9.14.1

Description:
 hledger-interest is a small command-line utility based on Simon
 Michael's hledger library. Its purpose is to compute interest for a
 given ledger account. Using command line flags, the program can be
 configured to use various schemes for day-counting, such as act\/act,
 30\/360, 30E\/360, and 30\/360isda. Furthermore, it supports a (small)
 number of interest schemes, i.e. annual interest with a fixed rate and
 the scheme mandated by the German BGB288 (Basiszins fuer
 Verbrauchergeschaefte). Extending support for other schemes is fairly
 easy, but currently requires changes to the source code.
 .
 As an example, consider the following loan, stored in a file called
 @test.ledger@:
 .
 > 2008/09/26 Loan
 >     Assets:Bank          EUR 10000.00
 >     Liabilities:Bank
 >
 > 2008/11/27 Payment
 >     Assets:Bank          EUR -3771.12
 >     Liabilities:Bank
 >
 > 2009/05/03 Payment
 >     Assets:Bank          EUR -1200.00
 >     Liabilities:Bank
 >
 > 2010/12/10 Payment
 >     Assets:Bank          EUR -3700.00
 >     Liabilities:Bank
 .
 Suppose that loan earns 5% interest per year, and payments amortize
 interest before amortizing the principal claim, then the resulting
 ledger would look like this:
 .
 > $ hledger-interest --file=test.ledger --source=Expenses:Interest --target=Liabilities:Bank --30-360 --annual=0.05 Liabilities:Bank
 > 2008-09-26 Loan
 >     Assets:Bank          EUR 10000.00
 >     Liabilities:Bank    EUR -10000.00
 >
 > 2008-11-27 5% interest for EUR -10000.00 over 61 days
 >     Liabilities:Bank       EUR -84.72
 >     Expenses:Interest       EUR 84.72
 >
 > 2008-11-27 Payment
 >     Assets:Bank         EUR -3771.12
 >     Liabilities:Bank     EUR 3771.12
 >
 > 2008-12-31 5% interest for EUR -6313.60 over 34 days
 >     Liabilities:Bank       EUR -29.81
 >     Expenses:Interest       EUR 29.81
 >
 > 2009-05-03 5% interest for EUR -6343.42 over 123 days
 >     Liabilities:Bank      EUR -108.37
 >     Expenses:Interest      EUR 108.37
 >
 > 2009-05-03 Payment
 >     Assets:Bank         EUR -1200.00
 >     Liabilities:Bank     EUR 1200.00
 >
 > 2009-12-31 5% interest for EUR -5251.78 over 238 days
 >     Liabilities:Bank      EUR -173.60
 >     Expenses:Interest      EUR 173.60
 >
 > 2010-12-10 5% interest for EUR -5425.38 over 340 days
 >     Liabilities:Bank      EUR -256.20
 >     Expenses:Interest      EUR 256.20
 >
 > 2010-12-10 Payment
 >     Assets:Bank         EUR -3700.00
 >     Liabilities:Bank     EUR 3700.00
 .
 Running the utility with @--help@ gives a brief overview over the
 available options:
 .
 > Usage: hledger-interest [OPTION...] ACCOUNT
 >   -h          --help                      print this message and exit
 >   -V          --version                   show version number and exit
 >   -v          --verbose                   echo input ledger to stdout (default)
 >   -q          --quiet                     don't echo input ledger to stdout
 >               --today                     compute interest up until today
 >               --post-on-transactions      post interest only when the balance changes
 >                                           (and with --today), not at the end of
 >                                           every year or rate period
 >   -f FILE     --file=FILE                 input ledger file (pass '-' for stdin)
 >                                           default: $LEDGER_FILE or ~/.hledger.journal
 >   -s ACCOUNT  --source=ACCOUNT            interest source account
 >   -t ACCOUNT  --target=ACCOUNT            interest target account
 >   -I          --ignore-assertions         ignore any failing balance assertions
 >               --act                       use 'act/act' day counting convention
 >                                           (Actual/Actual ISDA; see README)
 >               --30-360                    use '30/360' day counting convention
 >               --30E-360                   use '30E/360' day counting convention
 >               --30E-360isda               use '30E/360isda' day counting convention
 >               --constant=RATE             constant interest rate
 >               --annual=RATE               annual interest rate
 >               --annual-schedule=SCHEDULE  schedule of annual interest rates.
 >                                           syntax: '[(Date1,Rate1),(Date2,Rate2),...]'
 >               --bgb288                    compute interest according to German BGB288
 >               --db24                      HACK: Deutsche Bank 24
 >               --ing-diba                  HACK: compute interest according for Ing-Diba Tagesgeld account

Source-Repository head
  Type:                 git
  Location:             https://github.com/peti/hledger-interest.git

Executable hledger-interest
  default-language:     Haskell2010
  Main-is:              Main.hs
  Build-depends:        base >= 3 && < 5, hledger-lib >= 1.26 && < 1.53, time, mtl, Decimal, text
  other-modules:        Hledger.Interest
                        Hledger.Interest.DayCountConvention
                        Hledger.Interest.Rate
                        Paths_hledger_interest