Trying to understand SM-2 interval calculation

Hi everybody

I recently (~1 month ago) turned off FSRS and switched back to the default SM-2 algo (as a test more than anything), however I do not really understand how the intervals are calculated now. For instance this card currently has an interval of 6 days and on top of the answer buttons it shows 9d/12d/14d for hard/good/easy respectively. My hard interval factor is 1.2, my interval multiplier 0.7 and the card has an ease of only 130%. How does it calculate the 9d/12d for hard/easy? Looking at the review history, I also do not understand why it previously increased from a 1d to a 4d interval from me pressing “good”. Is there a way to debug this or can somebody explain it to me please?

Thank you in advance!




It’s been a minute since I’ve tried to crunch those numbers myself – but in addition to the basic formulas [see: What spaced repetition algorithm does Anki use? - Anki FAQs and Deck Options - Anki Manual], are you taking into account Fuzz Factor and the newer load balancing/Smart Fuzz?

Hi thanks for your reply! I thought I knew the basic formulas and I also know there is added fuzz, but I didn’t think it would make a big difference for cards with such small intervals. Is there any way to see what exactly it calculates? Like a log or debug output (I found a log file/folder but they appear empty)? I am very surprised that with an ease factor of only 130% (and an interval multiplier < 1) it would double the previous 6 day interval to 12 days.

2 Likes

So for fun I switched to version ⁨24.06.3, which was presumably the last version without fuzz for lapses in SM-2 (which according to the changelogs was added 24.11). I still get what I feel like are very large interval increases. E.g. this card goes from 3 days to 8 days with an ease factor of only 130%:

This is not correct, fuzz has existed for a very long time. IIRC, there is an add-on to disable it which if you wish you can use.

Oh ok, I saw this commit and thought that’s when it changed: Apply fuzz to SM2 lapse interval and respect max ivl by user1823 · Pull Request #3275 · ankitects/anki · GitHub

Sadly I cannot find that addon you mentioned. Anyway, if the intervals as they are is what is expected I guess I’ll just live with it. I was simply surprised by how different my intervals were from what I expected, especially for very short intervals. Going from a 3 day interval to 8 days when the ease factor is only 130% still looks weird to me.

1 Like

Oh, yeah, maybe post-lapse interval wasn’t fuzzed before.

One thing that I forgot to mention, SM-2 does not use the previous interval to calculate next interval. It instead uses days elapsed. So, if you review the card earlier or later than due date you’ll get different next review intervals.

1 Like

Isn’t it FSRS that doesn’t use the previous interval?

SM-2 depends on the previous interval, but it adjusts the formula for early reviews or late reviews.

Either way it would not apply to me because nothing will keep me from doing my Anki reviews on time.

1 Like

From the link you posted:

. . . Anki considers the actual time the card was unseen, not just the time it was scheduled for. Thus if the card was scheduled for 5 days but you didn’t study for a month, the next interval will be closer to 60 days than 10 days.

The page then goes on to describe how the formulas use the interval in two ways – explicitly as the basis for the calculation, and implicitly to determine how many days “late” the review is.