ins-pricing 0.2.8__tar.gz → 0.2.9__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 (120) hide show
  1. ins_pricing-0.2.9/PKG-INFO +149 -0
  2. ins_pricing-0.2.9/README.md +97 -0
  3. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/utils.py +2 -1
  4. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/setup.py +1 -1
  5. ins_pricing-0.2.9/ins_pricing.egg-info/PKG-INFO +149 -0
  6. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing.egg-info/SOURCES.txt +1 -0
  7. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/pyproject.toml +1 -1
  8. ins_pricing-0.2.8/PKG-INFO +0 -51
  9. ins_pricing-0.2.8/ins_pricing.egg-info/PKG-INFO +0 -51
  10. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/MANIFEST.in +0 -0
  11. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/CHANGELOG.md +0 -0
  12. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/README.md +0 -0
  13. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/RELEASE_NOTES_0.2.8.md +0 -0
  14. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/__init__.py +0 -0
  15. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/BayesOpt_entry.py +0 -0
  16. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/BayesOpt_incremental.py +0 -0
  17. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/Explain_Run.py +0 -0
  18. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/Explain_entry.py +0 -0
  19. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/Pricing_Run.py +0 -0
  20. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/__init__.py +0 -0
  21. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/bayesopt_entry_runner.py +0 -0
  22. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/utils/__init__.py +0 -0
  23. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/utils/cli_common.py +0 -0
  24. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/utils/cli_config.py +0 -0
  25. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/utils/notebook_utils.py +0 -0
  26. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/utils/run_logging.py +0 -0
  27. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/cli/watchdog_run.py +0 -0
  28. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/docs/modelling/BayesOpt_USAGE.md +0 -0
  29. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/docs/modelling/README.md +0 -0
  30. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/exceptions.py +0 -0
  31. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/governance/README.md +0 -0
  32. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/governance/__init__.py +0 -0
  33. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/governance/approval.py +0 -0
  34. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/governance/audit.py +0 -0
  35. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/governance/registry.py +0 -0
  36. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/governance/release.py +0 -0
  37. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/__init__.py +0 -0
  38. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/BayesOpt.py +0 -0
  39. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/__init__.py +0 -0
  40. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/__init__.py +0 -0
  41. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/config_preprocess.py +0 -0
  42. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/core.py +0 -0
  43. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/model_explain_mixin.py +0 -0
  44. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/model_plotting_mixin.py +0 -0
  45. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/models/__init__.py +0 -0
  46. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/models/model_ft_components.py +0 -0
  47. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/models/model_ft_trainer.py +0 -0
  48. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/models/model_gnn.py +0 -0
  49. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/models/model_resn.py +0 -0
  50. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/__init__.py +0 -0
  51. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/trainer_base.py +0 -0
  52. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/trainer_ft.py +0 -0
  53. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/trainer_glm.py +0 -0
  54. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/trainer_gnn.py +0 -0
  55. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/trainer_resn.py +0 -0
  56. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/bayesopt/trainers/trainer_xgb.py +0 -0
  57. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/core/evaluation.py +0 -0
  58. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/explain/__init__.py +0 -0
  59. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/explain/gradients.py +0 -0
  60. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/explain/metrics.py +0 -0
  61. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/explain/permutation.py +0 -0
  62. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/explain/shap_utils.py +0 -0
  63. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/plotting/__init__.py +0 -0
  64. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/plotting/common.py +0 -0
  65. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/plotting/curves.py +0 -0
  66. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/plotting/diagnostics.py +0 -0
  67. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/plotting/geo.py +0 -0
  68. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/modelling/plotting/importance.py +0 -0
  69. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/README.md +0 -0
  70. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/__init__.py +0 -0
  71. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/calibration.py +0 -0
  72. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/data_quality.py +0 -0
  73. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/exposure.py +0 -0
  74. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/factors.py +0 -0
  75. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/monitoring.py +0 -0
  76. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/pricing/rate_table.py +0 -0
  77. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/production/__init__.py +0 -0
  78. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/production/drift.py +0 -0
  79. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/production/monitoring.py +0 -0
  80. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/production/predict.py +0 -0
  81. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/production/preprocess.py +0 -0
  82. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/production/scoring.py +0 -0
  83. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/reporting/README.md +0 -0
  84. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/reporting/__init__.py +0 -0
  85. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/reporting/report_builder.py +0 -0
  86. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/reporting/scheduler.py +0 -0
  87. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/governance/__init__.py +0 -0
  88. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/governance/test_audit.py +0 -0
  89. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/governance/test_registry.py +0 -0
  90. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/governance/test_release.py +0 -0
  91. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/conftest.py +0 -0
  92. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_cross_val_generic.py +0 -0
  93. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_distributed_utils.py +0 -0
  94. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_explain.py +0 -0
  95. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_geo_tokens_split.py +0 -0
  96. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_graph_cache.py +0 -0
  97. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_plotting.py +0 -0
  98. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_plotting_library.py +0 -0
  99. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/modelling/test_preprocessor.py +0 -0
  100. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/pricing/__init__.py +0 -0
  101. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/pricing/test_calibration.py +0 -0
  102. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/pricing/test_exposure.py +0 -0
  103. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/pricing/test_factors.py +0 -0
  104. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/pricing/test_rate_table.py +0 -0
  105. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/production/__init__.py +0 -0
  106. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/production/test_monitoring.py +0 -0
  107. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/production/test_predict.py +0 -0
  108. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/production/test_preprocess.py +0 -0
  109. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/tests/production/test_scoring.py +0 -0
  110. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/__init__.py +0 -0
  111. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/device.py +0 -0
  112. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/logging.py +0 -0
  113. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/metrics.py +0 -0
  114. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/paths.py +0 -0
  115. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/profiling.py +0 -0
  116. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing/utils/validation.py +0 -0
  117. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing.egg-info/dependency_links.txt +0 -0
  118. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing.egg-info/requires.txt +0 -0
  119. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/ins_pricing.egg-info/top_level.txt +0 -0
  120. {ins_pricing-0.2.8 → ins_pricing-0.2.9}/setup.cfg +0 -0
@@ -0,0 +1,149 @@
1
+ Metadata-Version: 2.4
2
+ Name: ins_pricing
3
+ Version: 0.2.9
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 model training, pricing calculations, and model governance workflows in the insurance industry.
60
+
61
+ ### Core Modules
62
+
63
+ | Module | Description |
64
+ |--------|-------------|
65
+ | **modelling** | ML model training (GLM, XGBoost, ResNet, FT-Transformer, GNN) and model interpretability (SHAP, permutation importance) |
66
+ | **pricing** | Factor table construction, numeric binning, premium calibration, exposure calculation, PSI monitoring |
67
+ | **production** | Model prediction, batch scoring, data drift detection, production metrics monitoring |
68
+ | **governance** | Model registry, version management, approval workflows, audit logging |
69
+ | **reporting** | Report generation (Markdown format), report scheduling |
70
+ | **utils** | Data validation, performance profiling, device management, logging configuration |
71
+
72
+ ### Quick Start
73
+
74
+ ```python
75
+ # Model training with Bayesian optimization
76
+ from ins_pricing import bayesopt as ropt
77
+
78
+ model = ropt.BayesOptModel(
79
+ train_data, test_data,
80
+ model_name='my_model',
81
+ resp_nme='target',
82
+ weight_nme='weight',
83
+ factor_nmes=feature_list,
84
+ cate_list=categorical_features,
85
+ )
86
+ model.bayesopt_xgb(max_evals=100) # Train XGBoost
87
+ model.bayesopt_resnet(max_evals=50) # Train ResNet
88
+ model.bayesopt_ft(max_evals=50) # Train FT-Transformer
89
+
90
+ # Pricing: build factor table
91
+ from ins_pricing.pricing import build_factor_table
92
+ factors = build_factor_table(
93
+ df,
94
+ factor_col='age_band',
95
+ loss_col='claim_amount',
96
+ exposure_col='exposure',
97
+ )
98
+
99
+ # Production: batch scoring
100
+ from ins_pricing.production import batch_score
101
+ scores = batch_score(model.trainers['xgb'].predict, df)
102
+
103
+ # Model governance
104
+ from ins_pricing.governance import ModelRegistry
105
+ registry = ModelRegistry('models.json')
106
+ registry.register(model_name, version, metrics=metrics)
107
+ ```
108
+
109
+ ### Project Structure
110
+
111
+ ```
112
+ ins_pricing/
113
+ ├── cli/ # Command-line entry points
114
+ ├── modelling/
115
+ │ ├── core/bayesopt/ # ML model training core
116
+ │ ├── explain/ # Model interpretability
117
+ │ └── plotting/ # Model visualization
118
+ ├── pricing/ # Insurance pricing module
119
+ ├── production/ # Production deployment module
120
+ ├── governance/ # Model governance
121
+ ├── reporting/ # Report generation
122
+ ├── utils/ # Utilities
123
+ └── tests/ # Test suite
124
+ ```
125
+
126
+ ### Installation
127
+
128
+ ```bash
129
+ # Basic installation
130
+ pip install ins_pricing
131
+
132
+ # Full installation (all optional dependencies)
133
+ pip install ins_pricing[all]
134
+
135
+ # Install specific extras
136
+ pip install ins_pricing[bayesopt] # Model training
137
+ pip install ins_pricing[explain] # Model explanation
138
+ pip install ins_pricing[plotting] # Visualization
139
+ pip install ins_pricing[gnn] # Graph neural networks
140
+ ```
141
+
142
+ ### Requirements
143
+
144
+ - Python >= 3.9
145
+ - Core dependencies: numpy >= 1.20, pandas >= 1.4
146
+
147
+ ### License
148
+
149
+ Proprietary
@@ -0,0 +1,97 @@
1
+ # Insurance-Pricing
2
+
3
+ A reusable toolkit for insurance modeling, pricing, governance, and reporting.
4
+
5
+ ## Overview
6
+
7
+ Insurance-Pricing (ins_pricing) is an enterprise-grade Python library designed for machine learning model training, pricing calculations, and model governance workflows in the insurance industry.
8
+
9
+ ### Core Modules
10
+
11
+ | Module | Description |
12
+ |--------|-------------|
13
+ | **modelling** | ML model training (GLM, XGBoost, ResNet, FT-Transformer, GNN) and model interpretability (SHAP, permutation importance) |
14
+ | **pricing** | Factor table construction, numeric binning, premium calibration, exposure calculation, PSI monitoring |
15
+ | **production** | Model prediction, batch scoring, data drift detection, production metrics monitoring |
16
+ | **governance** | Model registry, version management, approval workflows, audit logging |
17
+ | **reporting** | Report generation (Markdown format), report scheduling |
18
+ | **utils** | Data validation, performance profiling, device management, logging configuration |
19
+
20
+ ### Quick Start
21
+
22
+ ```python
23
+ # Model training with Bayesian optimization
24
+ from ins_pricing import bayesopt as ropt
25
+
26
+ model = ropt.BayesOptModel(
27
+ train_data, test_data,
28
+ model_name='my_model',
29
+ resp_nme='target',
30
+ weight_nme='weight',
31
+ factor_nmes=feature_list,
32
+ cate_list=categorical_features,
33
+ )
34
+ model.bayesopt_xgb(max_evals=100) # Train XGBoost
35
+ model.bayesopt_resnet(max_evals=50) # Train ResNet
36
+ model.bayesopt_ft(max_evals=50) # Train FT-Transformer
37
+
38
+ # Pricing: build factor table
39
+ from ins_pricing.pricing import build_factor_table
40
+ factors = build_factor_table(
41
+ df,
42
+ factor_col='age_band',
43
+ loss_col='claim_amount',
44
+ exposure_col='exposure',
45
+ )
46
+
47
+ # Production: batch scoring
48
+ from ins_pricing.production import batch_score
49
+ scores = batch_score(model.trainers['xgb'].predict, df)
50
+
51
+ # Model governance
52
+ from ins_pricing.governance import ModelRegistry
53
+ registry = ModelRegistry('models.json')
54
+ registry.register(model_name, version, metrics=metrics)
55
+ ```
56
+
57
+ ### Project Structure
58
+
59
+ ```
60
+ ins_pricing/
61
+ ├── cli/ # Command-line entry points
62
+ ├── modelling/
63
+ │ ├── core/bayesopt/ # ML model training core
64
+ │ ├── explain/ # Model interpretability
65
+ │ └── plotting/ # Model visualization
66
+ ├── pricing/ # Insurance pricing module
67
+ ├── production/ # Production deployment module
68
+ ├── governance/ # Model governance
69
+ ├── reporting/ # Report generation
70
+ ├── utils/ # Utilities
71
+ └── tests/ # Test suite
72
+ ```
73
+
74
+ ### Installation
75
+
76
+ ```bash
77
+ # Basic installation
78
+ pip install ins_pricing
79
+
80
+ # Full installation (all optional dependencies)
81
+ pip install ins_pricing[all]
82
+
83
+ # Install specific extras
84
+ pip install ins_pricing[bayesopt] # Model training
85
+ pip install ins_pricing[explain] # Model explanation
86
+ pip install ins_pricing[plotting] # Visualization
87
+ pip install ins_pricing[gnn] # Graph neural networks
88
+ ```
89
+
90
+ ### Requirements
91
+
92
+ - Python >= 3.9
93
+ - Core dependencies: numpy >= 1.20, pandas >= 1.4
94
+
95
+ ### License
96
+
97
+ Proprietary
@@ -912,7 +912,8 @@ class TorchTrainerMixin:
912
912
 
913
913
  prune_flag = False
914
914
  is_main_rank = DistributedUtils.is_main_process()
915
- if trial is not None and (not dist.is_initialized() or is_main_rank):
915
+ # Only main process reports to Optuna to avoid duplicate reports
916
+ if trial is not None and is_main_rank:
916
917
  trial.report(val_weighted_loss, epoch)
917
918
  prune_flag = trial.should_prune()
918
919
 
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name="ins_pricing",
6
- version="0.2.8",
6
+ version="0.2.9",
7
7
  description="Reusable modelling, pricing, governance, and reporting utilities.",
8
8
  author="meishi125478",
9
9
  license="Proprietary",
@@ -0,0 +1,149 @@
1
+ Metadata-Version: 2.4
2
+ Name: ins_pricing
3
+ Version: 0.2.9
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 model training, pricing calculations, and model governance workflows in the insurance industry.
60
+
61
+ ### Core Modules
62
+
63
+ | Module | Description |
64
+ |--------|-------------|
65
+ | **modelling** | ML model training (GLM, XGBoost, ResNet, FT-Transformer, GNN) and model interpretability (SHAP, permutation importance) |
66
+ | **pricing** | Factor table construction, numeric binning, premium calibration, exposure calculation, PSI monitoring |
67
+ | **production** | Model prediction, batch scoring, data drift detection, production metrics monitoring |
68
+ | **governance** | Model registry, version management, approval workflows, audit logging |
69
+ | **reporting** | Report generation (Markdown format), report scheduling |
70
+ | **utils** | Data validation, performance profiling, device management, logging configuration |
71
+
72
+ ### Quick Start
73
+
74
+ ```python
75
+ # Model training with Bayesian optimization
76
+ from ins_pricing import bayesopt as ropt
77
+
78
+ model = ropt.BayesOptModel(
79
+ train_data, test_data,
80
+ model_name='my_model',
81
+ resp_nme='target',
82
+ weight_nme='weight',
83
+ factor_nmes=feature_list,
84
+ cate_list=categorical_features,
85
+ )
86
+ model.bayesopt_xgb(max_evals=100) # Train XGBoost
87
+ model.bayesopt_resnet(max_evals=50) # Train ResNet
88
+ model.bayesopt_ft(max_evals=50) # Train FT-Transformer
89
+
90
+ # Pricing: build factor table
91
+ from ins_pricing.pricing import build_factor_table
92
+ factors = build_factor_table(
93
+ df,
94
+ factor_col='age_band',
95
+ loss_col='claim_amount',
96
+ exposure_col='exposure',
97
+ )
98
+
99
+ # Production: batch scoring
100
+ from ins_pricing.production import batch_score
101
+ scores = batch_score(model.trainers['xgb'].predict, df)
102
+
103
+ # Model governance
104
+ from ins_pricing.governance import ModelRegistry
105
+ registry = ModelRegistry('models.json')
106
+ registry.register(model_name, version, metrics=metrics)
107
+ ```
108
+
109
+ ### Project Structure
110
+
111
+ ```
112
+ ins_pricing/
113
+ ├── cli/ # Command-line entry points
114
+ ├── modelling/
115
+ │ ├── core/bayesopt/ # ML model training core
116
+ │ ├── explain/ # Model interpretability
117
+ │ └── plotting/ # Model visualization
118
+ ├── pricing/ # Insurance pricing module
119
+ ├── production/ # Production deployment module
120
+ ├── governance/ # Model governance
121
+ ├── reporting/ # Report generation
122
+ ├── utils/ # Utilities
123
+ └── tests/ # Test suite
124
+ ```
125
+
126
+ ### Installation
127
+
128
+ ```bash
129
+ # Basic installation
130
+ pip install ins_pricing
131
+
132
+ # Full installation (all optional dependencies)
133
+ pip install ins_pricing[all]
134
+
135
+ # Install specific extras
136
+ pip install ins_pricing[bayesopt] # Model training
137
+ pip install ins_pricing[explain] # Model explanation
138
+ pip install ins_pricing[plotting] # Visualization
139
+ pip install ins_pricing[gnn] # Graph neural networks
140
+ ```
141
+
142
+ ### Requirements
143
+
144
+ - Python >= 3.9
145
+ - Core dependencies: numpy >= 1.20, pandas >= 1.4
146
+
147
+ ### License
148
+
149
+ Proprietary
@@ -1,4 +1,5 @@
1
1
  MANIFEST.in
2
+ README.md
2
3
  pyproject.toml
3
4
  ins_pricing/CHANGELOG.md
4
5
  ins_pricing/README.md
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ins_pricing"
7
- version = "0.2.8"
7
+ version = "0.2.9"
8
8
  description = "Reusable modelling, pricing, governance, and reporting utilities."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,51 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: ins_pricing
3
- Version: 0.2.8
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"
@@ -1,51 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: ins_pricing
3
- Version: 0.2.8
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"
File without changes
File without changes