1. Introduction#
Effective programming combines problem-solving skills, domain knowledge, and programming skills; these notebooks will target each of these different areas. The overall goal, though, is not necessarily to teach you Python but rather how you can solve problems and perform tasks with computer programs.
A program is a series of instructions to carry out a specific task. These tasks can run a large gamut of possibilities:
solving mathematical problems
processing images and text
playing video games
analyzing financial data
making decisions (which covers another range from answering simple yes/no questions to driving a car).
Learning to program is not a passive activity. You cannot simply just read documentation and these notebooks. Becoming an effective programmer takes targeted practice, and that practice takes time. These notebooks will present fundamental concepts, how Python implements those concepts, and then how you can solve real problems with those concepts. These notebooks contain a large amount of Python code. Not only should you run this code, but you should also make changes to the code and see what happens. Do not be afraid to make mistakes - try things! The computer does not care and will not make fun of you. You should complete the exercises at the end of each notebook. Yes, we provide many of the answers. However, you will learn more by attempting the exercises on your own. We have written these exercises to reinforce the concepts presented.
The following notebook presents an approach to solving problems with programming. The fundamental principle is understanding what occurs and how we can translate that into a series of steps. And most importantly, plan how to implement that approach before you write any code. Once we have those steps, we can then write code. As you perform this process, you should have a paper handy to take notes and record your thoughts.
To start our journey to learn computer programming through Python, this notebook contains three separate programs to demonstrate some of the capabilities of computer programs and some fundamental concepts within computer science. As these are some of the first Python programs you might have seen, we provide detailed explanations. We do not expect that you will now be able to write equivalent programs.
1.1. Sample Program: The Wayback Machine#
The following program allows users to enter a particular web address (URL) and date. The program will then query the “Wayback Machine” hosted at https://archive.org/ to find a copy of that web address closest to the entered date and then print that URL to the console.
1import json
2from urllib import request
3
4print("Let's find an old website.")
5site = input("Type a website URL: ")
6era = input("Type a year, month, and day, like 20140410: ")
7url = "http://archive.org/wayback/available?url=%s×tamp=%s" % (site, era)
8response = request.urlopen(url)
9contents = response.read()
10data = json.loads(contents)
11try:
12 old_site_url = data["archived_snapshots"]["closest"]["url"]
13 print("Found this copy: ", old_site_url)
14except:
15 print("Sorry, no luck accessing", site)
Let's find an old website.
Type a website URL: http://irishwildcat.com
Type a year, month, and day, like 20140410: 20140410
Found this copy: http://web.archive.org/web/20140317220451/http://irishwildcat.com:80/
Source: Introducing Python: Modern Computing in Simple Packages, 2nd Ed, Bill Lubanovic O’Reilly Amazon
While you may be new to programming, hopefully you can see how the previous code block worked.
A few general notes:
This code makes substantial use of existing modules and functions.
json
andurllib
are modules - collection of code others have written that we can use in our code. One of the benefits of most programming languages is the libraries - both delivered as part of the programming platform (aka, “standard libraries”) as well as those that others have written. These libraries abstract many of the tasks to perform specific functionality and make doing those tasks much simpler than if we had to entirely write the system.Statements that look like name(value) are function calls. These function calls allow us to access code that has been previously written and performs a certain task.
Statements that look like name.name(value) are also function calls, but these functions belong to modules.
Note: If you need to see line numbers, refer to the previous notebook for instructions to enable them.
Lines 1 let the program use the
json
library. JSON has become one of the standards for exchanging data through internet-based APIs. Thejson
library provides code to parse the JSON data format.Line 2 allows us to use the
request
module from theurllib
package. A package is a just a group of related modules. As you can see from these first three lines, one of Python’s advantages is the large number of included standard libraries and available 3rd party open-source libraries.Line 4 prints a message to the console telling the user what the program will do
Line 5 allows the user to type in the URL for a particular website. For this example, I used
http://irishwildcat.com
, an old blog no longer available on the Internet.Line 6 gets a date in a particular format, starting with the year, month, and day. This representation is based upon an international standard - ISO-8601 - for dates and times.
Line 7 creates a variable called
url
to point to a location on Wayback Machine at https://archive.org/Line 8 opens a connection to that url on archive.org and places the result into the variable
response
. It performs this by calling theurlopen()
function within therequest
module.Line 9 then reads the text output from that connection, setting the output into the variable
contents
Line 10 converts the contents of the text variable (which contains a JSON object) to a Python dictionary. A dictionary stores data in key-value pairs - we discuss this in much greater detail in a later notebook.
In lines 11-15, we execute a code block in a special region. If a Python error occurs, the interpreter will detect the error and show the user the message in line 15.
Line 12 grabs a specific web address (URL) from the results of the Wayback Machine.
Line 13 prints that URL
Note: if you want to see the values of some of these intermediate values, you can edit the above source code and insert a line such as the following just after that variable is assigned (before line 10):
print(contents)
1.2. Sample Program: A Google Search#
In this section, the following Python statements will perform a Google search, access one of the pages, and print the extracted text from that page.
First, we need to make available the functionality to perform the search:
1from googlesearch import search
To see help information about the search()
method from the googlesearch
module, you can call a built-in function help()
:
1help(search)
Help on function search in module googlesearch:
search(query, tld='com', lang='en', tbs='0', safe='off', num=10, start=0, stop=None, pause=2.0, country='', extra_params=None, user_agent=None, verify_ssl=True)
Search the given query string using Google.
:param str query: Query string. Must NOT be url-encoded.
:param str tld: Top level domain.
:param str lang: Language.
:param str tbs: Time limits (i.e "qdr:h" => last hour,
"qdr:d" => last 24 hours, "qdr:m" => last month).
:param str safe: Safe search.
:param int num: Number of results per page.
:param int start: First result to retrieve.
:param int stop: Last result to retrieve.
Use None to keep searching forever.
:param float pause: Lapse to wait between HTTP requests.
A lapse too long will make the search slow, but a lapse too short may
cause Google to block your IP. Your mileage may vary!
:param str country: Country or region to focus the search on. Similar to
changing the TLD, but does not yield exactly the same results.
Only Google knows why...
:param dict extra_params: A dictionary of extra HTTP GET
parameters, which must be URL encoded. For example if you don't want
Google to filter similar results you can set the extra_params to
{'filter': '0'} which will append '&filter=0' to every query.
:param str user_agent: User agent for the HTTP requests.
Use None for the default.
:param bool verify_ssl: Verify the SSL certificate to prevent
traffic interception attacks. Defaults to True.
:rtype: generator of str
:return: Generator (iterator) that yields found URLs.
If the stop parameter is None the iterator will loop forever.
Within a Jupyter notebook, we can also use a ?
after an item to see the help.
1search?
In the following cell, the program searches Google for the terms “financial technology”. The program then converts that result into a built-in data structure called a list that holds a sequence of “things/data” in a particular order.
As we call search
, we pass four arguments:
query terms
num - number of search results per page
stop - last result number to retrieve
pause - a time in seconds to wait between making requests to Google.
1search_results = list(search("financial technology", num=10, stop=30, pause=2))
Note: if you receive the following error message, you need to make Python aware of the root certificates such that the Python interpreter can validate the secure connection to the web server that provides the search results:
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)>
On MacOS, open a terminal window and execute the following commands (assumes Python 3.10 is installed):
cd /Applications/Python\ 3.10
./Install\ Certificates.command
This next cell displays the documentation associated with the type of search_results
.
1help(search_results)
Show code cell output
Help on list object:
class list(object)
| list(iterable=(), /)
|
| Built-in mutable sequence.
|
| If no argument is given, the constructor creates a new empty list.
| The argument must be an iterable if specified.
|
| Methods defined here:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return key in self.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(...)
| x.__getitem__(y) <==> x[y]
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Implement self+=value.
|
| __imul__(self, value, /)
| Implement self*=value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(self, /)
| Return a reverse iterator over the list.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(self, /)
| Return the size of the list in memory, in bytes.
|
| append(self, object, /)
| Append object to the end of the list.
|
| clear(self, /)
| Remove all items from list.
|
| copy(self, /)
| Return a shallow copy of the list.
|
| count(self, value, /)
| Return number of occurrences of value.
|
| extend(self, iterable, /)
| Extend list by appending elements from the iterable.
|
| index(self, value, start=0, stop=9223372036854775807, /)
| Return first index of value.
|
| Raises ValueError if the value is not present.
|
| insert(self, index, object, /)
| Insert object before index.
|
| pop(self, index=-1, /)
| Remove and return item at index (default last).
|
| Raises IndexError if list is empty or index is out of range.
|
| remove(self, value, /)
| Remove first occurrence of value.
|
| Raises ValueError if the value is not present.
|
| reverse(self, /)
| Reverse *IN PLACE*.
|
| sort(self, /, *, key=None, reverse=False)
| Sort the list in ascending order and return None.
|
| The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
| order of two equal elements is maintained).
|
| If a key function is given, apply it once to each list item and sort them,
| ascending or descending, according to their function values.
|
| The reverse flag can be set to sort in descending order.
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...) from builtins.type
| See PEP 585
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
The following code block prints the number of entries in the list search_result
followed by the entry in the first position. For largely historical reasons tied to what was a performance optimization, most programming languages start to count things at 0 and then go to length-1 for the last item. Zero-Based Numbering
Try running the following block with different values for 0
. What happens if [0]
is removed?
1print(len(search_results))
2print(search_results[0])
30
https://www.investopedia.com/terms/f/fintech.asp
This next code block takes that particular URL, opens a network connection to that URL, and then reads the results into the variable mystr
.
Then the code uses the BeautifulSoup library to parse the returned HTML document. The program then extracts all text content, placing the results in text
.
1url = search_results[3]
2import urllib.request
3from bs4 import BeautifulSoup
4
5fp = urllib.request.urlopen(url)
6mybytes = fp.read()
7
8mystr = mybytes.decode("utf-8") # convert from bytes into a string representation
9fp.close()
10
11soup = BeautifulSoup(mystr)
12[s.extract() for s in soup(['style', 'script', '[document]', 'head', 'title'])]
13text = soup.getText(separator="\n")
14# break into lines and remove leading and trailing space on each
15lines = (line.strip() for line in text.splitlines())
16# break multi-headlines into a line each
17chunks = (phrase.strip() for line in lines for phrase in line.split(" "))
18# drop blank lines
19text = '\n'.join(chunk for chunk in chunks if chunk)
20
21print(text)
Show code cell output
Investing
Stocks
Bonds
ETFs
Options and Derivatives
Commodities
Trading
FinTech and Automated Investing
Brokers
Fundamental Analysis
Technical Analysis
Markets
View All
Simulator
Login / Portfolio
Trade
Research
My Games
Leaderboard
Banking
Savings Accounts
Certificates of Deposit (CDs)
Money Market Accounts
Checking Accounts
View All
Personal Finance
Budgeting and Saving
Personal Loans
Insurance
Mortgages
Credit and Debt
Student Loans
Taxes
Credit Cards
Financial Literacy
Retirement
View All
News
Markets
Companies
Earnings
CD Rates
Mortgage Rates
Economy
Government
Crypto
ETFs
Personal Finance
View All
Reviews
Best Online Brokers
Best Savings Rates
Best CD Rates
Best Life Insurance
Best Personal Loans
Best Mortgage Rates
Best Money Market Accounts
Best Auto Loan Rates
Best Credit Repair Companies
Best Credit Cards
View All
Academy
Investing for Beginners
Trading for Beginners
Become a Day Trader
Technical Analysis
All Investing Courses
All Trading Courses
View All
Trade
Search
Search
Please fill out this field.
Search
Search
Please fill out this field.
Investing
Investing
Stocks
Bonds
ETFs
Options and Derivatives
Commodities
Trading
FinTech and Automated Investing
Brokers
Fundamental Analysis
Technical Analysis
Markets
View All
Simulator
Simulator
Login / Portfolio
Trade
Research
My Games
Leaderboard
Banking
Banking
Savings Accounts
Certificates of Deposit (CDs)
Money Market Accounts
Checking Accounts
View All
Personal Finance
Personal Finance
Budgeting and Saving
Personal Loans
Insurance
Mortgages
Credit and Debt
Student Loans
Taxes
Credit Cards
Financial Literacy
Retirement
View All
News
News
Markets
Companies
Earnings
CD Rates
Mortgage Rates
Economy
Government
Crypto
ETFs
Personal Finance
View All
Reviews
Reviews
Best Online Brokers
Best Savings Rates
Best CD Rates
Best Life Insurance
Best Personal Loans
Best Mortgage Rates
Best Money Market Accounts
Best Auto Loan Rates
Best Credit Repair Companies
Best Credit Cards
View All
Academy
Academy
Investing for Beginners
Trading for Beginners
Become a Day Trader
Technical Analysis
All Investing Courses
All Trading Courses
View All
Financial Terms
Newsletter
About Us
Follow Us
Table of Contents
Expand
Table of Contents
What Is Financial Technology?
Understanding Fintech
Fintech in Practice
Fintech’s Expanding Horizons
Fintech and New Technologies
Fintech Landscape
Fintech Users
Regulation and Fintech
Fintech FAQs
Investing
FinTech
Financial Technology (Fintech): Its Uses and Impact on Our Lives
By
Julia Kagan
Full Bio
Julia Kagan is a financial/consumer journalist and former senior editor, personal finance, of Investopedia.
Learn about our
editorial policies
Updated April 27, 2023
Reviewed by
Eric Estevez
Fact checked by
Amanda Bellucco-Chatham
Fact checked by
Amanda Bellucco-Chatham
Full Bio
Amanda Bellucco-Chatham is an editor, writer, and fact-checker with years of experience researching personal finance topics. Specialties include general financial planning, career development, lending, retirement, tax preparation, and credit.
Learn about our
editorial policies
Paige McLaughlin / Investopedia
What Is Financial Technology (Fintech)?
Financial technology (better known as fintech) is used to describe new technology that seeks to improve and automate the delivery and use of financial services. At its core, fintech is utilized to help companies, business owners, and consumers better
manage their financial operations
, processes, and lives. It is composed of specialized software and algorithms that are used on computers and smartphones. Fintech, the word, is a shortened combination of “financial technology.”
When fintech emerged in the 21st century, the term was initially applied to the technology employed at the backend systems of established financial institutions, such as banks. From 2018 or so to 2022, there was a shift to consumer-oriented services. Fintech now includes different sectors and industries such as education, retail banking, fundraising and nonprofit, and investment management, to name a few.
Fintech also includes the development and use of cryptocurrencies, such as
Bitcoin
. While that segment of fintech may see the most headlines, the big money still lies in the traditional global banking industry and its multitrillion-dollar
market capitalization
.
Key Takeaways
Fintech refers to the integration of technology into offerings by financial services companies to improve their use and delivery to consumers.
It primarily works by unbundling offerings by such firms and creating new markets for them.
Companies in the finance industry that use fintech have expanded financial inclusion and use technology to cut down on operational costs.
Fintech funding is on the rise, but regulatory problems exist.
Examples of fintech applications include robo-advisors, payment apps, peer-to-peer (P2P) lending apps, investment apps, and crypto apps, among others.
Fintech
Understanding Fintech
Broadly, the term “financial technology” can apply to any innovation in how people transact business, from the invention of digital money to double-entry bookkeeping. Since the internet revolution, financial technology has grown explosively.
You likely use some element of fintech on a daily basis. Some examples include transferring money from your debit account to your checking account via your iPhone, sending money to a friend through Venmo, or managing investments through an online broker. According to EY’s 2019 Global FinTech Adoption Index, two-thirds of consumers utilize at least two or more fintech services, and those consumers are increasingly aware of fintech as a part of their daily lives.
Fintech in Practice
The most talked-about (and most funded) fintech startups share the same characteristic: They are designed to challenge, and eventually take over, traditional financial services providers by being more nimble, serving an underserved segment of the population, or
providing faster or better service
.
For example, financial company
Affirm
seeks to cut
credit card companies
out of the online shopping process by offering a way for consumers to secure immediate, short-term loans for purchases. While rates can be high, Affirm claims to offer a way for consumers with poor or no credit a way to secure credit and build their
credit history
.
Similarly,
Better Mortgage
seeks to streamline the home mortgage process with a digital-only offering that can reward users with a verified pre-approval letter within 24 hours of applying. GreenSky seeks to link home improvement borrowers with banks by helping consumers avoid lenders and save on interest by offering zero-interest promotional periods.
For consumers with poor or no
credit
, Tala offers consumers in the developing world microloans by doing a deep data dig on their smartphones for their transaction history and seemingly unrelated things, such as what mobile games they play. Tala seeks to give such consumers better options than local banks, unregulated lenders, and other
microfinance
institutions.
In short, if you have ever wondered why some aspect of your financial life was so unpleasant (such as applying for a mortgage with a traditional lender) or felt like it wasn’t quite the right fit, fintech probably has (or seeks to have) a solution for you.
Fintech’s Expanding Horizons
In its most basic form, fintech unbundles financial services into individual offerings that are often easier to use. The combination of streamlined offerings with technology allows fintech companies to be more efficient and cut down on costs associated with each transaction.
If one word can describe how many fintech innovations have affected traditional trading, banking, financial advice, and products, it’s “disruption”—a word you have likely heard in commonplace conversations or the media. Financial products and services that were once the realm of branches, salespeople, and desktops are now more commonly found on mobile devices.
For example, the mobile-only stock trading app
Robinhood
charges no fees for trades, and
peer-to-peer (P2P) lending
sites like Prosper Marketplace, LendingClub, and OnDeck promise to reduce rates by opening up competition for loans to broad market forces. Business loan providers such as Kabbage, Lendio, Accion, and Funding Circle (among others) offer startup and established businesses easy, fast platforms to secure working capital. Oscar, an online insurance startup, received $165 million in funding in March 2018.
Such significant funding rounds are not unusual and occur globally for fintech startups.
This shift to a digital-first mindset has pushed several traditional institutions to invest heavily in similar products. For example, investment bank Goldman Sachs launched consumer lending platform Marcus in 2016 in an effort to enter the fintech space.
That said, many tech-savvy industry watchers warn that keeping apace of fintech-inspired innovations requires more than just ramped-up tech spending. Rather, competing with lighter-on-their-feet startups requires a significant change in thinking, processes, decision making, and even overall corporate structure.
Fintech and New Technologies
New technologies, such as
machine learning
/artificial intelligence (AI), predictive behavioral analytics, and data-driven marketing, will take the guesswork and habit out of financial decisions. “Learning” apps will not only learn the habits of users but also engage users in learning games to make their automatic, unconscious spending and saving decisions better.
Fintech is also a keen adapter of automated customer service technology, utilizing chatbots and AI interfaces to assist customers with basic tasks and keep down staffing costs. Fintech is also being leveraged to fight fraud by leveraging information about payment history to flag transactions that are outside the norm.
Fintech Landscape
Since the mid-2010s, fintech has exploded, with startups receiving billions in
venture funding
(some of which have become
unicorns
) and incumbent financial firms either snatching up new ventures or building out their own fintech offerings.
North America still produces most of the fintech startups, with Asia a relatively close second, followed by Europe. Some of the most active areas of fintech innovation include or revolve around the following areas (among others):
Cryptocurrency
(Bitcoin, Ethereum, etc.), digital tokens (e.g.,
non-fungible tokens, or NFTs
), and digital cash. These often rely on
blockchain
technology, which is a distributed ledger technology (DLT) that maintains records on a network of computers but has no central ledger. Blockchain also allows for so-called
smart contracts
, which utilize code to automatically execute contracts between parties such as buyers and sellers.
Open banking
, which is a concept that proposes that all people should have access to bank data to build applications that create a connected network of financial institutions and third-party providers. An example is the all-in-one money management tool
Mint
.
Insurtech
, which seeks to use technology to simplify and streamline the insurance industry.
Regtech
, which seeks to help financial service firms meet industry compliance rules, especially those covering Anti-Money Laundering and Know Your Customer protocols that fight fraud.
Robo-advisors
, such as
Betterment
, utilize algorithms to automate investment advice to lower its cost and increase accessibility. This is one of the most common areas where fintech is known and used.
Unbanked/underbanked services that seek to serve disadvantaged or low-income individuals who are ignored or underserved by traditional banks or mainstream financial services companies. These applications promote
financial inclusion
.
Cybersecurity
. Given the proliferation of cybercrime and the decentralized storage of data, cybersecurity and fintech are intertwined.
AI chatbots
, which rose to popularity in 2022, are another example of fintech’s rising presence in day-to-day usage.
Fintech Users
There are four broad categories of users for fintech:
Business-to-business (B2B)
for banks
Clients of B2B banks
Business-to-consumer (B2C)
for small businesses
Consumers
Trends toward mobile banking, increased information, data, more accurate analytics, and decentralization of access will create opportunities for all four groups to interact in unprecedented ways.
As for consumers, the younger you are, the more likely it will be that you are aware of and can accurately describe what fintech is. Consumer-oriented fintech is mostly targeted toward Gen Z and millennials, given the huge size and rising earning potential of these generations.
When it comes to businesses, before the adoption of fintech, a business owner or startup would have gone to a bank to secure financing or startup capital. If they intended to accept credit card payments, they would have to establish a relationship with a credit provider and even install infrastructure, such as a landline-connected card reader. Now, with mobile technology, those hurdles are a thing of the past.
Regulation and Fintech
Financial services are among the most heavily regulated sectors in the world. As such, regulation has emerged as the number one concern among governments as fintech companies take off.
According to the U.S.
Department of the Treasury
, while fintech firms create new opportunities and capabilities for companies and consumers, they are also creating new risks to be aware of. “Data privacy and regulatory arbitrage” are the main concerns noted by the Treasury. In its most recent report in November 2022, the Treasury called for enhanced oversight of consumer financial activities, specifically when it comes to nonbank firms.
Regulation is also a problem in the emerging world of cryptocurrencies.
Initial coin offerings (ICOs)
are a form of fundraising that allows startups to raise capital directly from lay investors. In most countries, they are unregulated and have become fertile ground for scams and frauds. Regulatory uncertainty for ICOs has also allowed entrepreneurs to slip security tokens disguised as utility tokens past the U.S.
Securities and Exchange Commission (SEC)
to avoid fees and compliance costs.
Because of the diversity of offerings in fintech and the disparate industries it touches, it is difficult to formulate a single and comprehensive approach to these problems. For the most part, governments have used existing regulations and, in some cases, customized them to regulate fintech.
What are examples of fintech?
Fintech has been applied to many areas of finance. Here are just a few examples.
Robo-advisors
are apps or online platforms that optimally invest your money automatically, often for little cost, and are accessible to ordinary individuals.
Investment apps
like Robinhood make it easy to buy and sell
stocks
,
exchange-traded funds (ETFs)
, and cryptocurrency from your mobile device, often with little or no commission.
Payment apps
like PayPal, Venmo, Block (Square), Zelle, and Cash App make it easy to pay individuals or businesses online and in an instant.
Personal finance apps
such as Mint, YNAB, and Quicken Simplifi let you see all of your finances in one place, set budgets, pay bills, and so on.
Peer-to-peer (P2P) lending
platforms like Prosper Marketplace, LendingClub, and Upstart allow individuals and small business owners to receive loans from an array of individuals who contribute microloans directly to them.
Crypto apps
, including wallets, exchanges, and payment applications, allow you to hold and transact in cryptocurrencies and digital tokens like Bitcoin and non-fungible tokens (NFTs).
Insurtech
is the application of technology specifically to the insurance space. One example would be the use of devices that monitor your driving in order to adjust auto insurance rates.
Does fintech apply only to banking?
No. While banks and startups have created useful fintech applications around basic banking (e.g., checking and savings accounts, bank transfers, credit/debit cards, and loans), many other fintech areas that have more to do with personal finance, investing, or payments (among others) have grown in popularity.
How do fintech companies make money?
Fintechs make money in different ways depending on their specialty. Banking fintechs, for example, may generate revenue from fees, loan interest, and selling financial products. Investment apps may charge brokerage fees, utilize
payment for order flow (PFOF)
, or collect a percentage of
assets under management (AUM)
. Payment apps may earn
interest
on cash amounts and charge for features like earlier withdrawals or credit card use.
Article Sources
Investopedia requires writers to use primary sources to support their work. These include white papers, government data, original reporting, and interviews with industry experts. We also reference original research from other reputable publishers where appropriate. You can learn more about the standards we follow in producing accurate, unbiased content in our
editorial policy.
EY. “
Global FinTech Adoption Index 2019
,” Page 6.
Tala. “
About Page
.”
Fierce Healthcare. “
Oscar Health Raises $165M in Additional Capital, Executives Say They Expect Company to Be Profitable Soon
.”
Goldman Sachs. “
Marcus by Goldman Sachs Leverages Technology and Legacy of Financial Expertise in Dynamic Consumer Finance Platform
.”
U.S. Department of the Treasury. “
New Treasury Report Shows Fintech Industry Requires Additional Oversight to Close Gaps, Prevent Abuses and Protect Consumers
.”
Take the Next Step to Invest
Advertiser Disclosure
×
The offers that appear in this table are from partnerships from which Investopedia receives compensation. This compensation may impact how and where listings appear. Investopedia does not include all offers available in the marketplace.
Service
Name
Description
Take the Next Step to Invest
Advertiser Disclosure
×
The offers that appear in this table are from partnerships from which Investopedia receives compensation. This compensation may impact how and where listings appear. Investopedia does not include all offers available in the marketplace.
Part Of
Future First: Money Lessons for Teens
Financial Literacy: What It Is, and Why It Is So Important
1 of 30
Financial Goals for Students: How and Why to Set Them
2 of 30
Teaching Personal Finance: Tips for How to Do It
3 of 30
How to Learn About Finance
4 of 30
Principles of Building Wealth
5 of 30
Finance Terms for Beginners
6 of 30
Stock Market for Teens
7 of 30
Investing for Teens: What They Should Know
8 of 30
Saving vs. Investing: What Teens Should Know
9 of 30
Talking to Teens About Financial Risk
10 of 30
Portfolio Management Tips for Young Investors
11 of 30
What Are Asset Classes? More Than Just Stocks and Bonds
12 of 30
What Is Stock Trading?
13 of 30
How to Use the Investopedia Simulator
14 of 30
Credit Tips for Teens
15 of 30
Credit Cards vs. Debit Cards: What’s the Difference?
16 of 30
Banking 101
17 of 30
Debt: What It Is, How It Works, Types, and Ways to Pay Back
18 of 30
Financial Technology (Fintech): Its Uses and Impact on Our Lives
19 of 30
What Is a Mobile Wallet?
20 of 30
What Teens Need to Know About Cryptocurrency
21 of 30
Buy Now, Pay Later (BNPL): What It Is, How It Works, Pros and Cons
22 of 30
Best Ways to Send Money as a Teen
23 of 30
10 College Degrees With the Best Starting Salaries
24 of 30
What Are the 5 Purposes of Budgeting?
25 of 30
How to Read a Pay Stub
26 of 30
Teens and Income Taxes
27 of 30
How Much to Save for College
28 of 30
Renting an Apartment for the First Time: What You Need to Know
29 of 30
Personal Finance Influencers You Should Know
30 of 30
Related Terms
Financial Inclusion: Definition, Examples, and Why It's Important
Financial inclusion is the effort to make financial products and services available and affordable to all individuals and businesses.
more
What Is a Crypto Regulatory Sandbox?
Crypto regulatory sandboxes now support blockchain and cryptocurrency offerings to ensure adherence to regulations and security checks.
more
What Is M-Pesa? Definition, How the Service Works, and Example
M-Pesa is a mobile banking service that allows users to store and transfer money through their mobile phones.
more
What Is a B2B Robo-Advisor?
A B2B robo-advisor is a digital automated portfolio management platform that is used by financial advisors.
more
What Is a Digital Wallet?
A digital wallet is an application on an electronic device that stores payment information and allows you to securely make purchases without carrying cash or cards.
more
Cryptocurrency Explained With Pros and Cons for Investment
A cryptocurrency is a digital or virtual currency that uses cryptography and is difficult to counterfeit.
more
Partner Links
Related Articles
Tech Companies
5 Companies Owned by Square (Block)
Startups
How Cash App Makes Money
Investing
What Type of Brokerage Account Is Right for You?
Automated Investing
Robo-Advisors and Young Investors
Best Robo Advisor Companies
Betterment Vs. M1 Finance
Best Robo Advisor Companies
Best Robo-Advisors
About Us
Terms of Service
Dictionary
Editorial Policy
Advertise
News
Privacy Policy
Contact Us
Careers
Your Privacy Choices
#
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Investopedia is part of the
Dotdash Meredith
publishing family.
Please review our updated
Terms of Service
.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Cookies Settings
Accept All Cookies
Yes, the output is rather messy. Part of the challenge with scraping websites is to figure out what to keep and how to combine the results effectively. With a text analysis task such as this, researchers look to see how we can effectively extract the relevant text and then find meaning in that text.
Again, many different things occur in the previous text book. Do not worry if it all does not make sense. Part of these two code samples is to show you possible destinations on this coding journey that you have just started.
1.3. Sample Program: Traveling Salesperson and Solvability#
Fundamentally, computer science is concerned with asking if a particular problem can be solved and, if it is solvable, how expensive is a specific solution.
One of the most well-studied problems in computer science is the traveling salesperson problem. Suppose a salesperson has to visit \(n\) cities and return to that starting point. What is the shortest route that visits each city exactly once?
The brute-force method would be to try all possible permutations of the city routes. With three cities, the following possibilities exist:
City 1, City 2, City 3
City 1, City 3, City 2
City 2, City 1, City 3
City 2, City 3, City 1
City 3, City 1, City 2
City 3, City 2, City 1
How long would it take to search all the possibilities to find the optimal answer?
\(n!\) possible permutations exist.
Assuming we can search one billion possibilities in a second, how much time is required to solve the problem for 20 cities? 100 cities?
1import math
2
3num_sec_in_day = 24 * 60 * 60
4num_tries_per_second = 1_000_000_000
5num_cities = 20
6num_route_permutations = math.factorial(num_cities)
7num_days = num_route_permutations // num_tries_per_second // num_sec_in_day
8print(f"{num_days:,}")
28,158
Try running the above code block for different values for the number of cities. If you use a small value, the program prints zero as the code uses integral division //
which discards the remainder (e.g., 5 // 2
has the result of 2
, not 2.5
). For small values, take out // num_sec_in_day
to see the number of seconds or alter the assumption of one billion tries per second. How could you convert the result to the number of years? Try making these code changes in the above cell and re-running the cell. Part of being a computer scientist is to explore different possibilities.
You can also step through the code to see what occurs on each program step.
The traveling salesperson problem has direct applicability to real-life:
Paths robots need to take for manufacturing (e.g, welding a car, soldering a circuit board)
Delivery schedules for companies such as Amazon, FedEx, and UPS.
1.4. What is a Program?#
As mentioned at the start of this notebook, a program is a series of instructions to carry out a specific task. As you ran through these different examples, you may have noticed a few commonalities.
Each of these programs had some sort of input. The first example asked for the input from the user. The other two had “hard-coded” inputs through the search terms and the number of cities.
Each of the programs had some sort of output (result).
All three had some form of sequence of commands with assignments, mathematical operations, or other statements.
Each program used variables to hold information containing the current state of the program.
Each program used existing libraries and functions to produce the desired functionality. One aspect of modern programming is not only learning the syntax (the rules) of a programming language, but learning how to find and use existing libraries.
Additionally, as these notebooks will demonstrate, programs typically contain some form of conditional expression that determines if different blocks of code should execute. Finally, the last fundamental commonality is that programs will regularly have some form of repetition where an action (or sequence of actions) will repeated.
1.5. Abstraction and Encapsulation#
One of the keys to successful programming is to apply fundamental programming principles. In this notebook, we have relied heavily upon two, abstraction and encapsulation, frequently appearing together. Abstraction seeks to distill a concept into its fundamental parts, while encapsulation bundles those parts and hides the implementation’s necessary and sometimes complex details. With abstraction, we focus on the outside view of an object or function, while encapsulation hides the exact details and steps to perform a specific task. For example, to query the Wayback Machine, many details were encapsulated by the urllib
module. We did not have to concern ourselves with opening a network connection, following the HTTP protocol, and parsing the results. Instead, the urllib
module handled those tasks with an abstracted (simplified) view to open a URL and read the response - the fundamental operations.
We take advantage of abstraction, encapsulation, and other programming principles when we use existing classes, modules, and functions. As a result, we can solve real-life problems by focusing on the essential parts without understanding the precise implementation details. Throughout these notebooks, we will apply programming principles to model real-life systems, problems, and tasks.
1.6. Python Documentation#
Python offers substantial documentation - both from within the interpreter with the help()
function and online.
The homepage for the Python documentation is at https://docs.python.org/3/
Visit that site and see what is available.
1.7. Suggested LLM Prompts#
Explain computer programming to me as if I were a college student using finance topics.
Explain the difference between abstraction and encapsulation in Python programming. Provide code examples using finance topics.
Provide 5 examples of intractable problems in computer science. Explain how each relates to financial technology.
1.8. Review Questions#
At the end of many of these notebooks, we will have series of questions to reflect and review upon the material. Some questions are meant you to reflect and do not necessarily have correct answers, while others are meant to directly test your recollection and understanding of the material.
How do problem-solving skills, domain knowledge, and programming skills combine together for effective programming? What does each bring?
Besides your laptop and smartphone, where is software present in your daily life? Where is software not present?
Identify the commonalities observed among the three programs in this notebook.
Explain the importance of abstraction and encapsulation in programming, as discussed in the text. Provide examples to illustrate how these principles are applied in real-life programming scenarios.
Which is a key aspect of programming?
- Accurate syntax
- Memorization of language features and library functions
- Understanding what needs to occur
- Well-trained minions
What is the primary purpose of abstraction in programming?
- To bundle complex details within an object.
- To reveal the precise implementation details of a concept.
- To simplify a concept by distilling it to its fundamental parts.
- To focus solely on the internal workings of a function.
What is the primary definition of a program?
- A collection of random instructions.
- A set of commands that can only be executed once.
- A series of instructions designed to automate tasks.
- A list of variables and their values.