Global ABS 2022 Barcelona Recap

Global ABS Barcelona – Main news and insights from Cardo AI

What are the main insights and news from Global ABS 2022 in Barcelona?

In this article, we will make an overview of what happened at the Global ABS of June 2022, giving you our thoughts at CARDO AI about the main news and panel discussions we took part in. 

Over 4,000 market participants from banks, asset managers, servicers, and technology providers attended the three-day conference in Barcelona with several on and off-site events. From business meetings and panels to informal chats and networking events, we had the chance to discuss the main trends in the industry.

About Global ABS 2022

Global ABS 2022 is the biggest event in the world centered around the ABS and the securitization market. 

Securitizations are still at the top of the agenda for market participants and regulators thanks to the benefit they offer in facilitating institutional investors’ access to real assets and financial assets originated by banks and digital lenders and the opportunity for banks to de-risk their balance sheets and access cheap sources of funding.

 What is happening in the overall structured finance market 

The structured finance market remains solid and is attracting continuous interest from both issuers and investors. The EBA confirmed securitizations as being pivotal for a well-functioning financial system and the evolution of the market central to the agenda of the regulator.

Regarding portfolio performance in the current scenario – characterised by high inflation, rising interest rates, and the spectrum of a recession – all panelists confirmed that portfolios are solid for the moment and that no major increases in defaults have been noticed so far. 

One of the major concerns of lenders is related to inflation and how it will be absorbed by salary increases. The asset classes most at risk under this perspective are considered: (i) consumer unsecured loans, (ii) auto loans, (iii) loans to self-employed, and (iv) mortgages.

The one thing that the current high-inflation scenario is changing however is the risk appetite of cash-rich institutional players, such as pension funds, insurance companies etc., that, according to panelists, are starting to invest in digital lending products, looking for diversification and higher returns on investments. 

Limited growth in EU

The European market has so far lacked the ability to grow and is lagging behind compared to the United States: historically low-interest rates pushed banks to opt for alternative sources of funding reducing supply. On the demand side, difficulties to absorb fixed costs are keeping investors away.

Growth of the synthetic markets

Synthetic markets are growing as there is an increasing appetite from banks for on-balance sheet transactions (that can now be classified as STS) and insurers. The latter are growing their ability to assess credit risk and widening their focus from single names to portfolio exposures. Financial guarantees are the tool elected given their ability to ensure the right level of protection without exposure to mark to market volatility. 

The impact of Basel IV

Basel IV will impact banks with more stringent requirements, paving the way for new SRT deals. 

The role of regulation

After the initial negative attitude to what was considered just regulatory burdens, the market is getting used to STS securitizations and ESMA reporting, notwithstanding the level of regulation imposed on the sector seems to be “unfair” if compared to similar products such as covered bonds

 Italian NPLs

  • The market will continue to be driven by GACS, with upcoming updates 
  • Existing GACS showing a mixed performance with c. 50% ahead of business plan and 50% below, although collections timing are improving after the clogs created during the pandemic is relaxing
  • The traditional methodology of assessing transactions based on comparison with a business plan is becoming inadequate as it is strictly connected to the underlying assumptions and methodology used by Servicers, which become more conservative after the pandemic. Profitability is emerging as an alternative KPI to properly measure transactions’ performance.
  • The secondary market is growing and is expected to be pivotal for many participants in order to manage the liquidity needs

The role of data in the securitization market

  • The increased level of data and information and the standard for data reporting imposed by the regulator has been widely considered a very positive initiative bringing more transparency to the market. This has helped all participants to improve due diligence, thanks to better comparability across different transactions and better credit assessments.
  • On the other hand, many are still struggling in complying with new standards. These standards are in fact considered too detailed (especially when it comes to vintage assets) and the format required is too complex to to be used by investors, resulting in the need for additional custom reporting. 
  • ESMA is currently working on new reporting standards. The new templates are expected to solve most of the issues mentioned above and meet the needs of the market players. There is also the possibility that the templates will be used for more than just regulatory compliance.
  • This includes focusing on data quality rather than quantity: ESMA aims to avoid the need to report to multiple counter-parties and to have one single source of truth. Furthermore, instead of providing multiple views of the same data, the focus should be on loan-by-loan data information leaving to the final user the option to aggregate based on specific needs.

ESG insights for the securitization market

  • ESG seemed to be at the centre of every panel, with most discussions revolving around what is the right level of ESG factors adoption for different asset classes, data availability, regulation, and standardization needs.
  • The need to provide incentives to invest in sustainable assets should find a balance between the impact on the risks perceived (which is not lowered by sustainability per se) and the support for lower economics in order to grant the development of the market
  • The EIF and EBA seem to agree on the direction of ESG securitisation strategy. Independently from the type of approach considered to be ideally superior (sustainable collateral or use of proceeds), market players are favouring the most pragmatic tactics: having a low number of readily available sustainable assets while supporting their creation in the near future. This would most probably incentivise the green transition investments, later enabling securitisation to follow a green collateral approach.
  • ESG reporting and required templates were discussed as a necessary development for the market to have clear guidelines to drive the originators and debtors on providing this information. Such information will have to be provided in granular and robust forms so that the risk of greenwashing can be minimized. As we speak, there were 30+ different standards that market participants mentioned.
  • The focus on ESG has raised new interesting ideas around new markets, such as the solar market, carbon credit intermediation, and green transformation finance.
  • From an investor’s point of view, ESG is a crucial element to be considered not only to evaluate an investment but also to be monitored across the life of all transactions, with the final goal of providing an additional element to drive the investment strategy.
  • From a lender’s point of view, incorporating ESG is very tricky. This challenge becomes even more significant when it comes to consumer lending. For example, in relation to the environmental factors, there is a clear trade-off: it is very difficult to have strict control on how borrowed money is spent without slowing the process and reducing the efficiency – this would mean going back to a more traditional process. What can be done, instead, is to analyze the carbon emission of the equivalent footprint of the portfolios, linking it to the behavior of borrowers (analyzing demographics). Furthermore, when it comes to social factors, the significant trade-off lies between the positive impact generated by lending to people with a poor credit history or low income and the embedded credit risk. 
  • ESG is here to stay, and regulation will soon intervene. The call for lenders is to start to voluntarily report ESG data as soon as possible, to be prepared and get a competitive advantage when regulation kicks in. 

 Technology’s impact on the market

  • The European market has an estimated funding gap of $1 – 1.5tn. As banks are not able to finance it all, this represents a huge opportunity for fintech
  • Fintechs are still considered “subprime lenders” by some market participants given their limited track record (especially during downturns) and their focus on unbanked lenders
  • Technology plays a big role in making this non-bank lender and relatively new asset classes more appealing: better sets of data, accounting integrated software and interactive dashboards with real-time updates on portfolio performance are ways for lenders to gain the trust needed from investors, becoming more institutional, providing better insights than their more traditional comparables with the final result of putting lenders in a better shape to access capital markets.
  • Blockchain can be a game-changer for the industry, helping both the issuance and the management of transactions, although some limits are still seen in matching on-chain securities with off-chain assets

Global ABS 2022 Barcelona: Wrap-up 

All panels and discussions came to the same insights: the market needs high-quality standardized data, and in particular, the need for ESG-related data is becoming more and more relevant. In addition, the market actors that do have the data are struggling to manage it efficiently and take advantage of all the information at their disposal, simply because they are lacking the right technology and tools. 

We have perceived a lack of action in terms of investing in technology that can enable data leveraging. The approach taken by market players is in general rather passive: they expect that some external entity (i.e. the regulator) will set the standards and rules. However, as they don’t get actively involved in the process, what is implemented often does not fulfill real needs.  The situation in Europe looks very different from the US, where financial institutions and investors took the lead and reset the market rules after the GFC hammered the sector and again set its own standards for sustainable transactions without the need for a supranational entity. 

Market actors cannot afford information asymmetry anymore. Considering the regulatory actions in the past few years, data will eventually become a commodity, and only the players that are well equipped to properly manage it and extract valuable insights will gain a competitive advantage in the market.

At Cardo AI, we strongly believe that European financial institutions and investors should change the pace and take a proactive approach in setting data requirements, creating partnerships amongst them and with tech companies in order to enforce and activate this standard. To find more about our technology, check out our dedicated web page.

Customer success story Cardo AI: Medium size Bank

Our customer success story

Do you want to know how we help our clients to make better decisions and scale their operations? Read our customer success story below!

  • Client

    Medium size Bank in Italy investing in securitization transactions

    Italian medium size commercial bank investing across different Securitization Vehicles (SPVs) in invoice trading, SME loans, Public Administration loans and NPL portfolios

  • Main challenges

    • Calculate concentration statistics across 10 securitization vehicles
    • Monitor contract limits and covenants
    • Digitalize the internal reporting processes
    • Calculate regulatory capital (RWA) for every securitization vehicle
    • Produce STS (Simple, Transparent, and Standardized) of ESMA (European Securities and Markets Authority)
  • The solution

      • Using Cardo AI modern architecture of Equalizer product, the bank was able to onboard €1mn of detailed loan data in only 80 secs instead of 2 hours
      • Eliminated calculation errors and reduced of 5% regulatory capital requirements
      • Drill down functionality to every investment line across SPVs through advanced filtering functionality and allocated every data point in his portfolio in 0.2 secs. Before Cardo AI, analysts spent 3 days to calculate the exposure on a single name level
      • Automatic deployment of STS (Standardized, Transparent, and Simple) regulatory reporting to be provided external investors to the vehicle, complying with ESMA (European Securitization and Markets Authority) rules
  • The Results

Do you want to know more about our products?

Continue reading

What's it like to work in CARDO AI

What’s it like to work in CARDO AI

Are you wondering what’s it like to work in Cardo AI? Are you thinking about whether this could be the right workplace for you? If that’s the case, in this article you will find everything you need to know about the employee experience in Cardo. 

We interviewed some of our team members and summed up their thoughts about working in Cardo AI, from the work culture to the benefits that the company offers. Keep on reading to discover life at Cardo!

Cardo AI: A growing fintech

If I had to describe Cardo in one word, it would be movement. Everything has been moving since the very first day and hasn’t stopped evolving. We have never been bored of anything. We always had new ideas to implement, new projects, new people to bring in, new offices to open.

Klajdi – Team Lead

The fintech industry is a very dynamic and innovative field, and so is Cardo AI. We are constantly evolving and are becoming one of the fastest-growing companies in Europe. 

We were recognized as one of the top 20 European scale-ups by EIT Digital (leading European digital innovation and entrepreneurial programs) in 2021 by the European Commission. Furthermore, we won first place at the European Big Data Value Forum.

What is it like to work in Cardo?

“Here I can truly scale up my career and give it the direction I want to”. 

This was the main thought going around my mind just a few days after starting to work in Cardo AI; a feeling not based on what others had told me during my first days of the onboarding process, but rather on the way I saw every employee being treated in all departments. 

What I noticed initially was that everyone had their work mindset oriented towards collaboration, self-development, and common growth.

The goal of Cardo AI is, in fact, to give employees the best possible environment to work and feel at their best.

Our Cardo AI office in Tirana
One of our offices in Tirana, Albania

How do we ensure that? Here are some of the key elements we focus on at Cardo and that we offer to our team members:

1. Remuneration package

We’re looking for the best talents to join the company and help us develop great products. That is why one of our most important values is ‘Pay top of the market’. 

We offer a very competitive salary and, besides that, we also give the opportunity to take part in a stock option plan. What does this mean in practice? That you’ll have the chance to become part of the ownership of the company and become a real shareholder of Cardo. 

2. Make a real impact

At Cardo, all employees have the chance to make a real impact. 

Every day, our products are making a difference for our clients, empowering them to make better investment decisions. We are radically changing the way private markets are operating, and by joining Cardo, you can be part of it. 

We are all problem solvers. Regardless of your experience, everyone’s opinion is heard. 

It doesn’t matter if you’re a junior, or if you just joined cardo. Your opinion and ideas will matter.

Klement – Back-End Engineer

3. Solve complex challenges

One of the things our employees value the most about Cardo is the fact that here, you can tackle highly complex problems related to the private debt market. The complexity derives from the fact that we have our own products and that we follow their development from the initial idea to the implementation and rolling out of the solution. This means we have to continuously improve them, thinking about better architecture, in order to be scalable and include new features along the way. 

If someone is ready to tackle complex challenges, that is the place to do that. 

When I joined Cardo, there were about 20 people at the company. However, I could clearly see the passion towards building the best products in the market. 

Now we’re more than 80 employees and have two amazing products. We are growing a lot, but so is our level of passion and commitment towards technology.

Xhoana – Business Analyst

4. Agile methods and processes

At Cardo AI we are committed to applying properly agile and scrum principles. 

With a wholesome approach to applying the Scrum framework, and clear roles and responsibilities, we make sure to give every one of our co-creators a reputable voice in their user stories. We don’t skip inclusive planning and are very thorough on our Retrospectives, in order to improve the overall experience sprint after sprint.

Work in Cardo AI – Our Culture

At Cardo AI, we truly want people to thrive and become their best selves. We have a Talent management & leadership team that is committed to creating the perfect environment to do just that. 

What I love the most is the culture that we managed to create. We have carefully selected every person that has joined the company in order to have an environment that is welcoming, that is a fun place to work in. You are actually excited and happy to go to work every day.

Klajdi – Team Lead

1. Work-Life Balance

Solving big problems can keep you up for long hours, but this is not the way to go. We have assigned a WORK-LIFE balance officer (WLBO) that is responsible for our engineers in finding solutions and avoiding any situation of potential stress and burnout. 

“We are focusing on designing and applying common-sense Work-Life balance rules of thumb so everyone ensures they safeguard the space they deserve to receive the adequate replenishment required for their creative effort. Failure to achieve such is also an offense for our application of the Agile philosophy: If we don’t respect timeboxes, why do we even bother iterating that way?”

Rubin – Product Delivery & Growth Lead & Work-Life Balance Officer

2. Team outings and events

We bond outside of work over games, happy hours, concerts, chess, PlayStation, karaoke, the game of mime, volleyball, yoga, and more. Every two weeks, at the end of every sprint, we gather to enjoy drinks and play games. We love to organize team retreats on the beach and in the mountains.

These activities allow us to connect with employees outside of our teams and get to know each other better. 

Cardo AI team retreat at Theth
Cardo AI’s team retreat on Theth, September 2021

3. Flexible and remote working

We know very well that our most productive times don’t necessarily fit in the 9 to 5 schedule, and that the office is not always the best environment for every employee.

Our goal is to facilitate and encourage each individual to play to their strengths, in order to feel at their best and achieve a healthy work-life balance. That is why at Cardo we give team members maximum flexibility to choose the setup and schedule that works best for them, whether that’s at home, at one of our offices, or at another location.

We are a results-oriented business – face-time is not required, although you might just want to spend your entire day with our great team. 

Cardo AI's team working from the beach during a company retreat
Cardo AI’s team working from the beach during a company retreat

4. Entrepreneur friendly environment

At Cardo, we have several initiatives to promote entrepreneurship within the company. Here are some of them: 

“Intrapreneurship in Cardo AI” – new ideas to launch new products, features, or new technologies proposed by team members, and a side development team is created to come to MVP and production stage.

“Cardo AI Startup Incubator” – we select 2/3 ideas per cohort and everyone that wants to follow any of the startups is free to do so. At the end of the program, both Cardo AI and everyone from our team can invest in the startups, so we all become entrepreneurs.

Now that you know what it is like to work in Cardo, you just need to apply to one of our open positions! Check them out here, and if you have any questions, don’t hesitate to reach out to us on Linkedin, Instagram, or Twitter!

Introducing Marti – CardoAI’s chatbot!

The chatbot trend has taken the commercial industry by storm, where having bots and digital assistants is becoming not only the norm but the primary channel of communication for providing services to prospecting clients.

With increasing interest and research on the Artificial Intelligence (AI), Natural Language Processing (NLP) and machine learning, bots are becoming progressively more efficient. Nowadays, the usage of chatbots is ubiquitous and synonymous with a booking holiday or ordering in restaurants.

However, in Fintech, the chatbots serve a more tailored purpose supporting the user along its journey on an application. From setting up accounts in digital banking solutions, assisting in the lending process via online forms to the lending robots that carry out investment strategies for retail or institutional investors.

Chatbots have become an intelligent solution for the significant financial and banking industry. They have eliminated the long queues at their branches, saving time and energy, giving customers the liberty to get the work done from anywhere without compromising the safety. [1]

For this reason, CardoAI’s next project is developing and improving Marti – the chatbot integrated inside the digital lending product to guide our users and help in navigating the platform with a personal assistant.

Say hello to Marti!

Upon login on the digital lending product, Marti pops up ready to accommodate the user’s needs through the interactive chat on the side that is available at all times.

Marti greeting users upon sign in

Thanks to Marti, all our users are now able to check their portfolio’s balance, the status of trades in different countries and currencies and several other statistics that will help the user to grasp the portfolio’s position and performance through a simple request by chat.

A sample interaction with Marti

Marti is also clever enough to suggest intents – possible actions that the user might request and information he wants to retrieve in a couple of seconds.

Not only can the bot display real-time financial information, but it also processes this data to provide insights and graphs based on it.

Marti displaying in-chat graphs

The chatbot is capable to depict numerous types of charts such as line charts, doughnut charts, allows the user to select and download files within it and even change the theme of the whole platform!

Our data science team goal is that through Marti, to automate and facilitate all the operations that are already available within the platform by enabling the end user to retrieve data and navigate the platform in the easiest way possible.

Disclaimer: The statistics shown on this post are obfuscated to preserve our clients’ data.


[1] How AI Chatbots Play A Role In The Fintech Industry

This was a collaborative post between myself and Elitjon Metaliaj.

From leveraging data to DATA LEVERAGE

Data leverage and securitizations

What is data leverage and how can you use this concept to accelerate your business growth? Read this article to find out more about the process of leveraging data.

Imagine being a bank, an asset manager, or an investment fund with a well-established franchise in the loan industry that wants to expand its activity by tapping into new markets, products or geography. You would have quite a large database covering your exciting activity in terms of both clients and loans.

But what about a new market you want to target? Do you need to start the activity with a blind eye and collect information from scratch putting your capital at stake and waiting for months or years before having a solid base of data that can help you succeed?

Is there an alternative way?

So far financial institutions have been very vigilant in optimizing the use of their capital: from regulatory capital for banks to equity capital for more unregulated entities the key target is to extract the highest return. The most common way to increase the return of available capital is through leverage: gaining access to extra resources allows to amplify ROE.

What is data leverage

During this time the concept of leverage has been extended to other fields, among which data. The expression “leveraging data” indicates the process to turn raw information into valuable actionable insights.

Leveraging available information is a good practice and companies should take advantage to make data-driven decisions at a strategic and operational level.

Is this all?

What if instead of just maximizing the use of available data, one could actually increase the amount of data available?

I am not talking about expanding the information available via data enrichment or the use of so-called alternative data (which have quite a hype at the moment) as they would only give more dimensions to look at but not increase the actual data available.

Neither am I talking about buying external datasets.

Data leverage and securitizations

I guess it’s about time I get to the point…

Have you ever thought to apply the concept of leverage to data? Not in terms of leveraging available data but actually increasing the data available through an approach that literally mimics the concept of financial leverage: apply a multiplier on the data a financial institution has available.

The concept is very simple: every time a financial institution extends a loan to a counterparty (or buy a bond) it gets data about a single counterparty (sector, geography, rating/FICO score, financial ratios, income, etc.) plus we can track the performance of the transaction over time (delays, renegotiation, defaults, recoveries, etc.). To increase the datapoint available, the financial institution should increase the number of transaction loans lent, or…..

It can invest into a SECURITIZATION!

By buying a note (or just part of it) into a securitization, investors gain exposure to the whole underlying portfolio of loans. And portfolio positions range from THOUSANDS for the smaller SME loan pools to HUNDRED OF THOUSANDS for pools made of consumer loans.

How long and what would it take to originate the same volumes in terms of time, costs, capital, organization, and all the rest? A rhetorical question really as it is not only time-consuming but resource-intensive.

All clear then? But can I just invest €1 into a AAA senior note and get loads of data?

Unfortunately, it’s not so easy…

Notwithstanding the requirements of the Securitisation – Regulation 2017/2402 gives investors the right to receive loan-level information on each transaction, however, in most cases, there is not a button (or a magic wand) that allows an investor to retrieve data in a standardized format nor in a timely manner. Data are indeed typically made available quarterly via pdf reports (or excel in the best scenarios), making it very hard for investors to translate them into meaningful and actionable information.

So data leverage is just a (nice) theory but cannot be realized in the real world?

Actually, there are solutions now!

Nowadays there are technologies, like CARDO AI that facilitate data retrieval from multiple sources with a data health check, as well as standardize them.

This process requires just a couple of clicks and takes just a few seconds (don’t even try to compare it with your excels!).

Now that I showed you how to leverage the data (which might have become BIG DATA with the appropriate multiplicator), here you have some examples on how to use them:

– Data can be used by servicers to adjust investment decisions in dynamic transactions (e.g. those with a ramp-up or reinvestment period or with a higher turnover such as trade receivables) to optimize the risk-return profile of the pool.

– They can be used by risk management departments to assess the rating of a transaction (e.g. applying scenarios deriving from data of comparable pools) or assessing the possible impact connected to particular events that affect a sector (e.g. tourism during the pandemic) or geography (e.g. after an earthquake, a flood or a particularly cold winter).

– They can be used to drive decision-making on new investments, including comparing scenarios provided by the arrangers, assess the impact of a new transaction on the diversification of the overall portfolio, negotiate a price that is more in line with the risk profile of a particular pool of loans.

– In the future, data will likely be used to assess the ESG profile of a securitization’s collateral pool and compare it with that of other transactions

About the author

Marco Masotto

Marco Masotto

Marco Masotto is the Head of the Securitization platform, Equalizer, at Cardo AI. Prior to joining Cardo, he worked at Mediobanca in the Lending and Structured Finance Division where he originated and executed several lending transactions and later acted as Credit Portfolio Manager. Marco holds a MsC in General Management from Bocconi University of Milan.

Check Marco’s articles

Continue reading


What are the challenges related to the ESG incorporation in securitised products? PRI (Principles for Responsible Investment – the world’s leading advocate for sustainable investing, founded on a United Nations initiative) has recently published an interesting report on the incorporation of ESG in securitization products.

On one side regulators are increasing transparency requirements on sustainable related information on investment products. On the other, client demands and risk management are driving demands for considering the long-term impact and sustainability of investment choices. As a result of these forces, investors and asset managers are widening and improving ESG policies, but few of those are tailored for securitization products.

ESG information wanted by investors

Source: PRI

For ESG incorporation in securitized products to be effective, a holistic, multi-pronged approach needs to be developed. Compared to other asset classes the securitization market shows some additional complexity though including:

Transaction structure: which implies a multi-level assessment of practices and policies including Sponsor and/or Issuer, Originator, Servicer, Deal structure, Loans, Collaterals or Guarantees. This is further complicated by the fact that parties can occupy multiple roles (e.g. servicer and originator) or involve private entities, which tend to be less transparent.

Adequate data: Practitioners consider the ESG information in current deal documentation, marketing materials, and underlying portfolio disclosures insufficient to comprehensively analyze most securitized products.

– No ESG reporting standards for servicers/originators: Relevant ESG information on collateral often lacks uniformity and is not comprehensive.

– A diverse pool of underlying assets: the complexity and diversity of underlying collateral (and the sectors covered) make it difficult to build proprietary ESG frameworks that can be used for assessment.

– A lack of coverage by third-party ESG information providers: ESG information providers have limited coverage of securitized products. This is not surprising given that responsible investments originally developed in equities and only recently expanded to debt capital markets. Moreover, the leveraged finance market includes a high proportion of privately owned and smallcap companies that tend to disclose less information

– Lack of a clear ESG premium: differently from the so-called greenium that typically applies to green bonds, securitization transactions do not show meaningful price differentiation when incorporating ESG criteria[1]

As a result, of the 2,000 signatories that reported on their investment activities to the PRI in 2020, only 215 indicated how they incorporate ESG factors into their securitized product investments.

ESG incorporation in securitized products is at a very early stage

Source: PRI

To find a solution to the complexity above and sustain more ESG driven securitizations, PRIs have identified data quality, availability, and consistency as the main solution: a combination of robust in-house and third-party data sources is likely to drive investor confidence in ESG incorporation across securitized credit markets.

For further information please refer to the following link:

[1]Based on European ESG CLOs that were issued between March 2018 and August 2020 versus traditional CLOs

CARDO AI supports in a new securitization

CARDO AI supports with Banca Valsabbina and Azimut in a new securitization of € 200 million to support Italian SMEs

Details on the transaction

This transaction follows the previous securitization of € 100 million launched in September 2020, as part of the “Slancio Italia” project.

The new resources of € 200 million will be disbursed on through loans to SMEs with a maximum duration of 6 years, with 1 year of pre-amortization, and an amount ranging from € 50,000 to € 1,500,000 with a guarantee of up to 90% of the Italian Governmental Central Guarantee Fund (in Italian: Fondo Centrale di Garanzia) for SMEs.

This new securitization will help SMEs to cope and overcome the crisis linked to the spread of the pandemic. The operation, which sees the collaboration of – ​​the Italian fintech that supports SMEs in accessing credit – with the Valsabbina Bank – Brescian bank present with 70 branches in Lombardy, Veneto, Emilia-Romagna, Piedmont, and Trentino-Alto Adige – Azimut – one of the biggest asset managers in Italy – and CARDO AI – providing institutional investors with advanced technology for private markets to make better investment decisions, is aimed at supporting the real economy.

Compared to the operation of September 2020, the amount available to SMEs has increased from € 100 to € 200 million, thus guaranteeing Italian SMEs firepower for their growth strategies and better crises navigation.

The loans will have a maximum duration of 6 years, including one year of pre-amortization, an amount ranging from € 50,000 to € 1,500,000, and the guarantee of up to 90% of the Central Guarantee Fund (in Italian: Fondo Centrale di Garanzia) for SMEs. The companies applying for the loan will be evaluated within 24 hours based on the credit assessment conducted by through the use of proprietary artificial intelligence algorithms. The automatic process is then followed by verification of a credit analyst and subsequently the underwriting and disbursement of the loan within a few working days.

The Slancio Italia Project

The “Slancio Italia” project was launched at the beginning of the pandemic, in March 2020, and is managed by and financed by credit funds such as Azimut as part of the strategic agreement between the two companies established in May 2020 with the creation Azimut Capital Tech. Azimut also covers the fundamental role of the underwriter of the junior part through its private debt funds. Banca Valsabbina supported the two companies as the arranger of the transaction, Account Bank, as well as underwriter of the senior and mezzanine part, for a maximum commitment of € 180,000,000. CARDO AI, a fintech supporting institutional investors in modernizing their portfolio management with advanced technology and data science. In this particular operation, Cardo AI has acted as the data agent role, facilitating an end-to-end data management and ad-hoc reporting creation. Every institutional investor that has subscribed the notes of the securitization vehicle has received a dedicated access to the Cardo AI platform, enabling a complete transparency at the begging and throughout the lifetime of the operation.

Hogan Lovells Studio Legale provided legal assistance as transaction legal counsel, with a team led by Partner Corrado Fiscale. The Master Servicer will be Centotrenta Servicing S.p.A., while Banca Finanziaria Internazionale S.p.A. (in short Banca Finint) operates in the roles of Paying Agent, Issuing Agent, and Representative of the Noteholders (in short RoN).

Since the outbreak of the pandemic, businesses have not stopped needing liquidity. According to the most recent Istat data, in 2020 there was a decline in the turnover of service companies by 12.1%, the largest since 2001. “The loss of turnover affected almost all the sectors surveyed, particularly in the activities most affected by the restrictions related to the health emergency”, writes the statistical institute.

In this context, in 2020 Fintech came to the rescue of companies for 1.65 billion euros (ItaliaFintech data), with an increase of 450% compared to the 372 million again disbursed in 2019. Also the number of new Italian companies getting support by Fintechs, which rose from 1,092 in 2019 to 5,464 in 2020.

Gabriele Blei, CEO of the Azimut Group, comments: “This initiative is in line with our project of Banca Sintetica, which is an alternative to the traditional banking model to support the needs of small and medium-sized Italian enterprises through the use of fintech platforms with which to finance businesses effectively and quickly. Our goal is to deliver to Italian SMEs, loans of 1.2 billion euros over the next 5 years and to do so we can count on the support from our diverse range of alternative customer lending strategies both private and institutional. A project that allows us to create new performance opportunities for the capital of our customers, fueling the virtuous circle between private savings and businesses”.

“After the securitization carried out last year, we are happy to be a partner of this new operation, which doubles the resources made available to SMEs – said Marco Bonetti, Joint General Manager of Banca Valsabbina – Our institute will continue to look favorably on initiatives like this, which on one hand are an important element to support SMEs, which in particular in times of crisis such as the current one should be supported especially in terms of liquidity, and on the other hand confirm the importance and value of the cooperation between the traditional banking system and fintech, a sector in which is positioned as one of the most attractive” Bonetti concluded.

“We believe that the path of collaboration is the main way to truly innovate the finance world and make it more efficient and more functional to needs, including emerging ones, of the real economy – comments Ivan Pellegrini, CEO of – In a delicate period like what Italy is facing, we felt the need to make our skills available to provide resources to all those healthy SMEs that are having moments of difficulty but want to restart and look to the future. This is why we are pleased to have partners such as Banca Valsabbina and Azimut, with whom we have created a solid and structural alliance: for us, it is an evolution, we are no longer just providers of loans to the real economy, but technological enablers for traditional finance”.

“Data is now the world’s most valuable asset. We see every day how it empowers smarter and safer investment decisions and how it can bring unparalleled transparency and intelligence by replacing antiquated manual processes and streamlining the reporting workflow – comments Altin Kadareja, CEO of Cardo AI.  – As data agents, we are thrilled to participate and support this securitization transaction granting investors easy access to the normalized loan-level data along with fully integrated analytics and reporting tools, where users can review composition, analyse performance, and project collateral and tranche cashflows.

“ con Azimut e Banca Valsabbina in una nuova cartolarizzazione da 200 milioni.” Finance Community,

Sleep Tight with Automated Testing using pytest

Sleep Tight with Automated Testing

In the initial steps of my career, when I just started writing software, only the senior developers of my company felt responsible to write tests for their code. Over the years, this has become mainstream. But “mainstream” does not mean “universal”. Plenty of developers still do not have comfort with, or even exposure to the unit testing practice, let alone worry about automated testing. And yet, a form of peer pressure causes them to play that close to the vest.

So I reach out to these folks to say “Hey, no worries. You can learn and you don’t even have to climb too steep of a hill.” I’d like to revisit that approach here, today, in the form of a blog post.

Let’s get started with unit testing in Python using pytest, assuming that you know absolutely nothing about it. Although examples are beginner-friendly, this article is not going to be a tutorial on how to write tests with pytest. Its docs already make this. I will be more focused on the idea of testing in itself.

Intro to automated testing

Automated testing is an extremely useful bug-killing tool for the modern Web developer. (Django docs)

As a definition, automated testing or test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. In other words, it is a piece of software completely separate from your source code, responsible to make sure that the source code is working as expected.

What kind of problems do you solve or avoid when you write tests?

  • When you are writing new code, you can use tests to validate that your code works as expected.
  • When you are refactoring or modifying old code, you can use tests to ensure your changes haven’t affected your application’s behavior unexpectedly.

Why do we write code to test other code? Why aren’t we testing manually?

Let’s say you are done with the development of a new feature and ready to deliver it to your Quality Assurance team. Your QA team will spend some time to make sure that all the edge cases are covered and the feature is ready for production. After deploying to production, you are asked to modify or add something new on top of that feature. Then you make all the required changes to fulfill the new requirements and deliver them to your QA team.

Can you spot the problem above?

Now, the QA team is going to make the same manual tests as before, to make sure that modifications to the code didn’t break anything and all edge cases are still covered. It means time, lost time for the same tests, again and again.

What is the solution?

The solution is automating those tests. When you have automated tests, you can run them anytime you want (in the middle of the night), in any environment you want (on your development machine or a CI server), and be sure that you haven’t broken anything in your code, or even if you broke something, then you have a clear idea of what it is. In addition, automated tests are fast, faster than any QA team.

So, yes, we should make some automation on tests, but how? Unit tests can be a good start. They are easy to write and easy to maintain. So what is a unit test?

Automated testing: Unit tests

Unit testing is a software testing method by which individual units of source code are tested to determine whether they are fit for use. Therefore, Unit tests take small pieces of source code and check if those pieces are operating as expected under given conditions. Also, Unit tests find problems early in the development cycle.

Finding bugs in the source code before the release is critical. The cost of finding a bug when the code is written is way lower than finding it later. Finding a bug is just the beginning: after you find a bug, you have to find what is causing it and how to solve it. Making all of those operations on a module that is already in production is very expensive in terms of time and very stressful for the developer. You need to be real quick, the code is in production so the bug is too and your users are facing this bug. You need to be sure that after fixing the problem you haven’t created some new ones.

Consider that Unit tests are a perfect way to find those problems and tell you exactly where the problem occurs so you can skip the detection and identification of the bug and jump directly to solving it. Such Unit tests have a clear result. They are either passing (which means there is nothing to show but a success message) or they are failing (in which case the failure message will contain the exact check performed by the test that has failed). The result of a failing unit test contains a lot of information that can help you have a better idea of what is going wrong.

Real world example with a demo pizza app

Now let’s jump into a real-world example and show how unit testing works. We are going to work on a demo pizza application. Below is a simplified diagram that describes the application.

Demo Pizza App related to automated testing guide
Demo Pizza App

So the diagram says that:

– Each topping and each size has its price
– Each pizza has some default toppings
– For each pizza order, we have to select a pizza, a size, and extra toppings optionally
– Each pizza order is linked with a single order
– Finally, each order holds some general information about the order

We are going to focus on writing some unit tests for the price calculation.

How is the price calculated?

1. Each pizza has a base price, which is the sum of the prices of the default toppings
2. Each pizza order has a price, which is the sum of the following:
2.1. price of pizza
2.2. price of size
2.3. sum of the extra toppings
3. Finally, each order has a price, which is the sum of the pizza order prices

Let’s have a look at the Pizza model class which we are going to test.

Pizza model

So we have some toppings, each of them with its price, and the sum of those prices gives us the total price of a Pizza instance. Let’s write some unit tests for this.

In the gist above we have two tests for the price calculation of a Pizza instance. They check the price calculation of a pizza with and without toppings. Let’s analyze them.

  1. Django DB mark

So unit tests in pytest are not supposed to access the DB by default. To be able to access the DB, we use this mark from the pytest_django package.

2. Preparation phase

Here we create and link all required instances with each other, pizzas and toppings. We assign a value to all of the required attributes, especially to price.

3. Calculating results

We get the actual price by calling the total_price property of the Pizza instance. This property is going to make its calculation, and it is supposed to return a value at the end.

We get the expected price by summing up two toppings of the pizza instance.

4. Assertion

It’s time to compare the values: if the price we get from total_price property is the same as the expected_price the test will pass, otherwise, it will fail.

We can run the tests by using the command pytest in a terminal window and here are the results:

Pizza price test results related to automated testing
Pizza price test results

So pytest started to search for all tests inside the project, collected 2 tests, and ran them. The configuration for pytest is done by using a ini file called pytest.ini located at the root level of the project. Let’s have a look at the configuration file.

1. DJANGO_SETTINGS_MODULE = pizza_app.test_settings

We have defined a different settings file for Django settings which will be used by pytest when getting Django up. This is a practice to speed up the testing process. So for example, if your model fields are supported by SQLite you can use it to make the DB a lot faster while testing. You can use a different password hasher and remove password validators to speed up the process of creating users. Also, you can change the DEBUG setting which is False by default when running tests to execute the tests in an environment as close as possible to production. You can view my test_settings file.

2. python_files = test_*.py *

Here we have defined the naming convention of test files. So every file name that starts with test_ or ends with _tests or is exactly tests will be considered as a test file while discovering the tests by the discoverer.

3. addopts = –reuse-db –nomigrations

Here we are saying that after finishing with test execution, the test DB that was created should not be destroyed, in order to be reused. Furthermore, when creating the DB, pytest should not inspect the Django migrations, but instead go and check the models directly: this option can be faster when there are several migrations to apply for each app.  Running pytest in the terminal will use the configurations provided in the .ini file. These configurations can be overridden when running the command, in the form

pytest --create-db

The reason you may want to use this command is that, when you have any changes to your database schema, you can run the tests once with this command and a new database will be created. After that, you can continue running your tests only with the pytest command so all ini configs will be used again.

Write clean tests

Some developers think it is OK for the testing code to be dirty and not compliant with all the conventions of your language, unlike your source code. I do not agree with that.

Let me describe to you the cost of writing dirty tests. At first, it will be all fine, you wrote some tests super fast, the code is dirty, but that doesn’t matter because they are just tests. After some time, the requirements change, so you have to change your tests too. Now you have two options. The first one is to spend the required time modifying the “dirty testing” code. The second one is to place a skip mark to those tests, because you are almost sure that your code is working and plan to deal with them later on. Even if you want to spend time now to fix broken tests, there will always be a tight deadline that’ll make you choose the second option. And trust me, if you skip those tests, there will never ever be free time to fix them.

So what is the cost? Time. Lost time.

Remember the reason of writing tests? By writing dirty tests, we actually wasted our time writing them and will waste time again by fixing or skipping them and facing bugs in production.

So, my suggestion is to always consider your testing code the same way you consider your source code. Write it as clean as you can.

Now let’s review our testing code. Is it clean? No.

Preparation phase

We are not interested at all in what values will any of the attributes have. Even price. We just want to create a pizza with some toppings. Imagine having to create an instance of a class with dozens of required fields. There must be an easier way.

Comes in: model-bakery. This is a must-have package if you want to write hundreds of tests in Django. This package is capable of creating instances of a class by providing only the class name. So it goes as follows:

It is as simple as that but can we go further? We are doing almost the same thing but without toppings in the second test too. So we can move the creation of a pizza in another module, let’s name it

And the testing code:


The testing code is a little clearer now, but as you may have noticed, we have two tests that test the same thing: the price of a pizza. The only thing that changes is the number of toppings. To make it more simple, we can use one of the best features of pytest, which is parametrization. What we want to parametrize is the number of toppings, it will be given to the testing function as a parameter and pytest will run the test more than once by giving the next number of toppings every time.

@pytest.mark.parametrize(‘number_of_toppings’, list(range(0, 10)))

This line of code makes this test run 10 times, each time with more toppings. So because 0 number_of_toppings means a pizza without toppings, we do not need the second test anymore. This is the output of pytest -v command (-v: verbose, display more information):

running parametrized tests for automated testing
running parametrized tests

Mocking certain operations

Now we have a general understanding of how to approach tests and how to make them simple and clean. Another problem we will be facing while testing our web application is costly operations. By costly operations, I mean some side effects of source code that are out of the testing scope but will be executed while running the tests. For example, let’s suppose that for every order created we need to print out a receipt. Furthermore, let’s suppose that the actual printing is done by a microservice, which we contact via an API, providing the order details. Naturally, we don’t want to print out anything while we are running our tests. This means that, while testing order creation, we need to find a way to skip this API call. The mechanism that provides what we want is called mocking.

There is a pytest way to achieve this. It’s called the monkeypatch: this fixture provides some helper methods for safely patching and mocking functionalities in tests.

Let’s assume we have the following code to save and print out the receipt.

What we want is to mock the post method of the requests module to do nothing instead of posting to the receipt microservice. We just want to test if the price is set while saving an order instance. The testing code:

Monkeypatch is a pytest fixture, so we can directly include it as a parameter in our testing function. After including it, this line does the work:

monkeypatch.setattr(requests, 'post', mock_post)

This command replaces the post method of the requests module with our mock_post function, in the scope of the test. Now, whenever (inside the test) is called, our mock function will be executed instead. If, for some reason, I need the response of the post method, I can write a mock class, which will behave as the original response, i.e. implement its methods that we need.

Mock response class:


We can play around with the MockResponse class as we like to fulfill the requirements of the code that we are mocking.


Our automated testing will not always pass. Sometimes they will fail, which is precisely the reason why we write them: to fail when they need to and tell us what is going wrong. After a test fails, it’s time to verify if we are doing something wrong in the testing code or if something is actually broken in our source code. To be able to do that, we need some more details about what is going on inside the application while the test is running. The source code that we are testing can be hard to understand and even tests can sometimes be hard to understand (although they shouldn’t be). To go deep and understand all the circumstances of a failing test, we need to debug it. Here are two ways to debug a test.

Using Pycharm

The first one is using a modern Integrated Development Environment, like PyCharm. First of all, to be able to use pytest support in PyCharm, you need to set the Default test runner setting to pytest. You can find this setting under Settings > Tools > Python Integrated Tools.

After indexing your project, PyCharm will show a green run icon besides each test:

When you click on this icon you see the following:

By clicking Debug you can run this single test in a debug session and the execution of the program will stop in the breakpoints you have placed around the code.

Dropping to Pdb

If you are already on a terminal window and want to see some variables and other things very quickly, you can also drop into Pdb by using the built-in function breakpoint. In your code:

In your terminal:

If you press TAB two times you can view all available options:

Some of the options are as follows:

next: will execute the next line
cont: will continue execution until the next breakpoint
list: will display the code that will be executed


Test isolation is a topic worth writing an entire article about. I will treat it really briefly here because if we are going to write some tests, we definitely need to keep this concept in mind.

Basically, test isolation says that all tests must be independent of each other and also from other modules of our project. A test function must not make any assumption of the application’s state. It must not depend on the actual state to be able to run. It shouldn’t matter for a test if it is running first or last; or if it is running alone or in a group of tests.

What is the point of all of that?

If a test depends on other tests, you are not guaranteed that it will always pass. If you are not sure about that, then you cannot trust the value this test produces: in other words, the test becomes unusable. For example, for our order_create test, we have created an order using the following util function:

Here we have not assumed that a pizza order is already created in the DB by some other tests. That’s why we haven’t retrieved any PizzaOrder instance, but we have directly created it. Every single thing that a test needs to be able to run must be created inside its body or through a database fixture. What the test needs to run must be obvious. If it is not, it will be much harder to debug it when failing, because we don’t even know what the test is receiving as input. When you don’t even know the exact input, you can’t be checking for the output.

Final worlds on isolation, always make obvious what the tests need to run; tests should not depend on running order; pay attention to the assertion timing.

Flaky tests

A flaky test is a test that both passes and fails periodically without any code changes. Flaky tests are annoying but they can also be quite costly since they often require engineers to retrigger entire builds on CI and often waste a lot of time waiting for new builds to complete successfully. A flaky test is probably a result of a not well-isolated test. This means that it depends on some global variables which change over time. This kind of test provides you some false negatives. It is better to not have tests at all instead of having some tests that eventually fail without any code changes. This type of test will make you and your organization lose confidence in tests and turn back into manual verification. Here is an article about them, check out how do the Spotify engineers deal with them.

In conclusion

We have discussed some ways of writing clean and maintainable tests. Key topics treated:

  • Pytest, as an advanced testing framework that has countless features compared to the standard built-in unittest.
  • Ways to debug tests.
  • Isolation of tests and their importance.
  • Flaky tests, as the result of bad-isolated tests.

If you are going to work on complex applications, bugs will always be present. Testing, or even better automated testing, is a bug-killing tool that can save you a lot of time and headache.

Thanks for reading!


  1. Demo pizza app
  2. Demo pizza app DB diagram
  3. Pytest docs
  4. pytest_django package
  5. model-bakery package
  6. Test Flakiness at Spotify

Being a developer in a Fintech startup

Upon finishing my Bachelor’s, I never imagined I would find myself in the crossroad between the digital lending market and software engineering, with the former being just a part of the broad Fintech domain. I settled into frontend development with no prior knowledge on the tools that I am using today and although it has been only almost one year since I am developing for CardoAI, I would like to share my thoughts and experience on what it means to be a software developer in a Fintech startup.

You will not be able to understand everything at once

There are a lot of business and financial terms that will take time until you are accustomed to and being a developer, you should start to distinguish between different data visualizations and how to best display this ‘odd’ financial information that you are just starting to learn. However, this is part of the process as you get to immerse yourself in the world of Fintech, so just give it some time because you will not be able to understand everything overnight, even if you possess some previous background on finance and economics.

Ask questions A LOT

Always ask questions. Everyone has distinct learning paths so I do not think there are any wrong questions. Especially when it comes to developing in a rapidly changing market with the latest technologies, you will be judged for not asking questions. I have found pair programming and productive brainstorming sessions for discussing a new requirement to be particularly helpful in sharing knowledge between team members.

Put your customers first

Being part of a startup is a significant experience that provides to the team another mindset on how to approach the product and most importantly: your customers. Customer-Centered Approach is highly emphasized and it is the cornerstone in creating positive and meaningful relationships with your customers. The entire planning process and the development cycle will be adjusted to serve your customers’ needs: what they prioritize and what would give them a competitive advantage in the market. Once you start thinking like the customer and once you embrace the product as your own, you will start to identify problems and even hidden opportunities – leading to proactively improving the software without waiting for a customer request.

Challenges will help you grow

A software developer in Fintech should always expect the unexpected. There will be challenges waiting for you at every corner, but this should not demotivate you; quite the contrary, accept the new challenges coming in your way and use them at your advantage as an opportunity to grow. Having to deal with the look and feel of the application, a new challenge may also help you unravel your inner creative spirit and force you to think out of the box.

Being part of a startup in a Fintech environment means that nothing is certain. The market is extremely volatile and everything is changing rapidly. Although a software developer would not necessarily be interested in the business side of doing things, in this case I think that the involvement of the tech team in better understanding the business requirements is one of the greatest strengths a startup could have. As we recognize this constant change in the Fintech domain, we as developers are one step ahead to deliver highly demanded features and perceive the importance of them by putting ourselves in the shoes of our customers. Flying Airplanes While We Build Them – the catchphrase of CardoAI best summarizes the challenging environment we face.

Nevertheless, as in any industry there will be opportunities to capitalize on and also challenges waiting to overcome. Most of the things, as a developer, will be learned through the ‘hands-on’ approach, however there are gaps that could have been filled if the universities prepared their students better on what to expect upon graduating. In my opinion, it is important that the curricula is updated and adapted around the latest technologies most companies are working with, as well as making general financial and accounting courses compulsory for engineering degrees.

Having said that, newcomers should not be frightened to join, quite the contrary, there are plenty of chances to learn and even with limited knowledge and skills there will always be people willing to help.

Subscribe to our Newsletter

The ability to operate with technology and true intelligence at speed can be the deciding factor in success or failure in private market investments.

Start lowering your costs, scale faster and use more data in your decisions. Today!

Our Offices
  • Milan:
    Via Monte di Pietà 1A, Milan, Italy
  • London:
    40 New Bond St, London W1S 2DE, UK
  • Tirana:
    Office 1: Rruga Adem Jashari 1, Tirana, AL
    Office 2: Blvd Zogu I, Tirana, AL

Copyright Cardo AI 2021. All rights reserved. P.IVA: 10357440964