Correlogram
Financial Portfolio Metrics
Correlation analysis of investment performance indicators by asset class
Output
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
np.random.seed(123)
n = 180
asset_classes = np.random.choice(['Equity', 'Bond', 'Commodity'], n)
data = {
'Return (%)': np.where(asset_classes == 'Equity', np.random.normal(12, 8, n),
np.where(asset_classes == 'Bond', np.random.normal(4, 2, n), np.random.normal(8, 12, n))),
'Volatility': np.where(asset_classes == 'Equity', np.random.normal(18, 5, n),
np.where(asset_classes == 'Bond', np.random.normal(5, 1.5, n), np.random.normal(22, 8, n))),
'Sharpe': np.random.normal(0.8, 0.4, n),
'Beta': np.where(asset_classes == 'Equity', np.random.normal(1, 0.3, n),
np.where(asset_classes == 'Bond', np.random.normal(0.2, 0.1, n), np.random.normal(0.5, 0.2, n))),
'Asset': asset_classes
}
df = pd.DataFrame(data)
plt.style.use('dark_background')
sns.set_style("darkgrid", {'axes.facecolor': '#0a0a0f', 'figure.facecolor': '#0a0a0f', 'grid.color': '#333333'})
palette = {'Equity': '#27D3F5', 'Bond': '#6CF527', 'Commodity': '#F5B027'}
g = sns.pairplot(
df,
hue='Asset',
palette=palette,
height=2,
kind='reg',
diag_kind='kde',
markers=['o', '^', 's'],
plot_kws={'scatter_kws': {'alpha': 0.6, 's': 45, 'edgecolor': 'white', 'linewidths': 0.4}, 'line_kws': {'linewidth': 2}},
diag_kws={'alpha': 0.5, 'linewidth': 2.5}
)
g.fig.set_facecolor('#0a0a0f')
for ax in g.axes.flat:
if ax:
ax.set_facecolor('#0a0a0f')
for spine in ax.spines.values():
spine.set_color('#333333')
ax.tick_params(colors='#888888')
ax.xaxis.label.set_color('white')
ax.yaxis.label.set_color('white')
g.fig.suptitle('Portfolio Risk-Return Analysis', fontsize=14, fontweight='bold', color='white', y=1.02)
plt.setp(g._legend.get_title(), color='white')
plt.setp(g._legend.get_texts(), color='white')
plt.tight_layout()
plt.show()
Library
Matplotlib
Category
Statistical
More Correlogram examples
☕