When we started building models across Vietnam, Indonesia, and the Philippines in mid-2024, the engineering argument for a single pooled model was compelling on its face. More data means better-calibrated parameters. A single model is easier to maintain, version, and monitor. Cross-market patterns might generalize in ways that individual market models can't capture due to sample size constraints early in deployment.
We built and tested the pooled approach seriously. A gradient boosting classifier trained on all three markets' labeled origination data, with a market indicator feature and market-specific feature interaction terms. It performed acceptably at the aggregate level. When we decomposed the performance by market, the picture was less comfortable. The pooled model underperformed the country-specific models in every market, sometimes by margins that were material for credit decisions at the margin. The performance gap was largest exactly where we needed the models to be most accurate: at the decision boundary, in the borderline-approve population where the spread between good and bad credit outcomes mattered most.
This post explains what we found and why we concluded that per-market signal extraction is the right architectural choice for this type of credit problem, not a later optimization but a starting design principle.
Why Pooling Feels Right Until You Test It
The intuition behind pooled training is that underlying creditworthiness patterns are universal. A borrower who consistently maintains a positive balance buffer, clears small obligations quickly, and shows stable income-to-outflow ratios is a good credit risk regardless of whether they're in Hanoi, Jakarta, or Manila. The human behavior that drives repayment is the same.
This intuition is partially correct, which is what makes it seductive. The behavioral constructs are universal. The feature distributions are not. And credit models don't operate on abstract behavioral constructs; they operate on features computed from data, and those feature distributions are shaped by the specific financial infrastructure, payment norms, income patterns, and economic conditions of each market.
In Vietnam, mobile wallet income arrives through MoMo and ZaloPay in transaction patterns shaped by Vietnam's specific platform payment architecture and informal economy norms. In Indonesia, GoPay and OVO carry different merchant category distributions, different peer-transfer volumes, and payout timing structures tied to Gojek and Grab's Indonesia-specific driver remuneration schedules. In the Philippines, GCash and Maya have distinct acceptance footprints and different demographic compositions of their user bases. The feature distributions in each market are, statistically speaking, different populations.
A pooled model trained on all three doesn't learn the patterns of any one market optimally. It learns a weighted average of the three, suppressing features that are highly predictive in one market but not in others, and over-weighting features that show moderate signal across all three but aren't the strongest signal in any of them. This is model averaging at the training stage, and it produces exactly the kind of flattened signal loss that makes the cover image for this post a reasonable metaphor.
The Distribution Shift Problem Is Structural, Not Marginal
Distribution shift in credit models is typically framed as a temporal problem: a model trained on 2023 data drifts as 2024 economic conditions change. That framing is correct but incomplete. Cross-market distribution shift is a spatial version of the same problem: the data generating process is structurally different across markets, not just different at the margin.
We ran a Population Stability Index (PSI) analysis on the same feature set computed from all three markets' data. Features with PSI above 0.2 are conventionally considered to indicate significant distribution shift warranting separate treatment. Across our core feature set of 40+ variables, the majority exceeded 0.2 when comparing Vietnam to Indonesia or either to the Philippines. This isn't a case where a small correction brings the distributions into alignment. The markets are genuinely different in ways that affect how features encode creditworthiness information.
A concrete example: the coefficient of variation of weekly inflows over a 26-week window. In Vietnam's urban informal economy, where many income recipients receive irregular lump-sum payments from clients or platform payouts, a CV of 0.4 is common for creditworthy borrowers. In Indonesia, platform workers receiving regular GoPay payouts have lower CV by nature of how Gojek structures driver payments. A CV of 0.4 means something different in each market. A pooled model that assigns the same coefficient to this feature for both markets is encoding incorrect information.
Signal Extraction vs. Averaging: The Key Distinction
The architectural difference between per-market signal extraction and pooled model averaging comes down to where market-specific information enters the modeling process.
In a pooled model with market indicator features, market information enters as a feature after the feature distributions are already combined. The model can learn, for example, "increase score by X for Indonesia borrowers with high income," but it can't learn that the same CV value means something fundamentally different in Indonesia vs. Vietnam, because from the model's perspective it's the same feature with the same value.
In a per-market model, the feature distributions are learned separately. The model for Vietnam learns what a high CV looks like in the Vietnamese context, calibrated against Vietnamese loan outcomes. The model for Indonesia learns the same about the Indonesian context. Feature weights that are high in one market and low in another aren't averaged; they're each set to the value appropriate for their market.
This matters most for features where the predictive direction is the same but the magnitude differs, and for features where contextual calibration changes the decision boundary substantially. For our particular feature set, income regularity features showed the largest per-market divergence in optimal weights. Bureau-derived features (where available) showed less divergence, consistent with bureau data encoding more universally standardized information.
The Counterargument: Data Scarcity in Early Deployment
The legitimate argument for pooling is data scarcity. When you're early in deployment in a new market, you don't have enough local labeled data to train a well-calibrated country-specific model. A pooled model trained on two established markets can deliver reasonable performance in a third market before local data accumulates, if the markets are reasonably similar. This is essentially transfer learning via pooling.
We don't dismiss this argument. In our own deployment sequence, entering the Philippines market with limited initial local data, some borrowing from Vietnam model structure made sense. The question is how long to stay pooled and how to structure the transition to a market-specific model as data accumulates.
Our approach is a hierarchical model structure: a shared feature engineering layer (the same features computed the same way across all markets) combined with market-specific scoring layers that are trained on local data as it accumulates. The shared feature engineering captures the benefit of a consistent feature vocabulary and allows comparison across markets. The market-specific scoring layers allow calibration to local distributions. When local data is thin, the scoring layer falls back to pooled weights. As local data accumulates, the scoring layer transitions to locally calibrated weights according to a threshold based on sample size and model stability metrics.
This isn't a novel architecture in transfer learning literature; the novelty for us is applying it to the specific domain characteristics of alternative credit data in thin-file emerging markets, where feature distribution divergence is structural and significant.
Implications for Lenders Building Their Own Models
For lenders who are at the stage of building in-house alternative credit models, the practical implication of this analysis is to resist the organizational pressure toward a single unified model when operating across multiple markets. That pressure often comes from engineering teams who prefer to maintain one codebase, or from leadership who want a single "credit score" number that works everywhere. Both pressures are legitimate concerns about operational complexity.
The cost of yielding to that pressure is model quality degradation at the decision boundary, concentrated among the borrowers who are hardest to score correctly with bureau data alone. These are exactly the borrowers for whom alternative data has the most incremental value, and whose outcomes most differentiate lenders who use alternative data well from those who use it poorly.
The practical path forward is usually: separate training pipelines with shared feature definitions, common monitoring infrastructure, and explicit model cards that document per-market performance metrics. The maintenance overhead compared to a single pooled model is real but manageable, and the performance benefit justifies it. When we've run head-to-head comparisons at the decision boundary, per-market models consistently produce better separation, and that separation translates directly into portfolio performance.
A final note on what we're not claiming: per-market models require per-market data, and building quality training datasets in each market takes time and operational discipline. The architectural argument for separation doesn't solve the data acquisition problem. It just means that once you have sufficient market-specific data, you should be using models that exploit it fully rather than averaging it away.