ins-pricing 0.4.5__tar.gz → 0.5.0__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.
Files changed (152) hide show
  1. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/PKG-INFO +182 -182
  2. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/README.md +48 -22
  3. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/__init__.py +142 -90
  4. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/BayesOpt_entry.py +52 -50
  5. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/BayesOpt_incremental.py +39 -105
  6. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/Explain_Run.py +31 -23
  7. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/Explain_entry.py +532 -579
  8. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/Pricing_Run.py +31 -23
  9. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/bayesopt_entry_runner.py +11 -9
  10. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/cli_common.py +256 -256
  11. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/cli_config.py +375 -375
  12. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/import_resolver.py +382 -365
  13. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/notebook_utils.py +340 -340
  14. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/watchdog_run.py +209 -201
  15. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/__init__.py +10 -10
  16. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/example_workflows.py +1 -1
  17. ins_pricing-0.5.0/ins_pricing/governance/__init__.py +20 -0
  18. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/governance/release.py +159 -159
  19. ins_pricing-0.5.0/ins_pricing/modelling/__init__.py +150 -0
  20. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/README.md +2 -2
  21. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/__init__.py +64 -102
  22. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/config_preprocess.py +562 -562
  23. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/core.py +965 -964
  24. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/model_explain_mixin.py +296 -296
  25. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/model_plotting_mixin.py +482 -548
  26. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/models/__init__.py +27 -27
  27. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/models/model_ft_trainer.py +915 -913
  28. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/models/model_gnn.py +788 -785
  29. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/models/model_resn.py +448 -446
  30. ins_pricing-0.5.0/ins_pricing/modelling/bayesopt/trainers/__init__.py +19 -0
  31. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/trainers/trainer_base.py +1308 -1308
  32. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/trainers/trainer_ft.py +3 -3
  33. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/trainers/trainer_glm.py +197 -198
  34. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/trainers/trainer_gnn.py +344 -344
  35. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/trainers/trainer_resn.py +283 -283
  36. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/trainers/trainer_xgb.py +346 -347
  37. ins_pricing-0.5.0/ins_pricing/modelling/bayesopt/utils/__init__.py +67 -0
  38. ins_pricing-0.5.0/ins_pricing/modelling/bayesopt/utils/constants.py +21 -0
  39. ins_pricing-0.5.0/ins_pricing/modelling/bayesopt/utils/io_utils.py +7 -0
  40. ins_pricing-0.5.0/ins_pricing/modelling/bayesopt/utils/losses.py +27 -0
  41. ins_pricing-0.5.0/ins_pricing/modelling/bayesopt/utils/metrics_and_devices.py +17 -0
  42. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/utils/torch_trainer_mixin.py +623 -623
  43. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/evaluation.py +113 -104
  44. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/explain/__init__.py +55 -55
  45. ins_pricing-0.5.0/ins_pricing/modelling/explain/metrics.py +29 -0
  46. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/explain/permutation.py +237 -237
  47. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/plotting/__init__.py +40 -36
  48. ins_pricing-0.5.0/ins_pricing/modelling/plotting/compat.py +228 -0
  49. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/plotting/curves.py +572 -572
  50. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/plotting/diagnostics.py +163 -163
  51. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/plotting/geo.py +362 -362
  52. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/plotting/importance.py +121 -121
  53. ins_pricing-0.5.0/ins_pricing/pricing/__init__.py +27 -0
  54. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/production/__init__.py +35 -25
  55. ins_pricing-0.4.5/ins_pricing/production/predict.py → ins_pricing-0.5.0/ins_pricing/production/inference.py +140 -57
  56. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/production/monitoring.py +8 -21
  57. ins_pricing-0.5.0/ins_pricing/reporting/__init__.py +11 -0
  58. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/setup.py +1 -1
  59. ins_pricing-0.5.0/ins_pricing/tests/production/test_inference.py +90 -0
  60. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/__init__.py +116 -83
  61. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/device.py +255 -255
  62. ins_pricing-0.5.0/ins_pricing/utils/features.py +53 -0
  63. ins_pricing-0.5.0/ins_pricing/utils/io.py +72 -0
  64. {ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt → ins_pricing-0.5.0/ins_pricing}/utils/losses.py +125 -129
  65. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/metrics.py +158 -24
  66. ins_pricing-0.5.0/ins_pricing/utils/numerics.py +76 -0
  67. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/paths.py +9 -1
  68. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing.egg-info/PKG-INFO +182 -182
  69. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing.egg-info/SOURCES.txt +34 -33
  70. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/pyproject.toml +1 -1
  71. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/setup.cfg +4 -4
  72. ins_pricing-0.4.5/ins_pricing/governance/__init__.py +0 -20
  73. ins_pricing-0.4.5/ins_pricing/modelling/__init__.py +0 -95
  74. ins_pricing-0.4.5/ins_pricing/modelling/core/BayesOpt.py +0 -146
  75. ins_pricing-0.4.5/ins_pricing/modelling/core/__init__.py +0 -1
  76. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/trainers/__init__.py +0 -19
  77. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/utils/__init__.py +0 -86
  78. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/utils/constants.py +0 -183
  79. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/utils/io_utils.py +0 -126
  80. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/utils/metrics_and_devices.py +0 -555
  81. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/utils.py +0 -105
  82. ins_pricing-0.4.5/ins_pricing/modelling/core/bayesopt/utils_backup.py +0 -1503
  83. ins_pricing-0.4.5/ins_pricing/modelling/explain/metrics.py +0 -176
  84. ins_pricing-0.4.5/ins_pricing/pricing/__init__.py +0 -27
  85. ins_pricing-0.4.5/ins_pricing/reporting/__init__.py +0 -11
  86. ins_pricing-0.4.5/ins_pricing/tests/production/test_predict.py +0 -233
  87. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/MANIFEST.in +0 -0
  88. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/README.md +0 -0
  89. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/__init__.py +0 -0
  90. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/__init__.py +0 -0
  91. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/evaluation_context.py +0 -0
  92. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/cli/utils/run_logging.py +0 -0
  93. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/exceptions.py +0 -0
  94. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/README.md +0 -0
  95. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/app.py +0 -0
  96. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/config_builder.py +0 -0
  97. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/example_config.json +0 -0
  98. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/ft_workflow.py +0 -0
  99. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/frontend/runner.py +0 -0
  100. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/governance/README.md +0 -0
  101. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/governance/approval.py +0 -0
  102. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/governance/audit.py +0 -0
  103. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/governance/registry.py +0 -0
  104. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/README.md +0 -0
  105. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/config_components.py +0 -0
  106. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/models/model_ft_components.py +0 -0
  107. {ins_pricing-0.4.5/ins_pricing/modelling/core → ins_pricing-0.5.0/ins_pricing/modelling}/bayesopt/utils/distributed_utils.py +0 -0
  108. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/explain/gradients.py +0 -0
  109. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/explain/shap_utils.py +0 -0
  110. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/modelling/plotting/common.py +0 -0
  111. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/README.md +0 -0
  112. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/calibration.py +0 -0
  113. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/data_quality.py +0 -0
  114. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/exposure.py +0 -0
  115. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/factors.py +0 -0
  116. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/monitoring.py +0 -0
  117. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/pricing/rate_table.py +0 -0
  118. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/production/drift.py +0 -0
  119. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/production/preprocess.py +0 -0
  120. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/production/scoring.py +0 -0
  121. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/reporting/README.md +0 -0
  122. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/reporting/report_builder.py +0 -0
  123. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/reporting/scheduler.py +0 -0
  124. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/governance/__init__.py +0 -0
  125. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/governance/test_audit.py +0 -0
  126. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/governance/test_registry.py +0 -0
  127. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/governance/test_release.py +0 -0
  128. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/conftest.py +0 -0
  129. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_cross_val_generic.py +0 -0
  130. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_distributed_utils.py +0 -0
  131. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_explain.py +0 -0
  132. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_geo_tokens_split.py +0 -0
  133. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_graph_cache.py +0 -0
  134. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_plotting.py +0 -0
  135. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_plotting_library.py +0 -0
  136. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/modelling/test_preprocessor.py +0 -0
  137. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/pricing/__init__.py +0 -0
  138. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/pricing/test_calibration.py +0 -0
  139. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/pricing/test_exposure.py +0 -0
  140. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/pricing/test_factors.py +0 -0
  141. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/pricing/test_rate_table.py +0 -0
  142. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/production/__init__.py +0 -0
  143. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/production/test_monitoring.py +0 -0
  144. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/production/test_preprocess.py +0 -0
  145. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/tests/production/test_scoring.py +0 -0
  146. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/logging.py +0 -0
  147. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/profiling.py +0 -0
  148. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/torch_compat.py +0 -0
  149. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing/utils/validation.py +0 -0
  150. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing.egg-info/dependency_links.txt +0 -0
  151. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing.egg-info/requires.txt +0 -0
  152. {ins_pricing-0.4.5 → ins_pricing-0.5.0}/ins_pricing.egg-info/top_level.txt +0 -0
@@ -1,182 +1,182 @@
1
- Metadata-Version: 2.4
2
- Name: ins_pricing
3
- Version: 0.4.5
4
- Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
- Author: meishi125478
6
- License: Proprietary
7
- Keywords: pricing,insurance,bayesopt,ml
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3 :: Only
10
- Classifier: Programming Language :: Python :: 3.9
11
- Classifier: License :: Other/Proprietary License
12
- Classifier: Operating System :: OS Independent
13
- Classifier: Intended Audience :: Developers
14
- Requires-Python: >=3.9
15
- Description-Content-Type: text/markdown
16
- Requires-Dist: numpy>=1.20
17
- Requires-Dist: pandas>=1.4
18
- Provides-Extra: bayesopt
19
- Requires-Dist: torch>=1.13; extra == "bayesopt"
20
- Requires-Dist: optuna>=3.0; extra == "bayesopt"
21
- Requires-Dist: xgboost>=1.6; extra == "bayesopt"
22
- Requires-Dist: scikit-learn>=1.1; extra == "bayesopt"
23
- Requires-Dist: statsmodels>=0.13; extra == "bayesopt"
24
- Requires-Dist: joblib>=1.2; extra == "bayesopt"
25
- Requires-Dist: matplotlib>=3.5; extra == "bayesopt"
26
- Provides-Extra: plotting
27
- Requires-Dist: matplotlib>=3.5; extra == "plotting"
28
- Requires-Dist: scikit-learn>=1.1; extra == "plotting"
29
- Provides-Extra: explain
30
- Requires-Dist: torch>=1.13; extra == "explain"
31
- Requires-Dist: shap>=0.41; extra == "explain"
32
- Requires-Dist: scikit-learn>=1.1; extra == "explain"
33
- Provides-Extra: geo
34
- Requires-Dist: contextily>=1.3; extra == "geo"
35
- Requires-Dist: matplotlib>=3.5; extra == "geo"
36
- Provides-Extra: gnn
37
- Requires-Dist: torch>=1.13; extra == "gnn"
38
- Requires-Dist: pynndescent>=0.5; extra == "gnn"
39
- Requires-Dist: torch-geometric>=2.3; extra == "gnn"
40
- Provides-Extra: all
41
- Requires-Dist: torch>=1.13; extra == "all"
42
- Requires-Dist: optuna>=3.0; extra == "all"
43
- Requires-Dist: xgboost>=1.6; extra == "all"
44
- Requires-Dist: scikit-learn>=1.1; extra == "all"
45
- Requires-Dist: statsmodels>=0.13; extra == "all"
46
- Requires-Dist: joblib>=1.2; extra == "all"
47
- Requires-Dist: matplotlib>=3.5; extra == "all"
48
- Requires-Dist: shap>=0.41; extra == "all"
49
- Requires-Dist: contextily>=1.3; extra == "all"
50
- Requires-Dist: pynndescent>=0.5; extra == "all"
51
- Requires-Dist: torch-geometric>=2.3; extra == "all"
52
-
53
- # Insurance-Pricing
54
-
55
- A reusable toolkit for insurance modeling, pricing, governance, and reporting.
56
-
57
- ## Overview
58
-
59
- Insurance-Pricing (ins_pricing) is an enterprise-grade Python library designed for machine learning
60
- model training, pricing calculations, and model governance workflows in the insurance industry.
61
-
62
- ### Core Modules
63
-
64
- | Module | Description |
65
- |--------|-------------|
66
- | modelling | ML model training (GLM, XGBoost, ResNet, FT-Transformer, GNN) and model interpretability |
67
- | pricing | Factor table construction, numeric binning, premium calibration, exposure calculation, PSI monitoring |
68
- | production | Model prediction, batch scoring, data drift detection, production metrics monitoring |
69
- | governance | Model registry, version management, approval workflows, audit logging |
70
- | reporting | Report generation (Markdown format), report scheduling |
71
- | utils | Data validation, performance profiling, device management, logging configuration |
72
-
73
- ### Quick Start
74
-
75
- ```python
76
- # Model training with Bayesian optimization
77
- from ins_pricing import bayesopt as ropt
78
-
79
- model = ropt.BayesOptModel(
80
- train_data, test_data,
81
- model_name='my_model',
82
- resp_nme='target',
83
- weight_nme='weight',
84
- factor_nmes=feature_list,
85
- cate_list=categorical_features,
86
- )
87
- model.bayesopt_xgb(max_evals=100) # Train XGBoost
88
- model.bayesopt_resnet(max_evals=50) # Train ResNet
89
- model.bayesopt_ft(max_evals=50) # Train FT-Transformer
90
-
91
- # Pricing: build factor table
92
- from ins_pricing.pricing import build_factor_table
93
- factors = build_factor_table(
94
- df,
95
- factor_col='age_band',
96
- loss_col='claim_amount',
97
- exposure_col='exposure',
98
- )
99
-
100
- # Production: batch scoring
101
- from ins_pricing.production import batch_score
102
- scores = batch_score(model.trainers['xgb'].predict, df)
103
-
104
- # Model governance
105
- from ins_pricing.governance import ModelRegistry
106
- registry = ModelRegistry('models.json')
107
- registry.register(model_name, version, metrics=metrics)
108
- ```
109
-
110
- ### Project Structure
111
-
112
- ```
113
- ins_pricing/
114
- cli/ # Command-line entry points
115
- modelling/
116
- core/bayesopt/ # ML model training core
117
- explain/ # Model interpretability
118
- plotting/ # Model visualization
119
- pricing/ # Insurance pricing module
120
- production/ # Production deployment module
121
- governance/ # Model governance
122
- reporting/ # Report generation
123
- utils/ # Utilities
124
- tests/ # Test suite
125
- ```
126
-
127
- ### Installation
128
-
129
- ```bash
130
- # Basic installation
131
- pip install ins_pricing
132
-
133
- # Full installation (all optional dependencies)
134
- pip install ins_pricing[all]
135
-
136
- # Install specific extras
137
- pip install ins_pricing[bayesopt] # Model training
138
- pip install ins_pricing[explain] # Model explanation
139
- pip install ins_pricing[plotting] # Visualization
140
- pip install ins_pricing[gnn] # Graph neural networks
141
- ```
142
-
143
- #### Multi-platform and GPU notes
144
-
145
- - Install the correct PyTorch build for your platform/GPU before installing extras.
146
- - Torch Geometric requires platform-specific wheels; follow the official PyG install guide.
147
- - Multi-GPU uses torch.distributed/DataParallel where supported; Windows disables CUDA DDP.
148
-
149
- ---
150
- ## PyPI Upload (scripts)
151
-
152
- This repo includes upload scripts for Windows and Linux/macOS.
153
-
154
- ### Windows
155
-
156
- ```cmd
157
- set TWINE_PASSWORD=your_pypi_token_here
158
- python -m build
159
- upload_to_pypi.bat
160
- ```
161
-
162
- ### Linux / macOS
163
-
164
- ```bash
165
- chmod +x upload_to_pypi.sh
166
- export TWINE_PASSWORD='your_pypi_token_here'
167
- python -m build
168
- ./upload_to_pypi.sh
169
- ```
170
-
171
- ### Makefile (if make is available)
172
-
173
- ```bash
174
- make build
175
- make upload
176
- ```
177
-
178
- ### Tips
179
-
180
- - Never commit tokens to version control.
181
- - Use environment variables or secret managers to store credentials.
182
- - Test with TestPyPI before publishing when needed.
1
+ Metadata-Version: 2.4
2
+ Name: ins_pricing
3
+ Version: 0.5.0
4
+ Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
+ Author: meishi125478
6
+ License: Proprietary
7
+ Keywords: pricing,insurance,bayesopt,ml
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: License :: Other/Proprietary License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Intended Audience :: Developers
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: numpy>=1.20
17
+ Requires-Dist: pandas>=1.4
18
+ Provides-Extra: bayesopt
19
+ Requires-Dist: torch>=1.13; extra == "bayesopt"
20
+ Requires-Dist: optuna>=3.0; extra == "bayesopt"
21
+ Requires-Dist: xgboost>=1.6; extra == "bayesopt"
22
+ Requires-Dist: scikit-learn>=1.1; extra == "bayesopt"
23
+ Requires-Dist: statsmodels>=0.13; extra == "bayesopt"
24
+ Requires-Dist: joblib>=1.2; extra == "bayesopt"
25
+ Requires-Dist: matplotlib>=3.5; extra == "bayesopt"
26
+ Provides-Extra: plotting
27
+ Requires-Dist: matplotlib>=3.5; extra == "plotting"
28
+ Requires-Dist: scikit-learn>=1.1; extra == "plotting"
29
+ Provides-Extra: explain
30
+ Requires-Dist: torch>=1.13; extra == "explain"
31
+ Requires-Dist: shap>=0.41; extra == "explain"
32
+ Requires-Dist: scikit-learn>=1.1; extra == "explain"
33
+ Provides-Extra: geo
34
+ Requires-Dist: contextily>=1.3; extra == "geo"
35
+ Requires-Dist: matplotlib>=3.5; extra == "geo"
36
+ Provides-Extra: gnn
37
+ Requires-Dist: torch>=1.13; extra == "gnn"
38
+ Requires-Dist: pynndescent>=0.5; extra == "gnn"
39
+ Requires-Dist: torch-geometric>=2.3; extra == "gnn"
40
+ Provides-Extra: all
41
+ Requires-Dist: torch>=1.13; extra == "all"
42
+ Requires-Dist: optuna>=3.0; extra == "all"
43
+ Requires-Dist: xgboost>=1.6; extra == "all"
44
+ Requires-Dist: scikit-learn>=1.1; extra == "all"
45
+ Requires-Dist: statsmodels>=0.13; extra == "all"
46
+ Requires-Dist: joblib>=1.2; extra == "all"
47
+ Requires-Dist: matplotlib>=3.5; extra == "all"
48
+ Requires-Dist: shap>=0.41; extra == "all"
49
+ Requires-Dist: contextily>=1.3; extra == "all"
50
+ Requires-Dist: pynndescent>=0.5; extra == "all"
51
+ Requires-Dist: torch-geometric>=2.3; extra == "all"
52
+
53
+ # Insurance-Pricing
54
+
55
+ A reusable toolkit for insurance modeling, pricing, governance, and reporting.
56
+
57
+ ## Overview
58
+
59
+ Insurance-Pricing (ins_pricing) is an enterprise-grade Python library designed for machine learning
60
+ model training, pricing calculations, and model governance workflows in the insurance industry.
61
+
62
+ ### Core Modules
63
+
64
+ | Module | Description |
65
+ |--------|-------------|
66
+ | modelling | ML model training (GLM, XGBoost, ResNet, FT-Transformer, GNN) and model interpretability |
67
+ | pricing | Factor table construction, numeric binning, premium calibration, exposure calculation, PSI monitoring |
68
+ | production | Model prediction, batch scoring, data drift detection, production metrics monitoring |
69
+ | governance | Model registry, version management, approval workflows, audit logging |
70
+ | reporting | Report generation (Markdown format), report scheduling |
71
+ | utils | Data validation, performance profiling, device management, logging configuration |
72
+
73
+ ### Quick Start
74
+
75
+ ```python
76
+ # Model training with Bayesian optimization
77
+ from ins_pricing import bayesopt as ropt
78
+
79
+ model = ropt.BayesOptModel(
80
+ train_data, test_data,
81
+ model_name='my_model',
82
+ resp_nme='target',
83
+ weight_nme='weight',
84
+ factor_nmes=feature_list,
85
+ cate_list=categorical_features,
86
+ )
87
+ model.bayesopt_xgb(max_evals=100) # Train XGBoost
88
+ model.bayesopt_resnet(max_evals=50) # Train ResNet
89
+ model.bayesopt_ft(max_evals=50) # Train FT-Transformer
90
+
91
+ # Pricing: build factor table
92
+ from ins_pricing.pricing import build_factor_table
93
+ factors = build_factor_table(
94
+ df,
95
+ factor_col='age_band',
96
+ loss_col='claim_amount',
97
+ exposure_col='exposure',
98
+ )
99
+
100
+ # Production: batch scoring
101
+ from ins_pricing.production import batch_score
102
+ scores = batch_score(model.trainers['xgb'].predict, df)
103
+
104
+ # Model governance
105
+ from ins_pricing.governance import ModelRegistry
106
+ registry = ModelRegistry('models.json')
107
+ registry.register(model_name, version, metrics=metrics)
108
+ ```
109
+
110
+ ### Project Structure
111
+
112
+ ```
113
+ ins_pricing/
114
+ cli/ # Command-line entry points
115
+ modelling/
116
+ core/bayesopt/ # ML model training core
117
+ explain/ # Model interpretability
118
+ plotting/ # Model visualization
119
+ pricing/ # Insurance pricing module
120
+ production/ # Production deployment module
121
+ governance/ # Model governance
122
+ reporting/ # Report generation
123
+ utils/ # Utilities
124
+ tests/ # Test suite
125
+ ```
126
+
127
+ ### Installation
128
+
129
+ ```bash
130
+ # Basic installation
131
+ pip install ins_pricing
132
+
133
+ # Full installation (all optional dependencies)
134
+ pip install ins_pricing[all]
135
+
136
+ # Install specific extras
137
+ pip install ins_pricing[bayesopt] # Model training
138
+ pip install ins_pricing[explain] # Model explanation
139
+ pip install ins_pricing[plotting] # Visualization
140
+ pip install ins_pricing[gnn] # Graph neural networks
141
+ ```
142
+
143
+ #### Multi-platform and GPU notes
144
+
145
+ - Install the correct PyTorch build for your platform/GPU before installing extras.
146
+ - Torch Geometric requires platform-specific wheels; follow the official PyG install guide.
147
+ - Multi-GPU uses torch.distributed/DataParallel where supported; Windows disables CUDA DDP.
148
+
149
+ ---
150
+ ## PyPI Upload (scripts)
151
+
152
+ This repo includes upload scripts for Windows and Linux/macOS.
153
+
154
+ ### Windows
155
+
156
+ ```cmd
157
+ set TWINE_PASSWORD=your_pypi_token_here
158
+ python -m build
159
+ upload_to_pypi.bat
160
+ ```
161
+
162
+ ### Linux / macOS
163
+
164
+ ```bash
165
+ chmod +x upload_to_pypi.sh
166
+ export TWINE_PASSWORD='your_pypi_token_here'
167
+ python -m build
168
+ ./upload_to_pypi.sh
169
+ ```
170
+
171
+ ### Makefile (if make is available)
172
+
173
+ ```bash
174
+ make build
175
+ make upload
176
+ ```
177
+
178
+ ### Tips
179
+
180
+ - Never commit tokens to version control.
181
+ - Use environment variables or secret managers to store credentials.
182
+ - Test with TestPyPI before publishing when needed.
@@ -7,12 +7,13 @@ between modelling, production, governance, and reporting.
7
7
 
8
8
  ## Architecture
9
9
 
10
- - `cli/`: CLI entry points and shared utilities.
11
- - `modelling/`
12
- - `core/`: BayesOpt training core (GLM / XGB / ResNet / FT / GNN).
13
- - `plotting/`: model-agnostic curves and geo visualizations.
14
- - `explain/`: permutation, gradients, and SHAP helpers.
15
- - `examples/`: demo configs and notebooks (repo only; not packaged).
10
+ - `cli/`: CLI entry points and shared utilities.
11
+ - `modelling/`
12
+ - `bayesopt/`: BayesOpt training core (GLM / XGB / ResNet / FT / GNN).
13
+ - `plotting/`: model-agnostic curves and geo visualizations.
14
+ - `explain/`: permutation, gradients, and SHAP helpers.
15
+ - `evaluation.py`: calibration, metrics, and evaluation utilities.
16
+ - `examples/`: demo configs and notebooks (repo only; not packaged).
16
17
  - `pricing/`: factor tables, calibration, exposure, monitoring.
17
18
  - `production/`: scoring, metrics, drift/PSI.
18
19
  - `governance/`: registry, approval, audit workflows.
@@ -31,29 +32,54 @@ between modelling, production, governance, and reporting.
31
32
  - `from ins_pricing.explain import permutation_importance, integrated_gradients_torch`
32
33
  4. Pricing loop
33
34
  - `from ins_pricing.pricing import build_factor_table, rate_premium`
34
- 5. Production and governance
35
- - `from ins_pricing.production import batch_score, psi_report`
36
- - `from ins_pricing.governance import ModelRegistry, ReleaseManager`
35
+ 5. Production and governance
36
+ - `from ins_pricing.production import batch_score, psi_report`
37
+ - Inference: `from ins_pricing.production import load_predictor_from_config`
38
+ - `from ins_pricing.governance import ModelRegistry, ReleaseManager`
37
39
  6. Reporting
38
40
  - `from ins_pricing.reporting import build_report, write_report, schedule_daily`
39
41
 
40
- ## Import notes
41
-
42
- - `ins_pricing` exposes lightweight lazy imports so that pricing/production/governance
43
- can be used without installing heavy ML dependencies.
42
+ ## Import notes
43
+
44
+ - `ins_pricing` exposes lightweight lazy imports so that pricing/production/governance
45
+ can be used without installing heavy ML dependencies.
44
46
  - Demo notebooks/configs live in the repo under `examples/` and are not shipped
45
47
  in the PyPI package.
46
- - Heavy dependencies are only required when you import or use the related modules:
47
- - BayesOpt: `torch`, `optuna`, `xgboost`, etc.
48
- - Explain: `torch` (gradients), `shap` (SHAP).
49
- - Geo plotting on basemap: `contextily`.
50
- - Plotting: `matplotlib`.
48
+ - Heavy dependencies are only required when you import or use the related modules:
49
+ - BayesOpt: `torch`, `optuna`, `xgboost`, etc.
50
+ - Explain: `torch` (gradients), `shap` (SHAP).
51
+ - Geo plotting on basemap: `contextily`.
52
+ - Plotting: `matplotlib`.
53
+ - Inference: `torch` only when loading FT/ResNet/GNN models.
54
+
55
+ ## Inference interface (new)
56
+
57
+ - `production.inference` provides a small registry-based interface so inference
58
+ does not hard-code model loaders:
59
+ - `ModelSpec` describes the saved model location and config.
60
+ - `PredictorRegistry` lets you plug in custom model loaders.
61
+ - `load_predictor_from_config` remains backward compatible.
62
+
63
+ Example:
64
+
65
+ ```
66
+ from ins_pricing.production import load_predictor_from_config
67
+
68
+ predictor = load_predictor_from_config(
69
+ "config.json",
70
+ "resn",
71
+ device="cuda", # or "mps"/"cpu"
72
+ )
73
+ preds = predictor.predict(df)
74
+ ```
51
75
 
52
- ## Multi-platform and GPU notes
76
+ ## Multi-platform and GPU notes
53
77
 
54
- - Install the correct PyTorch build for your platform/GPU before installing extras.
55
- - Torch Geometric requires platform-specific wheels; follow the official PyG install guide.
56
- - Multi-GPU uses DDP or DataParallel where supported; Windows disables CUDA DDP.
78
+ - Install the correct PyTorch build for your platform/GPU before installing extras.
79
+ - Torch Geometric requires platform-specific wheels; follow the official PyG install guide.
80
+ - Multi-GPU uses DDP or DataParallel where supported; Windows disables CUDA DDP.
81
+ CLI usage prefers `python -m ins_pricing.cli.BayesOpt_entry ...` but the
82
+ direct script path (`python ins_pricing/cli/BayesOpt_entry.py ...`) still works.
57
83
 
58
84
  ## Backward-compatible imports
59
85