Background

After the implementation of the Revised Directive on Payment Services (PSD2) [1], Open Banking has become a growing industry as it paves the way for new products and services that could help customers and small to medium-sized businesses get a better deal. It could also give you a more detailed understanding of your accounts, and help you find new ways to make the most of your money [2]. Open banking offer two types of services, Account Information Service Providers (AISPs) and Payment Initiation Service Providers (PISPs), in which the former retrieves the user's financial data and the latter making payments on the user's behalf. We will solely be focusing on the AIS service for our web app [3].

We took a look at banks which offer various online services such as Monzo [4], Revolut [5]. They are very popular and widely used in the UK and although they did a very good job starting the migration towards better data insights, they do not offer Open Banking facilities and simply use their diagrams and algorithms to promote the use of their bank exclusively. We understand that better financial management for most people, means more than switching all account types to one bank, so we strive to learn from their achievements and thus allow the seamless unification of data without forcing the user to abandon their other banks. The platform we are working towards will allow users to view their data from various banks a lot easier, and this research into existing technologies gave us a lot of clarity into how we seek to change the landscape of financial management forever.

We also took a look at a US based budget planner called "Mint" [6] for further understanding of our task and what already exists in the market. We used this to work towards specific features that have not yet implemented, especially with UK based financial institutions.

Visualisation: Chart.js

Since we generated our dummy data fairly late, we decided to use PowerBI [7] to generate our visuals because one of our team members is familiar with the workings of PowerBI. Data is imported using a Python script and the data can be refreshed to retrieve the latest dataset easily. Alternative solutions were Tableau [8] and Qlik [9], our visualisations were created late so we opted for a quick generation of visuals for our prototype 1. But we failed to embed our PowerBI visuals onto the web app because we were not allowed to create a PowerBI account. Hence we continued looking for alternatives before deciding to use Chart.js [18]. Chart.js is a open source JavaScript library that allows us to create various charts just by using the HTML canvas element. We've also considered using D3.js [19] but after comparing the complexity of the two we decided to use Chart.js as we were short on time [20]. Additionally, Chart.js had sufficient amount of materials as well as the freedom for customization to help us create the visualisations we needed.

Framework: Django

We used Django [10] for our web app framework due to its fast and early deployment, as well as our familiarity with Python. Alternative frameworks which were considered was Feather [11] (C++), one main reason we did not choose to use FeatherC++ was due to our lack of familiarity with C++, another reason was that the documentation for Feather (GitHub) is in chinese, therefore we opted for Django.

Database: MarkLogic (NoSQL)

We decided upon MarkLogic [12] for our webapp database.0 It allows us to set up a NoSQL database which has been proven to deliver exceptional performance at industrial scales. MarkLogic has partnered with Microsoft in the past, to publish an official MarkLogic Azure image [13] so were able to deploy MarkLogic onto a cloud service with ease. MarkLogic is rarely used in the industry, but upon being introduced to its countless benefits we challenged ourselves to learn how to use it. Some of the benefits that enticed us especially include:

  • Schemas are optional, so data of varying formats can be inserted into into the databse
  • Great scope for scalability: simply attaching new data collections to existing ones means the actual number of datasets is kept low
  • MarkLogic also supports the REST API, which allows you to make queries to the database quite easily

It is worth mentioning that we did consider MongoDB [14] as an alternative database, which although popular can be said to be limited in its functionalities compared to MarkLogic [15]. Another reason we stuck with MarkLogic was that the HyperCube data structure was more suitable for a MarkLogic database than MongoDB, this is because MongoDB has restrictions on the number of indexes that can be used in a single query [15].

Data Structure: HyperCube

Our client recommended that we use HyperCube [16][17] because it allows us to create layouts that enable us to manage any kind of data sets. It standardizes the structure of datasets and makes it easier to analyse multi-dimensional data across multiple datasets, thus allowing us to get more information out of the seemingly meaningless data. Due to the lack of time, we were unable to implement HyperCube to our self generated Open Banking dataset. It also seems that the financial datasets obtained from the Open Banking API are already processed and cleaned, returning a large standardized format for the data obtained from various banks, allowing us to easily manipulate and retrieve information from the copious amounts of financial information. Since the data format is standardized, this allows us to write code and obtain information easier. In conclusion, we feel that the HyperCube data structuring would be helpful and provide us a good learning experience but due to time constraints we decided that it was unnecessary to improve the efficiency of our web app.

Other technologies used


Programming Languages

Python

Python

HTML

HTML

Front-End

Python

Bootstrap 4

HTML

JavaScript

service-icon

jQuery

Web Server

Virtual Machine OS

Cloud Service

Apache

Apache

Ubuntu 18.04

Ubuntu 18.04

Azure

Microsoft Azure

Machine Learning

AzureML

AzureML

TensorFlow

TensorFlow

Summary of Final Decision

In summary, we have opted for a MarkLogic database because of its exceptional performance at industrial scales. Django will be used as an intermediary communication between our database and web app due to our familiarity with Python and its fast development. And finally, we will be using Chart.js to generate our responsive and interactive data visualisations.

References

Internet Documents

General Internet Sites

[1] Barclaycard, "What is PSD2 and will it affect how merchants take payments?", Jun. 25, 2019. [Online]. Available: https://www.barclaycard.co.uk/business/news-and-insights/what-is-psd2. [Accessed: Oct. 19, 2019].

[2] Open Banking, "What is Open Banking?". [Online]. Available: https://www.openbanking.org.uk/customers/what-is-open-banking/. [Accessed: Oct. 18, 2019].

[3] Yolt Technical Services, "Open Banking Glossary". [Online]. Available: https://yts.yolt.com/open-banking. [Accessed: Oct. 25, 2019].

[4] Monzo, "Monzo - Banking made easy", Monzo Bank Ltd. [Online]. Available: https://www.monzo.com. [Accessed: Oct. 15, 2019].

[5] Revolut, "Revolut - A better way to handle your money", Revolut Ltd. [Online]. Available: https://www.revolut.com/. [Accessed: Oct. 15, 2019].

[6] Mint, "Mint: Budget Tracker and Planner". [Online]. Available: https://www.mint.com/. [Accessed: Jan. 11, 2020].

[7] Microsoft, "Microsoft Power BI: Data Visualization", Microsoft Corporation. [Online]. Available: https://powerbi.microsoft.com/en-us/. [Accessed: Jan. 03, 2020].

[8] Tableau, "Business intelligence and analytics software - Tableau", Tableau Software. [Online]. Available: https://www.tableau.com/en-gb. [Accessed: Jan. 06, 2020].

[9] Qlik, "Qlik Business Intelligence: Data Analytics & Data Integration". [Online]. Available: https://www.qlik.com/us. [Accessed: Jan. 05, 2020].

[10] Django, "Django: The Web framework for perfectionists with deadlines". [Online]. Available: https://www.djangoproject.com/. [Accessed: Nov. 28, 2019].

[11] GitHub, "Feather", qicosmos. [Online]. Available: https://github.com/qicosmos/feather. [Accessed: Nov. 30, 2019].

[12] MarkLogic, "MarkLogic | Data Integration and Data Management Platform", MarkLogic Corporation. [Online]. Available: https://www.marklogic.com/. [Accessed: Oct. 21, 2019].

[13] MarkLogic, "Overview of MarkLogic Server on Azure", MarkLogic Corporation. [Online]. Available: https://docs.marklogic.com/guide/azure/Overview. [Accessed: Oct. 23, 2019].

[14] MongoDB, "MongoDB: The most popular database for modern apps". [Online]. Available: https://www.mongodb.com/. [Accessed: Dec. 21, 2019].

[15] DB-Engines, "MarkLogic vs. MongoDB Comparison". [Online]. Available: https://db-engines.com/en/system/MarkLogic%3BMongoDB. [Accessed: Jan. 05, 2020].

[16] Python Hosted, "Cubes - OLAP framework". [Online]. Available: https://pythonhosted.org/cubes/. [Accessed: Jan. 09, 2020].

[17] NTT DATA, "20181026_Hypercubeパラパラ_en", NTT DATA Corporation, Oct. 26, 2018. [Accessed: Dec. 18, 2019].

[18] Chart.js, "Chart.js | Open source HTML5 Charts for your website". [Online]. Available: https://www.chartjs.org/. [Accessed: Jan. 22, 2020].

[19] D3.js, "D3.js - Data-Driven Documents". [Online]. Available: https://d3js.org/. [Accessed: Jan. 22, 2020].

[20] Comparison between d3.js and chart.js (only for charts), "Comparison between d3.js and chart.js (only for charts)". [Online]. Available: https://stackoverflow.com/questions/27347798/comparison-between-d3-js-and-chart-js-only-for-charts/. [Accessed: Jan. 24, 2020].