{
  "checked_at": "2026-09-14T04:21:43.103Z",
  "scope": "Public open and closed upstream issue/PR index and two search queries; no claim of exhaustive novelty.",
  "upstream": [
    {
      "url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/2",
      "repository_url": "https://api.github.com/repos/terence-lim/actuarialmath",
      "labels_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/2/labels{/name}",
      "comments_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/2/comments",
      "events_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/2/events",
      "html_url": "https://github.com/terence-lim/actuarialmath/pull/2",
      "id": 5398061332,
      "node_id": "PR_kwDOIYEf2s8AAAABC0BVyw",
      "number": 2,
      "title": "Fix UDD density at fractional ages",
      "user": {
        "login": "kadyrbekovhamit-cyber",
        "id": 288885044,
        "node_id": "U_kgDOETgJNA",
        "avatar_url": "https://avatars.githubusercontent.com/u/288885044?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kadyrbekovhamit-cyber",
        "html_url": "https://github.com/kadyrbekovhamit-cyber",
        "followers_url": "https://api.github.com/users/kadyrbekovhamit-cyber/followers",
        "following_url": "https://api.github.com/users/kadyrbekovhamit-cyber/following{/other_user}",
        "gists_url": "https://api.github.com/users/kadyrbekovhamit-cyber/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/kadyrbekovhamit-cyber/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/kadyrbekovhamit-cyber/subscriptions",
        "organizations_url": "https://api.github.com/users/kadyrbekovhamit-cyber/orgs",
        "repos_url": "https://api.github.com/users/kadyrbekovhamit-cyber/repos",
        "events_url": "https://api.github.com/users/kadyrbekovhamit-cyber/events{/privacy}",
        "received_events_url": "https://api.github.com/users/kadyrbekovhamit-cyber/received_events",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": [],
      "state": "open",
      "locked": false,
      "assignees": [],
      "milestone": null,
      "comments": 0,
      "created_at": "2026-09-09T10:12:37Z",
      "updated_at": "2026-09-09T10:12:37Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "draft": false,
      "pull_request": {
        "url": "https://api.github.com/repos/terence-lim/actuarialmath/pulls/2",
        "html_url": "https://github.com/terence-lim/actuarialmath/pull/2",
        "diff_url": "https://github.com/terence-lim/actuarialmath/pull/2.diff",
        "patch_url": "https://github.com/terence-lim/actuarialmath/pull/2.patch",
        "merged_at": null
      },
      "body": "## Summary\n\n- condition the UDD lifetime density on survival to the fractional starting age\n- add regression tests against both `q_r` and `mu_r`\n\n## Problem\n\nFor a life already aged `x + r`, the UDD density within the current integer-age interval is\n\n```text\nf_{x+r}(t) = q_x / (1 - r q_x).\n```\n\n`f_r` currently returns only `q_x`, omitting the conditioning denominator. The neighboring `q_r` and `mu_r` methods already include this factor, so the public methods contradict the exact identities\n\n```text\nintegral_0^t f_{x+r}(u) du = q_r(x, r, t)\nf_{x+r}(0) = mu_r(x, r).\n```\n\nFor `q_x = 0.5`, `r = t = 0.5`, the current integral is 0.25 while `q_r` is 1/3.\n\n## Validation\n\n- 6 new parameterized tests pass\n- mutation check: restoring `return q_x` fails all 6 tests\n- existing `tests/test_changes.py` completes successfully\n- `git diff --check`\n\nThe change is inactive at `r = 0`, which is how the existing insurance calculation call sites invoke `f_r`; it corrects direct fractional-age API calls without altering those workflows.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/2/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "timeline_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/2/timeline",
      "performed_via_github_app": null,
      "state_reason": null
    },
    {
      "url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/1",
      "repository_url": "https://api.github.com/repos/terence-lim/actuarialmath",
      "labels_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/1/labels{/name}",
      "comments_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/1/comments",
      "events_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/1/events",
      "html_url": "https://github.com/terence-lim/actuarialmath/issues/1",
      "id": 2238087801,
      "node_id": "I_kwDOIYEf2s6FZoJ5",
      "number": 1,
      "title": "UDD M’thly Insurance typo",
      "user": {
        "login": "Infinite-Actuary",
        "id": 30910135,
        "node_id": "MDQ6VXNlcjMwOTEwMTM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/30910135?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Infinite-Actuary",
        "html_url": "https://github.com/Infinite-Actuary",
        "followers_url": "https://api.github.com/users/Infinite-Actuary/followers",
        "following_url": "https://api.github.com/users/Infinite-Actuary/following{/other_user}",
        "gists_url": "https://api.github.com/users/Infinite-Actuary/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/Infinite-Actuary/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/Infinite-Actuary/subscriptions",
        "organizations_url": "https://api.github.com/users/Infinite-Actuary/orgs",
        "repos_url": "https://api.github.com/users/Infinite-Actuary/repos",
        "events_url": "https://api.github.com/users/Infinite-Actuary/events{/privacy}",
        "received_events_url": "https://api.github.com/users/Infinite-Actuary/received_events",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": [],
      "state": "closed",
      "locked": false,
      "assignees": [],
      "milestone": null,
      "comments": 2,
      "created_at": "2024-04-11T16:08:21Z",
      "updated_at": "2024-05-10T01:13:34Z",
      "closed_at": "2024-05-05T15:57:46Z",
      "assignee": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi 👋 Nice to meet you. I'm https://www.linkedin.com/in/carlcorder/ on LinkedIn and connected with you a while back.\r\n\r\nI was reading through the docs and noticed a typo here:\r\n\r\nhttps://github.com/terence-lim/actuarialmath-guide/blob/8078954dcd049ef9cf654d09c024886391094b35/docs/udd.ipynb#L25\r\n\r\n![actuarialmath-guide_issue](https://github.com/terence-lim/actuarialmath/assets/30910135/92ad722d-65cb-483e-b08c-48daa06de56b)\r\n\r\nI believe it should be the following:\r\n\r\n$1+j=(1+i)^{2} \\implies \\big(1+\\frac{j^{(m)}}{m}\\big)^{m}=\\big(1+\\frac{i^{(m)}}{m}\\big)^{2m} \\implies j^{(m)}=\\frac{1}{m}(i^{(m)})^{2}+2 \\cdot i^{(m)}$\r\n\r\nNote that:\r\n\r\n$i=i^{(1)} \\quad$ and $\\quad j=j^{(1)}=\\frac{1}{1}(i^{(1)})^{2}+2 \\cdot i^{(1)}=i^2+2i$\r\n\r\n$\\therefore \\quad j^{(m)} \\cdot {}^{2}A^{(m)}_x  = j^{(1)} \\cdot {}^{2}A^{(1)}_x = j \\cdot {}^{2}A_x \\implies \\boxed{{}^{2}A^{(m)}_x=\\dfrac{i^2+2i}{\\frac{1}{m}(i^{(m)})^{2}+2 \\cdot i^{(m)}} \\cdot {}^{2}A^{}_x}$",
      "closed_by": {
        "login": "terence-lim",
        "id": 41972012,
        "node_id": "MDQ6VXNlcjQxOTcyMDEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/41972012?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/terence-lim",
        "html_url": "https://github.com/terence-lim",
        "followers_url": "https://api.github.com/users/terence-lim/followers",
        "following_url": "https://api.github.com/users/terence-lim/following{/other_user}",
        "gists_url": "https://api.github.com/users/terence-lim/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/terence-lim/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/terence-lim/subscriptions",
        "organizations_url": "https://api.github.com/users/terence-lim/orgs",
        "repos_url": "https://api.github.com/users/terence-lim/repos",
        "events_url": "https://api.github.com/users/terence-lim/events{/privacy}",
        "received_events_url": "https://api.github.com/users/terence-lim/received_events",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/1/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "timeline_url": "https://api.github.com/repos/terence-lim/actuarialmath/issues/1/timeline",
      "performed_via_github_app": null,
      "state_reason": "completed",
      "pinned_comment": null
    }
  ],
  "globalQuery": {
    "query": "\"actuarialmath\" \"whole_life_insurance\" variance",
    "response": {
      "incomplete_results": false,
      "items": [],
      "total_count": 0
    }
  },
  "guideQuery": {
    "query": "repo:terence-lim/actuarialmath-guide variance",
    "response": {
      "incomplete_results": false,
      "items": [],
      "total_count": 0
    }
  },
  "conclusion": "No direct duplicate in this bounded search. Upstream PR #2 covers a separate UDD fractional-age density defect."
}
