Financial Networks: II. Fundamentals of Network Theory and FNA

Preview:

DESCRIPTION

Second lecture of a PhD level course on "Financial Networks" at Center for Financial Research at Goethe University, Frankfurt.

Citation preview

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

www.fna.fi

FNA

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 kimmo@soramaki.netTwitter: soramaki

Recommended