Skip to content
Go back

Calculate Your Fintech Credit: Commission, VAT, and Amount to Request

Published:  at  06:00 PM

Have you ever wondered how the math behind finance can make or break your payment plans? 💸 Sometimes, a small error in calculation can mean you fall short. Join me in unraveling this financial riddle with a touch of code!

🔮 Problem Statement

Alfonso, a friend I met at university, urgently needs to pay off his debts. Following his friend Miguel’s recommendation, he has decided to apply for a loan from a Fintech. However, Fintechs are not charities: they apply an opening commission of 5% plus VAT (16%) on the loan amount requested. The amount that will finally be deposited to Alfonso will have the relevant commission deducted.

The challenge is to write a function that helps Alfonso determine how much he should request from the Fintech to cover the exact amount he needs to pay off his debts, taking into account the opening commission and VAT.

Note: The Fintech establishes that the amounts requested for loans must be multiples of 200.

Parameters:

Returns:

Example:

>>> credit_fintech(100000)
106200
>>> credit_fintech(50000)
53200

🧩 Step-by-Step Solution

The key to solving this problem lies in understanding how to “undo” the commission and VAT to arrive at the correct amount that Alfonso should request. First, we will calculate the amount before applying rounding to multiples of 200.

money = needed / (1 - 0.05 - 0.05 * 0.16)

Here, 0.05 represents the 5% commission and 0.05 * 0.16 calculates the VAT on that commission. The subtraction 1 - 0.05 - 0.05 * 0.16 gives us the correction factor. Dividing needed by this factor reveals the total amount that Alfonso must borrow before any rounding to cover his needs and the commission with VAT. It’s as if we were going back in time, reversing the deductions.

The next crucial step is rounding to the nearest multiple of 200, as the Fintech imposes this restriction.

return int(((money // 200) + 1) * 200) if money % 200 > 0 else int(money)

This line implements conditional rounding. If the remainder of the division of money by 200 is greater than zero (money % 200 > 0), it means that money is not a multiple of 200. In this case, we calculate the number of multiples of 200 contained in money using integer division (money // 200), add 1 (to round up to the next multiple), and then multiply by 200. If money is already a multiple of 200, we simply convert it to an integer and return it without modifications.

Complete Solution:

def credit_fintech(needed):
	"level: difficult; points: 8"
	money = needed / (1 - 0.05 - 0.05 * 0.16)
	return int(((money // 200) + 1) * 200) if money % 200 > 0 else int(money)

🧠 Key Concepts

In this solution, arithmetic operations are the foundation of everything. Division, multiplication, and subtraction are essential for calculating the correct amount. The use of the modulo operator (%) is crucial for determining if a number is a multiple of another. Integer division (//) allows us to obtain the integer part of a division, which is useful for rounding.

The correction factor is a subtle but powerful technique. Instead of calculating the commission and VAT separately and then subtracting them, we directly calculate the factor that, when dividing the necessary amount, gives us the total amount required. Conditional logic (if/else) allows us to apply rounding only when necessary, complying with the Fintech’s rules. A correct understanding of taxes and commissions in the context of the problem is vital to formulating the correct solution.

Did you know that accuracy in financial calculations is so important that standards like ISO 80000-3 exist that define how to represent quantities and units in scientific and technical contexts, including finance? 🤓

💫 Final Thoughts

A possible improvement to this solution would be to add input validation to ensure that needed is a positive value. Also, the function could be generalized to accept the commission and VAT as parameters, which would make it more reusable in different scenarios. It is important to remember that in the real world, Fintechs may have even more complex conditions, so this function is a starting point that may need adjustments depending on the case.

I hope this analysis has helped you understand how to combine mathematics, finance, and programming to solve real-world problems. If you liked this article and want to learn more about how code can simplify your financial life, feel free to explore other posts on my blog! See you in the next challenge! 👋



Previous Post
GCD of an Array: Efficient Calculation with Python and Functions
Next Post
Maximum Coincident Height: Cylinders and Sets in Python