Financial Networks
2. Fundamentals of NetworkTheory and FNA
Dr. Kimmo SoramäkiFounder and CEOFNA, www.fna.fi
Center for Financial Studies at the Goethe UniversityPhD Mini-course Frankfurt, 25 January 2013
3
FNA Platform
• Go to www.fna.fi
• Register account (click login on top right)
• Watch ‘Getting started with FNA’ video
• More documentation available at www.fna.fi/gettingstarted
4
FNA Commands
• FNA operates on commands that are submitted to FNA server for execution. Commands explore the database, alter it or create visualizations from it
• Command syntax:
commandname –parameter1 value1 –parameter2 value2 …
e.g.
loada -file sample-arcs.csv -preserve false
(load arcs from sample-arcs.csv file and don’t preserve any existing networks in database)
• Each command is on a single line. Character # marks a comment line
• Commands can be bundled into scripts and executed in one go
5
Data Model
loada -file sample-arcs.csv -preserve false
network,source,target,value2005-1Q,Australia,Austria,4992005-1Q,Australia,Belgium,11352005-1Q,Australia,Canada,1884...
sample-arcs.csv
vertex_id : Australia
vertex_id : Austria
vertex_id : Belgium
vertex_id : Canada
arc_id : Australia-Austriavalue : 499
…
…
net_id : 2005-1Q
Stores the data into a graph database on FNA Server
6
Basic terms
• Graph• Network = Graph with properties
• Node, Vertex, (Point)
• Link, (Line)• Arc = Directed Link• Edge = Undirected Link
7
Types of Networks
Trivial Graph (1)
#G(V,E) = Trivial Graph
#V = {1}#E = {empty set}
# Add network ‘Trivial' to database. addn -n Trivial -preserve false
# Add vertex v1 to network ‘Trivial' .addv -id Trivial -v v1
# Visualize network ‘Trivial'.viz -id Trivial -vlabel vertex_id -vsizedefault 10 -fontsize 25 -saveas TrivialViz -scale 1
Empty Graph (2)
# G(V,E) = Empty Graph
# V = {1, 2, 3, 4}# E = {empty set}
# Add network ‘Empty' to database. # The -preserve parameter defines whethe to keep # existing networks in memory or to delete them addn -n Empty -preserve false
# Add vertices v1 to v4 to network ‘Empty' .addv -id Empty -v v1 addv -id Empty -v v2addv -id Empty -v v3 addv -id Empty -v v4
# Visualize network ‘Empty' . Add vertex names using -vlabel and change the font size of these labels using -fontsize. Set size of vertices to size 10 using -vsizedefault.
viz -id Empty -vlabel vertex_id -vsizedefault 10 -fontsize 25 -saveas EmptyViz
Simple Undirected Graph (3)
# G(V,E) = Simple Graph
# V = {1, 2, 3, 4}# E = {(1,2),(1,3),(2,3),(2,4),(3,4)}
# Add network ‘Simple' to database. addn -n Simple -preserve false
# Add vertices v1 to v4 to network ‘Simple'.addv -id Simple -v v1 addv -id Simple -v v2addv -id Simple -v v3addv -id Simple -v v4
# Add arcs to network ‘Simple'.adda -id Simple -a v1-v2adda -id Simple -a v1-v3adda -id Simple -a v2-v3 adda -id Simple -a v2-v4adda -id Simple -a v3-v4
# Visualize network ‘Simple'.viz -id Simple -vlabel vertex_id -awidthdefault 2 -vsizedefault 10 -fontsize 25 -arrows false -saveas
SimpleViz
Complete Graph –K4 (4)
# Add network 'netk4' to database. complete -nv 4 -directed false -preserve false
# Visualize network netk4.viz -vlabel vertex_id -awidthdefault 2 -vsizedefault 10 -fontsize 25 -arrows false -saveas
complete_k4
Notes
If no -saveas parameter is given, created networks are autonamed
Without -id paremeter in the viz -command all networks in memry are visualized
Complete Graph –K7 (5)
# Add network 'netk7' to database. complete -nv 7 -directed false -saveas netk7 -preserve false
# Visualize network netk7.viz -vlabel vertex_id -awidthdefault 2 -vsizedefault 10 -fontsize 25 -arrows false -saveas
complete_k7
Directed Graph, Digraph (6)
# Create a Petersen Graph# '-direction any' allows creation of arcs in any direction between two verticespetersen -direction any -seed 111 -saveas Digraph -preserve false
# Visualize the network. Setting the parameter -arrows true gives a directed network. viz -id Digraph -awidthdefault 2 -vsizedefault 10 -fontsize 25 -vlabel vertex_id -arrows true
-saveas Digraph
Directed Weighted Graph (7)# A directed and weighed Petersen graph.
# Create a Petersen Graph # '-direction both' creates arcs in both directionpetersen -direction both -seed 111 -saveas WeightedDigraph -
preserve false
# Set random arc propertycalcap -e [?random:uniform:1,10?] -saveas value
# Visualize the network# Setting the parameter '-arrows true' shows direction of arcs viz -id WeightedDigraph -alabel value -awidthdefault 3 -
vsizedefault 10 -fontsize 25 -vlabel vertex_id -arrows true -saveas Digraph
# Visualize arc values as arc widthviz -id WeightedDigraph -awidth value -awidthdefault 3 -
vsizedefault 10 -fontsize 25 -vlabel vertex_id -arrows true -saveas Digraph
15
Example application areas
Cross-border banking exposures Interbank payment flows
Bipartite Graph (8)#G(V,E) = Bipartite Graph
# Vl = {1, 2, 3, 4, 5, 6, 7, 8} # Vr = {9, 10, 11, 12, 13, 14, 15, 16} # E = {randomly generated set}
Bipartite Graph# Create a bipartite graph with 8 vertices in left group (-nl) and 8 vertices in right
group (-nr) and 12 randomly assigned arcs (-na) that will go in both directions. bipartite -nl 8 -nr 8 -na 12 -direction any -partition true -seed 123 -saveas bipartite -
preserve false
# Separate the two sets of vertices, ready for visualization.bipartitelayout -partition partition
# Visualize the bipartite network.viz -vsizedefault 10 -vlabel vertex_id -awidthdefault 2 -fontsize 25 -saveas Bipartite
Notes
Adding the parameter -seed to the bipartite command will generate a specific graph. So for example using -seed 111 will always assign the arcs in the same way, to generate the same graph. Without the -seed parameter the the random generator is initialized from system time.
18
Example application areas
Banks Countries Insurers Risk Drivers
Tree (9)# A tree is a graph with no cycles
# Create a tree with 6 verticestree -nv 10 -seed 111 -saveas Tree
#Visualize the treeviz -id Tree -vlabel vertex_id -vsizedefault 5 -awidthdefault 3
Notes
A forest is a disjoint union of trees
Minimum Spanning Tree (10)
#G(V,E) = MST,
#V = {1, 2, 3, 4, 5, 6, 7}#E = {(1,2),(1,4),(3,2),(3,4),(4,6),(4,7),(5,3),(5,4),(6,5),(6,7),(7,6)}
Minimum Spanning Tree# Create random network with 10 vertices and 30 arcsrandom -nv 5 -na 10 -seed 123 -preserve false
# Calculate random arc property between 1 and 10calcap -e [?random:uniform:1,10:111?] -saveas value
# Visualize original networkviz -vlabel vertex_id -awidthdefault 2 -saveas Random
# Identify minimun spanning tree for 'value' propertyminst -p value
# Highlight Minimum Spannign Tree in 'Random' networkviz -acolor minst -alabel value -awidthdefault 2 -saveas RandomWithMST
# Drop arcs not in Minimum Spannin treedropa -e minst=false
# Visualize Minimum Spanning Treeviz -vlabel vertex_id -awidthdefault 2 -alabel value -saveas MST
22
MST: ApplicationRosario Mantegna (1999). Hierarchical Structure in Financial Markets. Eur. Phys. J. B 11, 193-197.
23
Connectivity
Degree (11)
# Add network 'degree' to databasepetersen -direction any -seed 111 -saveas Path -
preserve false
# Calculate degree, in-degree and out-degreedegree -saveas degreedegree -direction in -saveas in-degreedegree -direction out -saveas out-degree
# Visualize network degree. The vertices are labelled using their degree.
viz -vlabel degree -vsizedefault 10 -vcolordefault orange -fontsize 25 -awidthdefault 3 -saveas Degree
viz -vlabel in-degree -vsizedefault 10 -vcolordefault orange -fontsize 25 -awidthdefault 3 -saveas In-Degree
viz -vlabel out-degree -vsizedefault 10 -vcolordefault orange -fontsize 25 -awidthdefault 3 -saveas Out-Degree
Degree
In-Degree
Out-Degree
25
Degree Distribution
The topology of interbank payment flows. Soramäki et al. Physica A: Statistical Mechanics and its Applications 379 (1), 317-333
26
Degree Correlations
• Calculate – Neighbor degree/out-degree/in-degree (and)– Successor degree/out-degree/in-degree (asd)– Predecessor degree/out-degree/in-degree (apd)
• Correlate to degree/out-degree/in-degree of each node:– zero for uncorrelated networks– positive for assortative networks and – negative fordisasortative networks
• In assortative networks nodes with a given degree are more likely to have links with nodes of similar degree. Disassortative if the opposite is true.
27
Example: US Banks
Paths, Trails, Walks (12)
# Create a Petersen Graph# -seed 111 allows the same standard layout to be produced
each time.petersen -direction any -seed 111 -saveas Path -preserve false
# Calculate the path from vertex 5 to vertex 8distance -from 00005 -to 00008 -p value -savepath true
# Visualize the network. The arc colors highlight the pathviz -acolor path(00005,00008) -awidthdefault 2 -vsizedefault
10 -fontsize 25 -vlabel vertex_id -saveas Path
Notes
A Walk is any free movement along the arcsA Trail is a walk where a given arc is visited only onceA Path is a walk where a given vertex is visited only onceA Geadesic Path is the Shortest PathA Cycle is a path starting and ending to the same vertex
29
Other connectivity measures
• Size: Number of arcs
• Order: Number of vertices
• Connectivity: order/(size*(size-1))
• Ego distance: distance to/from given vertex from/to other vertices
• Eccentricity: Maximum distance from/to a vertex
• Diameter: Maximum eccentricity
• Clustering coefficient: Share of neighbours with links
30
Weighted Shortest Path (13)
# Create a Petersen Graph# -seed 111 allows the same standard layout to be produced
each time.petersen -direction any -seed 111 -saveas Path -preserve false
#Assign random values to arcs.calcap -e[?random:uniform:1,10:104?] -saveas value
# Calculate the path from vertex 5 to vertex 8distance -from 00005 -to 00008 -p value -savepath true
# Visualize the network. The arc colors highlight the pathviz -acolor path(00005,00008) -alabel value -awidthdefault 2 -
vsizedefault 10 -fontsize 25 -vhover vertex_id -saveas WeightedPath4
Components
GWCC : Giant Weakly Connected ComponentGIN : Giant In-ComponentGSSC : Giant Strongly Connected ComponentGOUT : Giant Out-Component
Dorogovtsev S.N., J.F.F. Mendes, and A.N. Samukhin(2001). “Giant strongly connected component of directed networks”, Phys. Rev. E 64.
Weakly Connected Graph (14)
# Create random networkrandom -nv 30 -na 40 -seed 100 -preserve false
# Identify SCwc
# Color vertices in SC as redsetvp -p color -value blacksetvp -e wc=0 -p color -value red
# Create visualizationviz -vcolor color -vsizedefault 5 -saveas WCViZ
Strongly Connected Graph (15)
# Create random networkrandom -nv 30 -na 60 -seed 100 -preserve false
# Identify SCsc
# Color vertices in SC as redsetvp -p color -value blacksetvp -e sc=0 -p color -value red
# Color arcs within nodes in SC as redcalcap -e source.sc=0 -saveas srcsccalcap -e target.sc=0 -saveas tgtsccalcap -e "srcsc AND tgtsc" -saveas scarcsetap -p color -value blacksetap -p color -e scarc=true -value red
# Create visualizationviz -vcolor color -acolor color -vsizedefault 8 -awidthdefault 2 -saveas SCViZ
Blog, Library and Demos at www.fna.fi
Dr. Kimmo Soramäki [email protected]: soramaki
Top Related