Strategic Spend Analysis with Python: Implementing the Kraljic Matrix
BURAK OVACIK
Indirect Sourcing Lead @ GE Aerospace | Strategic Sourcing and Procurement
The Kraljic Matrix, introduced by Peter Kraljic in his seminal work "Purchasing Must Become Supply Management" (1983), is a strategic tool widely used in procurement to categorize expenses and suppliers based on two main factors: supply risk and impact on profit. This model, foundational to modern supply chain management, classifies items into four quadrants, each requiring different management strategies: Strategic, Bottleneck, Leverage, and Non-Critical.
The matrix allows organizations to identify and prioritize items based on their importance and the risks associated with procurement, supporting the development of tailored strategies for each category (Kraljic, 1983). This approach has been further explored in resources like Purchasing and Supply Chain Management by Monczka et al. (2015), where procurement strategies are detailed, and the matrix is discussed as a framework for managing supplier relationships and procurement categories.
The classification method used in this code aligns with the recommendations found in academic literature, such as The Purchasing Chessboard by Schuh et al. (2014) and Purchasing and Supply Chain Management by Van Weele (2018), which provide a comprehensive overview of strategic procurement practices. Each quadrant in the Kraljic Matrix corresponds to a specific combination of supply risk and profit impact, guiding procurement teams on how to approach different categories of spend:
This Python code generates a Kraljic Matrix for MRO (Maintenance, Repair, and Operations) expenses, using a sample dataset to simulate values for supply risk and profit impact. Each item is classified according to the matrix framework, which provides a visual overview of where MRO spend items fall within the matrix, aiding in the development of appropriate procurement strategies.
The Kraljic Matrix’s relevance has been reinforced in the broader academic discourse, with researchers like Cani?ls and Gelderman (2005) discussing how power and dependency dynamics within procurement can influence the categorization and management of supplier relationships. Similarly, Choi and Krause (2006) analyze supply base complexity and transaction costs, further underlining the importance of strategic categorization in reducing risks and enhancing responsiveness.
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Create a sample dataset for MRO spend items
data = {
'Item': ['Part A', 'Part B', 'Part C', 'Part D', 'Part E', 'Part F', 'Part G', 'Part H'],
'Supply Risk': [0.9, 0.7, 0.4, 0.2, 0.3, 0.1, 0.5, 0.8], # Values from 0 (low) to 1 (high)
'Profit Impact': [0.8, 0.3, 0.7, 0.1, 0.5, 0.2, 0.9, 0.6] # Values from 0 (low) to 1 (high)
}
# Convert data to DataFrame
df = pd.DataFrame(data)
# Define quadrant thresholds
risk_threshold = 0.5
impact_threshold = 0.5
# Function to classify items into Kraljic Matrix quadrants
def classify_kraljic(row):
if row['Supply Risk'] >= risk_threshold and row['Profit Impact'] >= impact_threshold:
return 'Strategic'
elif row['Supply Risk'] >= risk_threshold and row['Profit Impact'] < impact_threshold:
return 'Bottleneck'
elif row['Supply Risk'] < risk_threshold and row['Profit Impact'] >= impact_threshold:
return 'Leverage'
else:
return 'Non-Critical'
# Apply classification to each item
df['Quadrant'] = df.apply(classify_kraljic, axis=1)
# Plotting the Kraljic Matrix
fig, ax = plt.subplots(figsize=(10, 8))
colors = {'Strategic': 'red', 'Bottleneck': 'orange', 'Leverage': 'blue', 'Non-Critical': 'green'}
# Scatter plot items by quadrant with color labels
for quadrant, color in colors.items():
subset = df[df['Quadrant'] == quadrant]
ax.scatter(subset['Supply Risk'], subset['Profit Impact'], s=100, c=color, label=quadrant, edgecolor='black')
# Add threshold lines
ax.axvline(risk_threshold, color='grey', linestyle='--')
ax.axhline(impact_threshold, color='grey', linestyle='--')
# Label each point with the item name
for _, row in df.iterrows():
ax.text(row['Supply Risk'] + 0.02, row['Profit Impact'] + 0.02, row['Item'], fontsize=9, ha='right')
# Set plot title and axis labels
ax.set_title('Kraljic Matrix for MRO Spend', fontsize=16, fontweight='bold')
ax.set_xlabel('Supply Risk', fontsize=12)
ax.set_ylabel('Profit Impact', fontsize=12)
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.legend(title="Quadrant", loc="upper left")
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()
# Display DataFrame with classification results
print(df[['Item', 'Supply Risk', 'Profit Impact', 'Quadrant']])
Explanation of the Code
领英推荐
Dataset
In the example code, we simulate a dataset containing Maintenance, Repair, and Operations (MRO) items with assigned values for Supply Risk and Profit Impact, each ranging between 0 (low) and 1 (high). These values represent critical procurement factors as defined by the Kraljic Matrix model, where high scores indicate significant risk or impact, requiring closer management (Kraljic, 1983; Monczka et al., 2015). This dataset creation reflects real-world situations where procurement teams must evaluate each item’s importance and vulnerability to supply disruptions.
Classification Function
The classification function categorizes each item into one of four quadrants based on specified threshold values for Supply Risk and Profit Impact (Schuh et al., 2014; Van Weele, 2018). These quadrants help in understanding and managing procurement strategies for different categories of items, ranging from high-risk strategic partnerships to low-risk, routine purchases.
Kraljic Matrix Plot
The visualization provides a clear representation of where each item falls within the Kraljic Matrix, aiding in the analysis of procurement needs:
Quadrant Interpretation
The matrix provides valuable insights into procurement strategy by dividing items into the following categories:
This visualization is effective for assessing MRO spending priorities within the Kraljic Matrix framework, providing a structured approach for procurement teams to allocate resources and focus on strategic and high-risk areas.
References