Skip to content

Instantly share code, notes, and snippets.

@jonsecchis
Created December 24, 2021 19:18
Show Gist options
  • Select an option

  • Save jonsecchis/9d95bbc1780f38b42b0110d2488e77f3 to your computer and use it in GitHub Desktop.

Select an option

Save jonsecchis/9d95bbc1780f38b42b0110d2488e77f3 to your computer and use it in GitHub Desktop.

Revisions

  1. jonsecchis created this gist Dec 24, 2021.
    48 changes: 48 additions & 0 deletions spec.log
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    Ledger
    Entries is sequence of Position and Operation

    Position
    Shares is Number
    Average Share Cost is Number
    Gains is (Gross Gain, Net Gain) is (Number, Number)
    Tax is Number
    Total is Shares times Average Share Cost

    Operation
    is Buy or Sell
    Shares is Number
    Share Cost is Number
    Total is Shares times Share Cost

    Operations is sequence of Operation

    Ledger for Operations and Position
    Entries is sequence of, Position is (last Position or Position) after Operation
    Operation is Operation

    Shares of Position after Operation
    is, if Operation is Buy
    then (Position Shares plus Operation Shares)
    if Operation is Sell
    then (Position Shares minus Operation Shares)

    Average Share Cost of Position after Operation
    is, if Operation is Buy
    then (Position Total plus Operation Total) divided by (Position Shares plus Operation Shares)
    if Operation is Sell
    then (Position Average Share Cost)

    Gains of Position after Operation
    Gross Gain is, if Operation is Buy
    then Zero
    if Operation is Sell
    then (Operation Share Cost minus Position Average Share Cost) times Operation Shares
    Net Gain is Position Net Gain plus Gross Gain

    Tax of Position after Operation and Gains
    is, if Operation is Sell
    and Operation Total is greater than some TAXATION THRESHOLD
    and Gross Gains is greater than Zero
    and Net Gains is greater than Zero
    then (Net Gains times some TAXATION FACTOR)
    else Zero