reserveai 1.0.0rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reserveai-1.0.0rc2/.gitignore +47 -0
- reserveai-1.0.0rc2/LICENSE.txt +13 -0
- reserveai-1.0.0rc2/PKG-INFO +246 -0
- reserveai-1.0.0rc2/README.md +126 -0
- reserveai-1.0.0rc2/pyproject.toml +415 -0
- reserveai-1.0.0rc2/reserveai/__init__.py +51 -0
- reserveai-1.0.0rc2/reserveai/api/__init__.py +87 -0
- reserveai-1.0.0rc2/reserveai/api/auth.py +274 -0
- reserveai-1.0.0rc2/reserveai/api/config.py +510 -0
- reserveai-1.0.0rc2/reserveai/api/model/__init__.py +81 -0
- reserveai-1.0.0rc2/reserveai/api/model/base.py +28 -0
- reserveai-1.0.0rc2/reserveai/api/model/load.py +66 -0
- reserveai-1.0.0rc2/reserveai/api/model/run.py +529 -0
- reserveai-1.0.0rc2/reserveai/api/model/scope.py +541 -0
- reserveai-1.0.0rc2/reserveai/api/model/status.py +92 -0
- reserveai-1.0.0rc2/reserveai/client/__init__.py +5 -0
- reserveai-1.0.0rc2/reserveai/client/api.py +2317 -0
- reserveai-1.0.0rc2/reserveai/client/protocols/__init__.py +4 -0
- reserveai-1.0.0rc2/reserveai/client/protocols/scope_api.py +17 -0
- reserveai-1.0.0rc2/reserveai/client/protocols/valuation_api.py +144 -0
- reserveai-1.0.0rc2/reserveai/client/scope.py +1049 -0
- reserveai-1.0.0rc2/reserveai/client/valuation.py +1117 -0
- reserveai-1.0.0rc2/reserveai/data/__init__.py +10 -0
- reserveai-1.0.0rc2/reserveai/data/reserving.py +5912 -0
- reserveai-1.0.0rc2/reserveai/data/triangle.py +4697 -0
- reserveai-1.0.0rc2/reserveai/examples/__init__.py +21 -0
- reserveai-1.0.0rc2/reserveai/examples/cas.csv +211 -0
- reserveai-1.0.0rc2/reserveai/examples/sample_datasets.py +381 -0
- reserveai-1.0.0rc2/reserveai/examples/sme.csv +211 -0
- reserveai-1.0.0rc2/reserveai/examples/swiss.csv +191 -0
- reserveai-1.0.0rc2/reserveai/utils/__init__.py +72 -0
- reserveai-1.0.0rc2/reserveai/utils/generators/__init__.py +4 -0
- reserveai-1.0.0rc2/reserveai/utils/generators/grid_search.py +191 -0
- reserveai-1.0.0rc2/reserveai/utils/generators/meta_modeling.py +191 -0
- reserveai-1.0.0rc2/reserveai/utils/generators/stochastic.py +20 -0
- reserveai-1.0.0rc2/reserveai/utils/generators/valuation.py +180 -0
- reserveai-1.0.0rc2/reserveai/utils/helpers/__init__.py +4 -0
- reserveai-1.0.0rc2/reserveai/utils/helpers/async_map.py +42 -0
- reserveai-1.0.0rc2/reserveai/utils/helpers/throttle.py +28 -0
- reserveai-1.0.0rc2/reserveai/utils/typing/__init__.py +69 -0
- reserveai-1.0.0rc2/reserveai/utils/typing/enum.py +555 -0
- reserveai-1.0.0rc2/reserveai/utils/typing/exceptions.py +52 -0
- reserveai-1.0.0rc2/reserveai/utils/typing/warnings.py +46 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Python generated local folders
|
|
2
|
+
.venv/
|
|
3
|
+
__pycache__/
|
|
4
|
+
.aws-sam/
|
|
5
|
+
dist/
|
|
6
|
+
.uv-cache/
|
|
7
|
+
.env
|
|
8
|
+
.coverage
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
|
|
11
|
+
# IDE
|
|
12
|
+
.vscode/
|
|
13
|
+
.vscode-server/
|
|
14
|
+
.vscode-server-insiders/
|
|
15
|
+
.history/
|
|
16
|
+
.idea/
|
|
17
|
+
.hypothesis
|
|
18
|
+
|
|
19
|
+
htmlcov/
|
|
20
|
+
|
|
21
|
+
# Terraform files
|
|
22
|
+
**/.terraform/*
|
|
23
|
+
*.tfstate
|
|
24
|
+
*.tfstate.*
|
|
25
|
+
crash.log
|
|
26
|
+
crash.*.log
|
|
27
|
+
*.tfvars
|
|
28
|
+
*.tfvars.json
|
|
29
|
+
override.tf
|
|
30
|
+
override.tf.json
|
|
31
|
+
*_override.tf
|
|
32
|
+
*_override.tf.json
|
|
33
|
+
.terraformrc
|
|
34
|
+
terraform.rc
|
|
35
|
+
.terraform.lock.hcl
|
|
36
|
+
|
|
37
|
+
# Exclude all .tfplan files
|
|
38
|
+
*.tfplan
|
|
39
|
+
*.tfplan.*
|
|
40
|
+
|
|
41
|
+
# Sphinx directories
|
|
42
|
+
jupyter_execute/
|
|
43
|
+
_build/
|
|
44
|
+
doctrees/
|
|
45
|
+
|
|
46
|
+
# Exports
|
|
47
|
+
*.xlsx
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2025 insureAI.
|
|
2
|
+
|
|
3
|
+
The ReserveAI SDK (by insureAI) is licensed under the Apache License, Version 2.0 (the "License"); you may not use the
|
|
4
|
+
source code except in compliance with the License. The License applies only to the SDK code; it does not grant any
|
|
5
|
+
rights to insureAI's proprietary APIs, algorithms, or platforms.
|
|
6
|
+
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
|
|
12
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
13
|
+
specific language governing permissions and limitations under the License.
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: reserveai
|
|
3
|
+
Version: 1.0.0rc2
|
|
4
|
+
Summary: Python SDK for insureAI's ReserveAI API
|
|
5
|
+
Project-URL: issues, https://gitlab.com/insureai/engineering/sdk-res-py/-/issues
|
|
6
|
+
Project-URL: repository, https://gitlab.com/insureai/engineering/sdk-res-py
|
|
7
|
+
License-Expression: Apache-2.0
|
|
8
|
+
License-File: LICENSE.txt
|
|
9
|
+
Keywords: claims,insurance,insureAI,reserveai,reserving
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Requires-Python: <3.15,>=3.10
|
|
18
|
+
Requires-Dist: httpx==0.28.*; python_version == '3.10'
|
|
19
|
+
Requires-Dist: httpx==0.28.*; python_version == '3.11'
|
|
20
|
+
Requires-Dist: httpx==0.28.*; python_version == '3.12'
|
|
21
|
+
Requires-Dist: httpx==0.28.*; python_version == '3.13'
|
|
22
|
+
Requires-Dist: httpx==0.28.*; python_version == '3.14'
|
|
23
|
+
Requires-Dist: nest-asyncio>=1.5.0; python_version == '3.10'
|
|
24
|
+
Requires-Dist: nest-asyncio>=1.5.0; python_version == '3.11'
|
|
25
|
+
Requires-Dist: nest-asyncio>=1.5.0; python_version == '3.12'
|
|
26
|
+
Requires-Dist: nest-asyncio>=1.5.0; python_version == '3.13'
|
|
27
|
+
Requires-Dist: nest-asyncio>=1.5.0; python_version == '3.14'
|
|
28
|
+
Requires-Dist: pyarrow<25,>=18; python_version == '3.10'
|
|
29
|
+
Requires-Dist: pyarrow<25,>=18; python_version == '3.11'
|
|
30
|
+
Requires-Dist: pyarrow<25,>=18; python_version == '3.12'
|
|
31
|
+
Requires-Dist: pyarrow<25,>=18; python_version == '3.13'
|
|
32
|
+
Requires-Dist: pyarrow<25,>=22; python_version == '3.14'
|
|
33
|
+
Requires-Dist: pydantic>=2.12.0; python_version == '3.10'
|
|
34
|
+
Requires-Dist: pydantic>=2.12.0; python_version == '3.11'
|
|
35
|
+
Requires-Dist: pydantic>=2.12.0; python_version == '3.12'
|
|
36
|
+
Requires-Dist: pydantic>=2.12.0; python_version == '3.13'
|
|
37
|
+
Requires-Dist: pydantic>=2.12.0; python_version == '3.14'
|
|
38
|
+
Requires-Dist: python-dateutil>=2.8.2; python_version == '3.10'
|
|
39
|
+
Requires-Dist: python-dateutil>=2.8.2; python_version == '3.11'
|
|
40
|
+
Requires-Dist: python-dateutil>=2.8.2; python_version == '3.12'
|
|
41
|
+
Requires-Dist: python-dateutil>=2.8.2; python_version == '3.13'
|
|
42
|
+
Requires-Dist: python-dateutil>=2.8.2; python_version == '3.14'
|
|
43
|
+
Requires-Dist: requests>=2.32; python_version == '3.10'
|
|
44
|
+
Requires-Dist: requests>=2.32; python_version == '3.11'
|
|
45
|
+
Requires-Dist: requests>=2.32; python_version == '3.12'
|
|
46
|
+
Requires-Dist: requests>=2.32; python_version == '3.13'
|
|
47
|
+
Requires-Dist: requests>=2.32; python_version == '3.14'
|
|
48
|
+
Requires-Dist: tabulate<0.10,>=0.8.10; python_version == '3.10'
|
|
49
|
+
Requires-Dist: tabulate<0.10,>=0.8.10; python_version == '3.11'
|
|
50
|
+
Requires-Dist: tabulate<0.10,>=0.8.10; python_version == '3.12'
|
|
51
|
+
Requires-Dist: tabulate<0.10,>=0.8.10; python_version == '3.13'
|
|
52
|
+
Requires-Dist: tabulate<0.10,>=0.8.10; python_version == '3.14'
|
|
53
|
+
Provides-Extra: all
|
|
54
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.10') and extra == 'all'
|
|
55
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.11') and extra == 'all'
|
|
56
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.12') and extra == 'all'
|
|
57
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.13') and extra == 'all'
|
|
58
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.14') and extra == 'all'
|
|
59
|
+
Requires-Dist: openpyxl==3.1.*; extra == 'all'
|
|
60
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.10') and extra == 'all'
|
|
61
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.11') and extra == 'all'
|
|
62
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.12') and extra == 'all'
|
|
63
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.13') and extra == 'all'
|
|
64
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.14') and extra == 'all'
|
|
65
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.10') and extra == 'all'
|
|
66
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.11') and extra == 'all'
|
|
67
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.12') and extra == 'all'
|
|
68
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.13') and extra == 'all'
|
|
69
|
+
Requires-Dist: pandas<3,>=2.3.3; (python_version == '3.14') and extra == 'all'
|
|
70
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.10') and extra == 'all'
|
|
71
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.11') and extra == 'all'
|
|
72
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.12') and extra == 'all'
|
|
73
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.13') and extra == 'all'
|
|
74
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.14') and extra == 'all'
|
|
75
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.10') and extra == 'all'
|
|
76
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.11') and extra == 'all'
|
|
77
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.12') and extra == 'all'
|
|
78
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.13') and extra == 'all'
|
|
79
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.14') and extra == 'all'
|
|
80
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.10') and extra == 'all'
|
|
81
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.11') and extra == 'all'
|
|
82
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.12') and extra == 'all'
|
|
83
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.13') and extra == 'all'
|
|
84
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.14') and extra == 'all'
|
|
85
|
+
Provides-Extra: pandas
|
|
86
|
+
Requires-Dist: openpyxl==3.1.*; extra == 'pandas'
|
|
87
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.10') and extra == 'pandas'
|
|
88
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.11') and extra == 'pandas'
|
|
89
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.12') and extra == 'pandas'
|
|
90
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.13') and extra == 'pandas'
|
|
91
|
+
Requires-Dist: pandas-stubs<3,>=2.2; (python_version == '3.14') and extra == 'pandas'
|
|
92
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.10') and extra == 'pandas'
|
|
93
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.11') and extra == 'pandas'
|
|
94
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.12') and extra == 'pandas'
|
|
95
|
+
Requires-Dist: pandas<3,>=2.2.3; (python_version == '3.13') and extra == 'pandas'
|
|
96
|
+
Requires-Dist: pandas<3,>=2.3.3; (python_version == '3.14') and extra == 'pandas'
|
|
97
|
+
Provides-Extra: plotly
|
|
98
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.10') and extra == 'plotly'
|
|
99
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.11') and extra == 'plotly'
|
|
100
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.12') and extra == 'plotly'
|
|
101
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.13') and extra == 'plotly'
|
|
102
|
+
Requires-Dist: plotly<7,>=6.1.1; (python_version == '3.14') and extra == 'plotly'
|
|
103
|
+
Provides-Extra: polars
|
|
104
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.10') and extra == 'polars'
|
|
105
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.11') and extra == 'polars'
|
|
106
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.12') and extra == 'polars'
|
|
107
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.13') and extra == 'polars'
|
|
108
|
+
Requires-Dist: fastexcel<1,>=0.10; (python_version == '3.14') and extra == 'polars'
|
|
109
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.10') and extra == 'polars'
|
|
110
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.11') and extra == 'polars'
|
|
111
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.12') and extra == 'polars'
|
|
112
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.13') and extra == 'polars'
|
|
113
|
+
Requires-Dist: polars<2,>=1.25; (python_version == '3.14') and extra == 'polars'
|
|
114
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.10') and extra == 'polars'
|
|
115
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.11') and extra == 'polars'
|
|
116
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.12') and extra == 'polars'
|
|
117
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.13') and extra == 'polars'
|
|
118
|
+
Requires-Dist: xlsxwriter<4,>=3.0.5; (python_version == '3.14') and extra == 'polars'
|
|
119
|
+
Description-Content-Type: text/markdown
|
|
120
|
+
|
|
121
|
+
<div align="center">
|
|
122
|
+
<h1>ReserveAI SDK</h1>
|
|
123
|
+
<p>
|
|
124
|
+
By <a href="https://www.insureai.co/">insureAI</a>
|
|
125
|
+
</p>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
130
|
+
# 📔 Table of Contents
|
|
131
|
+
|
|
132
|
+
- [📔 Table of Contents](#-table-of-contents)
|
|
133
|
+
- [🌟 About the Project](#-about-the-project)
|
|
134
|
+
- [🎯 Features](#-features)
|
|
135
|
+
- [🧰 Install](#-install)
|
|
136
|
+
- [👀 Getting Started](#-getting-started)
|
|
137
|
+
- [⚠️ License](#️-license)
|
|
138
|
+
- [🤝 Contact](#-contact)
|
|
139
|
+
- [💎 Acknowledgements and Citations](#-acknowledgements-and-citations)
|
|
140
|
+
|
|
141
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
142
|
+
## 🌟 About the Project
|
|
143
|
+
|
|
144
|
+
The ReserveAI SDK (by [insureAI](https://www.insureai.co/)) provides exclusive access to a powerful new approach for
|
|
145
|
+
actuarial reserving. Designed to seamlessly integrate with [ReserveAI](https://reserveai.co/) and move beyond the
|
|
146
|
+
limitations of traditional, static analysis, this toolkit introduces a systematic framework to address the core
|
|
147
|
+
challenges of modern reserving: eliminating subjectivity, managing volatility, and providing a robust, defensible
|
|
148
|
+
basis for your ultimate liability estimates.
|
|
149
|
+
|
|
150
|
+
At its core, the SDK allows you to effortlessly back-test thousands of model variations against your own data. Our
|
|
151
|
+
proprietary evaluation engine assesses each model on multiple dimensions of performance. This provides a holistic and
|
|
152
|
+
uniquely insightful view of model quality that conventional methods fail to capture. This SDK is designed for actuaries
|
|
153
|
+
and risk managers who need to conduct reserve reviews with greater confidence and efficiency.
|
|
154
|
+
|
|
155
|
+
To get started, we recommend visiting our documentation:
|
|
156
|
+
- The [Tutorials](https://sdk.docs.reserveai.co/) provide step-by-step examples on using the SDK.
|
|
157
|
+
- The [FAQ](./docs/sphinx/faq/index.md) has quick answers to common questions.
|
|
158
|
+
- The Methodologies which may be accessed after contacting [support@insureai.co](mailto:support@insureai.co).
|
|
159
|
+
|
|
160
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
161
|
+
## 🎯 Features
|
|
162
|
+
|
|
163
|
+
- **Run industry-standard actuarial methods**: Run reserving methods such as Cape Cod, Chain Ladder, and
|
|
164
|
+
Bornhuetter–Ferguson (with more methods in active development).
|
|
165
|
+
|
|
166
|
+
- **Triangle data utilities**: Convenient representation of triangle datasets:
|
|
167
|
+
- Switch between long or wide (triangle) views.
|
|
168
|
+
- Plot standard reserving visuals.
|
|
169
|
+
- Run quick diagnostics.
|
|
170
|
+
|
|
171
|
+
- **Data science friendly**: Full interoperability with Pandas and Polars: input data and results can be seamlessly
|
|
172
|
+
converted to and from dataframes. Thus, for more complex workflows, the full Python data science ecosystem can be
|
|
173
|
+
brought to bear by extracting the underlying dataframes.
|
|
174
|
+
|
|
175
|
+
- **Automated model exploration**: Each reserving run evaluates hundreds or thousands of model variations. The
|
|
176
|
+
models are returned for review, comparison, and deeper analysis.
|
|
177
|
+
|
|
178
|
+
- **Rich model diagnostics**: Inspect detailed outputs for chosen models, including triangle projections, cubes, and
|
|
179
|
+
performance metrics, to support robust reserve reviews.
|
|
180
|
+
|
|
181
|
+
- **Server-side computation**: All reserving runs execute on ReserveAI’s secure servers; the SDK provides a
|
|
182
|
+
lightweight yet seamless interface for managing runs and fetching results through the ReserveAI REST API.
|
|
183
|
+
|
|
184
|
+
- **Multiple-line multiple-target support**: Run multiple reserving methods on multiple lines of business and
|
|
185
|
+
multiple target variables simultaneously.
|
|
186
|
+
|
|
187
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
188
|
+
## 🧰 Install
|
|
189
|
+
|
|
190
|
+
The SDK is available via PyPI, and hence can be installed using your preferred package manager:
|
|
191
|
+
|
|
192
|
+
- Using `pip`:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
pip install reserveai[all]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
- Using `poetry`:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
poetry add reserveai[all]
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
- Using `uv`:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
uv add reserveai[all]
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
There are several optional dependencies that can be installed using the `[optional]` extras syntax:
|
|
211
|
+
|
|
212
|
+
- `pandas`: Installs the `pandas` dependency (e.g., `uv add reserveai[pandas]`).
|
|
213
|
+
- `polars`: Installs the `polars` dependency.
|
|
214
|
+
- `plotly`: Installs the `plotly` dependency.
|
|
215
|
+
|
|
216
|
+
These can be combined, e.g., `reserveai[polars,plotly]`. Use `reserveai[all]` to install all optional dependencies.
|
|
217
|
+
|
|
218
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
219
|
+
## 👀 Getting Started
|
|
220
|
+
|
|
221
|
+
To use the SDK against the ReserveAI API, you'll need ReserveAI client credentials. To obtain these, please contact
|
|
222
|
+
us at [support@insureai.co](mailto:support@insureai.co). Don't have credentials yet? Not a problem — the notebooks in
|
|
223
|
+
the [tutorials and recipes](https://sdk.docs.reserveai.co/) section that show how to get started with
|
|
224
|
+
the SDK are already pre-rendered!
|
|
225
|
+
|
|
226
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
227
|
+
## ⚠️ License
|
|
228
|
+
|
|
229
|
+
The ReserveAI SDK is distributed under the Apache License 2.0; see `LICENSE.txt` for more information. (That license
|
|
230
|
+
applies only to the SDK code; it does not grant any rights to insureAI's proprietary APIs, algorithms, or platforms.)
|
|
231
|
+
|
|
232
|
+
The use of the API (via the SDK, or directly) is subject to the [API Terms of Use](TODO).
|
|
233
|
+
|
|
234
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
235
|
+
## 🤝 Contact
|
|
236
|
+
|
|
237
|
+
We are not actively accepting contributions at this time. However, if you encounter a bug, have a question, or wish to
|
|
238
|
+
report a security vulnerability, please reach out to us at [support@insureai.co](mailto:support@insureai.co).
|
|
239
|
+
|
|
240
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
241
|
+
## 💎 Acknowledgements and Citations
|
|
242
|
+
|
|
243
|
+
We thank the Casualty Actuarial Society (CAS), Swiss Re, and SME data providers for making datasets available that aided the development of this SDK. Full data attributions are available in [The Actuary and IBNR Techniques: A Machine Learning Approach](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2704364) by Balona and Richman.
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>ReserveAI SDK</h1>
|
|
3
|
+
<p>
|
|
4
|
+
By <a href="https://www.insureai.co/">insureAI</a>
|
|
5
|
+
</p>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
10
|
+
# 📔 Table of Contents
|
|
11
|
+
|
|
12
|
+
- [📔 Table of Contents](#-table-of-contents)
|
|
13
|
+
- [🌟 About the Project](#-about-the-project)
|
|
14
|
+
- [🎯 Features](#-features)
|
|
15
|
+
- [🧰 Install](#-install)
|
|
16
|
+
- [👀 Getting Started](#-getting-started)
|
|
17
|
+
- [⚠️ License](#️-license)
|
|
18
|
+
- [🤝 Contact](#-contact)
|
|
19
|
+
- [💎 Acknowledgements and Citations](#-acknowledgements-and-citations)
|
|
20
|
+
|
|
21
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
22
|
+
## 🌟 About the Project
|
|
23
|
+
|
|
24
|
+
The ReserveAI SDK (by [insureAI](https://www.insureai.co/)) provides exclusive access to a powerful new approach for
|
|
25
|
+
actuarial reserving. Designed to seamlessly integrate with [ReserveAI](https://reserveai.co/) and move beyond the
|
|
26
|
+
limitations of traditional, static analysis, this toolkit introduces a systematic framework to address the core
|
|
27
|
+
challenges of modern reserving: eliminating subjectivity, managing volatility, and providing a robust, defensible
|
|
28
|
+
basis for your ultimate liability estimates.
|
|
29
|
+
|
|
30
|
+
At its core, the SDK allows you to effortlessly back-test thousands of model variations against your own data. Our
|
|
31
|
+
proprietary evaluation engine assesses each model on multiple dimensions of performance. This provides a holistic and
|
|
32
|
+
uniquely insightful view of model quality that conventional methods fail to capture. This SDK is designed for actuaries
|
|
33
|
+
and risk managers who need to conduct reserve reviews with greater confidence and efficiency.
|
|
34
|
+
|
|
35
|
+
To get started, we recommend visiting our documentation:
|
|
36
|
+
- The [Tutorials](https://sdk.docs.reserveai.co/) provide step-by-step examples on using the SDK.
|
|
37
|
+
- The [FAQ](./docs/sphinx/faq/index.md) has quick answers to common questions.
|
|
38
|
+
- The Methodologies which may be accessed after contacting [support@insureai.co](mailto:support@insureai.co).
|
|
39
|
+
|
|
40
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
41
|
+
## 🎯 Features
|
|
42
|
+
|
|
43
|
+
- **Run industry-standard actuarial methods**: Run reserving methods such as Cape Cod, Chain Ladder, and
|
|
44
|
+
Bornhuetter–Ferguson (with more methods in active development).
|
|
45
|
+
|
|
46
|
+
- **Triangle data utilities**: Convenient representation of triangle datasets:
|
|
47
|
+
- Switch between long or wide (triangle) views.
|
|
48
|
+
- Plot standard reserving visuals.
|
|
49
|
+
- Run quick diagnostics.
|
|
50
|
+
|
|
51
|
+
- **Data science friendly**: Full interoperability with Pandas and Polars: input data and results can be seamlessly
|
|
52
|
+
converted to and from dataframes. Thus, for more complex workflows, the full Python data science ecosystem can be
|
|
53
|
+
brought to bear by extracting the underlying dataframes.
|
|
54
|
+
|
|
55
|
+
- **Automated model exploration**: Each reserving run evaluates hundreds or thousands of model variations. The
|
|
56
|
+
models are returned for review, comparison, and deeper analysis.
|
|
57
|
+
|
|
58
|
+
- **Rich model diagnostics**: Inspect detailed outputs for chosen models, including triangle projections, cubes, and
|
|
59
|
+
performance metrics, to support robust reserve reviews.
|
|
60
|
+
|
|
61
|
+
- **Server-side computation**: All reserving runs execute on ReserveAI’s secure servers; the SDK provides a
|
|
62
|
+
lightweight yet seamless interface for managing runs and fetching results through the ReserveAI REST API.
|
|
63
|
+
|
|
64
|
+
- **Multiple-line multiple-target support**: Run multiple reserving methods on multiple lines of business and
|
|
65
|
+
multiple target variables simultaneously.
|
|
66
|
+
|
|
67
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
68
|
+
## 🧰 Install
|
|
69
|
+
|
|
70
|
+
The SDK is available via PyPI, and hence can be installed using your preferred package manager:
|
|
71
|
+
|
|
72
|
+
- Using `pip`:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pip install reserveai[all]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
- Using `poetry`:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
poetry add reserveai[all]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
- Using `uv`:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
uv add reserveai[all]
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
There are several optional dependencies that can be installed using the `[optional]` extras syntax:
|
|
91
|
+
|
|
92
|
+
- `pandas`: Installs the `pandas` dependency (e.g., `uv add reserveai[pandas]`).
|
|
93
|
+
- `polars`: Installs the `polars` dependency.
|
|
94
|
+
- `plotly`: Installs the `plotly` dependency.
|
|
95
|
+
|
|
96
|
+
These can be combined, e.g., `reserveai[polars,plotly]`. Use `reserveai[all]` to install all optional dependencies.
|
|
97
|
+
|
|
98
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
99
|
+
## 👀 Getting Started
|
|
100
|
+
|
|
101
|
+
To use the SDK against the ReserveAI API, you'll need ReserveAI client credentials. To obtain these, please contact
|
|
102
|
+
us at [support@insureai.co](mailto:support@insureai.co). Don't have credentials yet? Not a problem — the notebooks in
|
|
103
|
+
the [tutorials and recipes](https://sdk.docs.reserveai.co/) section that show how to get started with
|
|
104
|
+
the SDK are already pre-rendered!
|
|
105
|
+
|
|
106
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
107
|
+
## ⚠️ License
|
|
108
|
+
|
|
109
|
+
The ReserveAI SDK is distributed under the Apache License 2.0; see `LICENSE.txt` for more information. (That license
|
|
110
|
+
applies only to the SDK code; it does not grant any rights to insureAI's proprietary APIs, algorithms, or platforms.)
|
|
111
|
+
|
|
112
|
+
The use of the API (via the SDK, or directly) is subject to the [API Terms of Use](TODO).
|
|
113
|
+
|
|
114
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
115
|
+
## 🤝 Contact
|
|
116
|
+
|
|
117
|
+
We are not actively accepting contributions at this time. However, if you encounter a bug, have a question, or wish to
|
|
118
|
+
report a security vulnerability, please reach out to us at [support@insureai.co](mailto:support@insureai.co).
|
|
119
|
+
|
|
120
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|
|
121
|
+
## 💎 Acknowledgements and Citations
|
|
122
|
+
|
|
123
|
+
We thank the Casualty Actuarial Society (CAS), Swiss Re, and SME data providers for making datasets available that aided the development of this SDK. Full data attributions are available in [The Actuary and IBNR Techniques: A Machine Learning Approach](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2704364) by Balona and Richman.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
<!-- -------------------------------------------------------------------------------------------------------------- -->
|