Let’s step back and analyse Afterpay as a system and consider how it makes money.
Bayesian
Finance
Published
August 14, 2020
The Context
Afterpay’s business model is pretty simple. Afterpay allows customers to pay for products in 4 separate payments every two weeks and charges stores a margin for this. At a high level, Afterpays revenues are a function of how many customers they have and how often they use Afterpay.
Sometimes things don’t go to plan, and customers default on their payments, and this is where things get a bit more complex.
It’s also an area that I believe that Afterpay has been somewhat nebulous. Even if Afterpay doesn’t tell us directly, it might be possible to infer and gain more clarity about what we have not been directly told.
However, there are many positive aspects to Afterpay’s business model compared to credit cards.
Important
Obviously, I need a disclaimer. If you use anything I say as the basis for any decision, financial or otherwise, you are an idiot.
Why create synthetic data?
Before we try and infer based on what Afterpay has told us, a significant first step might be to build a model to generate synthetic data. Let’s simulate Afterpay, then generate some artificial outcomes. We can try and infer “hidden” parameters from these outcomes in our model. Because this is a simulation, we can see how well we can infer based on what we observe.
While this seems like a contrived toy example, it’s a compelling first step. If we can’t effectively infer from our synthetic data, we can’t hope to infer anything about reality.
The model
Let’s keep things as simple as possible initially. We can always create a more sophisticated but wrong model later.
Ok. So let’s assume that Afterpay does some number of transactions per year. These transactions have an average value; let’s take 100 AUD. For each transaction, they are paid some margin by the merchant. Let’s assume 4%.
For some of these transactions, the customer defaults 1% of the time. This means that they make no repayments at all against the 100 AUD.
Glossing over the Afterpay fee structure, let’s assume they pay Afterpay 25 AUD in fees, and Afterpay is liable for the transaction value (100 AUD).
with model: trace = pm.sample(draws=10_000,tune=5_000)
Auto-assigning NUTS sampler...
Initializing NUTS using jitter+adapt_diag...
Multiprocess sampling (2 chains in 2 jobs)
NUTS: [average_transaction_value, number_of_transactions, average_default_fee, loss_rate]
Sampling 2 chains, 0 divergences: 100%|██████████| 30000/30000 [00:41<00:00, 716.68draws/s]
The number of effective samples is smaller than 25% for some parameters.