コード例 #1
0
def calculate(model_name, portfolio_url):
    print(model_name)
    # Exctract exposure data for calculation
    portfolio_raw = get_data(portfolio_url)
    portfolio_list = []
    for entry in portfolio_raw['_items']:
        portfolio_list.append(entry['EAD'])
    portfolio = np.array(portfolio_list)
    weights = cl.get_weights(portfolio)
    if model_name == 'shannon':
        value = cl.shannon(weights)
    elif model_name == 'hhi':
        value = cl.hhi(weights)
    return {"result": value}
コード例 #2
0
def calculate(model_name, portfolio_url):
    print(model_name)
    # Exctract exposure data for calculation
    portfolio_raw = get_data(portfolio_url)
    portfolio_list = []
    for entry in portfolio_raw['_items']:
        portfolio_list.append(entry['EAD'])
    portfolio = np.array(portfolio_list)
    weights = cl.get_weights(portfolio)
    if model_name == 'shannon':
        value = cl.shannon(weights)
    elif model_name == 'hhi':
        value = cl.hhi(weights)
    return {"result": value}
コード例 #3
0
def calculate_index(model_name, exposures):

    # Step 1: Calculate positions weights
    weights = cl.get_weights(exposures)

    # Step 2: Calculate index
    if model_name == 'Shannon_Index':
        value = cl.shannon(weights)
    elif model_name == 'HHI_Index':
        value = cl.hhi(weights)
    elif model_name == 'Gini_Index':
        value = cl.gini(weights)

    return {model_name: value}
コード例 #4
0
 def test_hhi(self):
     vector = np.ones(10)
     self.assertTrue(abs(cl.hhi(vector) - 0.0) < ERROR_MARGIN)
コード例 #5
0
ファイル: test.py プロジェクト: Ongiroo/concentration_library
 def test_hhi(self):
     portfolio = np.ones(10)
     portfolio = sorted(portfolio, reverse=True)
     weights = cl.weights(portfolio)
     self.assertTrue(abs(cl.hhi(weights) - 0.0) < ERROR_MARGIN)
コード例 #6
0
from scipy import special
import numpy as np
import matplotlib.pyplot as plt
import concentration_library as cl

if __name__ == "__main__":

    # generate portfolio data (list)
    # for some realism we use the Zipf power law

    a = 1.7  # zipf parameter
    x = []
    y = []
    for iter in range(0, 10000):  # portfolio simulations
        # Generate a portfolio of 100 entities
        portfolio = np.random.zipf(a, 100)
        portfolio = sorted(portfolio, reverse=True)
        weights = cl.get_weights(portfolio)
        # Compute HHI and Gini indexes
        hhi = cl.hhi(weights)
        gini = cl.gini(weights)
        x.append(hhi)
        y.append(gini)
    # Plot values of HHI against Gini
    plt.style.use(['dark_background', 'ggplot'])
    plt.title('HHI versus Gini for random portfolios')
    plt.ylabel('Gini Index')
    plt.xlabel('Herfindahl-Hirschman Index')
    plt.scatter(y, x)
    plt.show()
コード例 #7
0
 def test_hhi(self):
     portfolio = np.ones(10)
     portfolio = sorted(portfolio, reverse=True)
     weights = cl.weights(portfolio)
     self.assertTrue(abs(cl.hhi(weights) - 0.0) < ERROR_MARGIN)