Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decay unspent points after time #121

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

paberr
Copy link

@paberr paberr commented Nov 7, 2020

This PR adds a new APA method that allows to automatically decay unspent points after the decay period for these points has passed.
Points are spent in a first in first out manner, i.e., the oldest points – which would decay first – are spent first.

Such a decay is frequently used in bonus points programs (such as airlines mileage programs).

Technically, this decay works as follows:
For each point in time where positive points have been earned (through raids or adjustments), we know the point in time these points will decay (if not spent).
To calculate the amount of unspent points, we need to calculate the balance at the end of the decay period and the number of positive points earned during the decay period (excluding the points we want to decay right now).
If the balance is larger than the amount of newly earned points, the difference is what we need to decay.

From my side, there are two open points:

  • While writing this explanation, I realised that I should add a safeguard that only decays min(balance - newly earned, points to decay) to safeguard points earned before the start date.
  • I'm open to changes to the naming. "Time decay" is not my favourite (all decays work over time) and I'm leaning towards "unspent decay" here. -> I changed it to "unspent decay", but if there are better names proposed, I can change it at any time.

Feedback welcome!

@paberr paberr marked this pull request as ready for review November 7, 2020 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant