This is an interesting project. I’m doing some rough comparisons with intervals given by Anki SM-2 and the FSRS algorithm, and it seems like FSRS gives more reviews?

Assuming we’re using default Anki values, where starting ease is 250% and interval modifier is 100%, and assuming that we’re always pressing the Good button, then that means that the interval is calculated by `new interval = old interval * 100% * 250% = old interval * 2.5`

. So essentially the formula is `2.5^x`

, if you press Good every time.

Then that means that with Anki’s SM-2 algorithm, you will see the intervals in days (assuming there is no Fuzz):

```
0, 1, 3, 8, 20, 50, 125, 313, 783, 1958, 4894, ...
```

And according to the FSRS algorithm on your GitHub `https://github.com/open-spaced-repetition/fsrs4anki/blob/main/fsrs4anki_optimizer.ipynb`

, you have the intervals:

```
# You can see the memory states and intervals generated by FSRS as if you press the good in each review at the due date scheduled by FSRS.
0, 3, 6, 11, 20, 36, 63, 106, 175, 282, 445, 689, 1048, 1568, 2310, 3355, ...
```

And if I understand your code properly, these are the intervals given if you press good every time, and you set `requestRetention = 0.9`

. If you set `requestRetention`

to `0.85`

for example, then you would essentially multiply each of these stability values (intervals) by `ln(0.85) / ln(0.90)`

:

```
(tensor(2.5952), tensor(4.5839), tensor(0.))
(tensor(5.5947), tensor(4.5692), tensor(0.))
(tensor(11.0884), tensor(4.5624), tensor(0.))
(tensor(20.3944), tensor(4.5631), tensor(0.))
(tensor(36.1469), tensor(4.5649), tensor(0.))
(tensor(62.6541), tensor(4.5653), tensor(0.))
(tensor(106.1411), tensor(4.5648), tensor(0.))
(tensor(174.9307), tensor(4.5649), tensor(0.))
(tensor(282.0350), tensor(4.5649), tensor(0.))
(tensor(445.2276), tensor(4.5649), tensor(0.))
(tensor(689.3261), tensor(4.5650), tensor(0.))
(tensor(1048.3844), tensor(4.5650), tensor(0.))
(tensor(1568.3268), tensor(4.5650), tensor(0.))
(tensor(2310.3726), tensor(4.5651), tensor(0.))
(tensor(3355.0225), tensor(4.5651), tensor(0.))
```

So you would see

```
# FSRS algorithm, with 85% requested retention
0, 4, 9, 17, 31, 56, 96, 163, 269, 434, ...
```

Similarly, for 80% requested retention:

```
# FSRS algorithm, with 80% requested retention
0, 5, 12, 23, 43, 76, 132, 223, 367, 592, ...
```

According to the True Retention addon `https://ankiweb.net/shared/info/613684242`

, my monthly true retention is 86.9% (includes young+mature), and supermature rate is 85.2% (cards that have >= 100 day interval). And according to True Retention by Card Maturity Simplified `https://ankiweb.net/shared/info/1779060522`

, my monthly mature retention is 81.6%, monthly young retention is 89.2%

Summary:

```
# fsrs (90% retention rate target)
0, 3, 6, 11, 20, 36, 63, 106, 175, 282, 445, 689, 1048, 1568, 2310, 3355, ...
# fsrs (85% retention rate target)
0, 4, 9, 17, 31, 56, 96, 163, 269, 434, ...
# fsrs (80% retention rate target)
0, 5, 12, 23, 43, 76, 132, 223, 367, 592, ...
# Anki SM-2 algorithm
0, 1, 3, 8, 20, 50, 125, 313, 783, 1958, ...
```

It seems that you would get more reviews using FSRS than Anki, even if you set `requestInterval`

to `80%`

, assuming you always press Good on a card. I have 80-85% retention using Anki’s simple SM-2 algorithm. There doesn’t seem to be much benefit in using FSRS if it increases the amount of reviews. Is my math/understanding wrong?