SECTION 1: LEARNING OBJECTIVES
By the end of this lesson, you will be able to:
-
Define sustainable finance and ESG investing.
-
Identify the key ESG frameworks – GRI, SASB, TCFD, ISSB.
-
Understand ESG product categories – green loans, ESG funds, green bonds.
-
Apply ESG integration in investment products.
-
Measure ESG product performance using key metrics.
-
Understand the regulatory landscape – SFDR, EU Taxonomy.
-
Develop an ESG product strategy for a digital bank.
SECTION 2: WHAT IS SUSTAINABLE FINANCE?
2.1 Definition
Sustainable finance refers to the integration of Environmental, Social, and Governance (ESG) criteria into financial services – including investment decisions, lending, and risk management – to promote long-term sustainable development.
2.2 The Three Pillars of ESG
| Pillar | Description | Examples |
|---|---|---|
| Environmental (E) | Impact on the natural environment. | Carbon emissions, resource use, pollution, biodiversity. |
| Social (S) | Impact on people and society. | Labour standards, human rights, community relations. |
| Governance (G) | How the organisation is run. | Board structure, executive pay, transparency. |
2.3 Why ESG Matters in Banking
| Driver | Description |
|---|---|
| Regulatory Pressure | EU SFDR, CSRD, SEC climate disclosure rules. |
| Investor Demand | ESG assets projected to reach $50T by 2025. |
| Risk Management | Climate change poses material financial risks. |
| Reputation | Customers and stakeholders demand corporate responsibility. |
| Performance | Evidence that ESG integration can enhance returns. |
SECTION 3: ESG FRAMEWORKS AND STANDARDS
3.1 Key ESG Frameworks
| Framework | Focus | Use Case |
|---|---|---|
| GRI | Comprehensive sustainability reporting. | Corporate reporting. |
| SASB | Industry-specific material ESG issues. | Investor-focused disclosure. |
| TCFD | Climate-related financial risks. | Climate risk disclosure. |
| ISSB | Global baseline for sustainability disclosure. | Consolidated standards. |
| EU Taxonomy | Classification of sustainable activities. | Green investment. |
| SFDR | Sustainable finance disclosure regulation. | Fund classification. |
3.2 ESG Scoring
ESG Score is a composite measure of a company’s ESG performance (e.g., 0-100). It is calculated as a weighted average of E, S, and G scores:
ESG Score=wE×E+wS×S+wG×G
Where wE+wS+wG=1
SECTION 4: ESG PRODUCT CATEGORIES
4.1 ESG Product Types
| Category | Description | Examples |
|---|---|---|
| Green Loans | Loans for environmentally sustainable projects. | Solar financing, energy efficiency. |
| ESG Funds | Investment funds with ESG criteria. | ESG ETFs, sustainable mutual funds. |
| Green Bonds | Bonds for environmental projects. | Renewable energy, green buildings. |
| Impact Investing | Investments with measurable social/environmental impact. | Social impact bonds. |
| ESG Mortgages | Mortgage products with ESG incentives. | Energy-efficient home mortgages. |
| Carbon Offsetting | Products that offset carbon emissions. | Carbon offset cards. |
4.2 ESG Investment Strategies
| Strategy | Description | Example |
|---|---|---|
| Negative Screening | Exclude controversial sectors. | No fossil fuels, tobacco, weapons. |
| Positive Screening | Include high ESG performers. | Best-in-class ESG companies. |
| ESG Integration | Integrate ESG into financial analysis. | ESG-adjusted valuations. |
| Impact Investing | Invest for measurable impact. | Renewable energy projects. |
| Thematic Investing | Focus on ESG themes. | Clean energy, water, social equity. |
SECTION 5: REGULATORY LANDSCAPE
5.1 Key Regulations
| Regulation | Region | Requirements |
|---|---|---|
| SFDR | EU | Classify funds as Article 6, 8, or 9. |
| EU Taxonomy | EU | Classification of sustainable activities. |
| CSRD | EU | Expanded non-financial reporting. |
| TCFD | Global | Climate-related disclosure. |
| SEC Climate Rules | US | Climate risk disclosure. |
| ISSB | Global | Sustainability disclosure standards. |
5.2 SFDR Fund Classification
| Article | Description | ESG Requirements |
|---|---|---|
| Article 6 | Standard funds. | No ESG integration. |
| Article 8 | ESG-focused funds. | ESG integration, disclose environmental/social characteristics. |
| Article 9 | Sustainability funds. | Sustainable investment objective. |
SECTION 6: IMPLEMENTATION IN PYTHON – ESG PRODUCTS
# =================================================================== # MODULE 7, LESSON 6: SUSTAINABLE FINANCE AND ESG PRODUCTS # =================================================================== import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from datetime import datetime import warnings warnings.filterwarnings('ignore') print("="*70) print("SUSTAINABLE FINANCE AND ESG PRODUCTS") print("="*70) # ---------------------------------------------------------------- # PART A: ESG PRODUCT PORTFOLIO # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART A: ESG Product Portfolio") print("-"*60) esg_products = pd.DataFrame({ 'Product': [ 'ESG ETF', 'Green Bond Fund', 'Clean Energy Fund', 'Sustainable Savings Account', 'Green Mortgage', 'ESG Robo-Advisor', 'Carbon Offset Card' ], 'Category': [ 'Investment', 'Investment', 'Investment', 'Deposit', 'Lending', 'Investment', 'Payments' ], 'ESG Focus': [ 'Integrated', 'Environmental', 'Environmental', 'Environmental', 'Environmental', 'Integrated', 'Environmental' ], 'Assets ($M)': [500, 300, 200, 100, 150, 250, 50], 'Growth (%)': [25, 30, 35, 20, 15, 40, 45], 'Fee (%)': [0.30, 0.40, 0.50, 0.10, 1.00, 0.35, 0.05] }) print("ESG Product Portfolio:") print(esg_products.to_string(index=False)) # Visualise fig, axes = plt.subplots(1, 2, figsize=(14, 5)) # Assets by Product ax = axes[0] esg_sorted = esg_products.sort_values('Assets ($M)', ascending=True) ax.barh(esg_sorted['Product'], esg_sorted['Assets ($M)'], color='green', alpha=0.7) ax.set_xlabel('Assets ($M)') ax.set_title('ESG Assets by Product') ax.grid(True, alpha=0.3) # Growth vs Assets ax = axes[1] scatter = ax.scatter(esg_products['Assets ($M)'], esg_products['Growth (%)'], s=esg_products['Assets ($M)'] * 0.5, alpha=0.7) for i, row in esg_products.iterrows(): ax.annotate(row['Product'], (row['Assets ($M)'] + 5, row['Growth (%)'] + 0.5)) ax.set_xlabel('Assets ($M)') ax.set_ylabel('Growth (%)') ax.set_title('ESG Product Growth vs Assets') ax.grid(True, alpha=0.3) plt.tight_layout() plt.savefig('esg_products.png', dpi=300, bbox_inches='tight') plt.show() print("ESG product visualisation saved as 'esg_products.png'") # ---------------------------------------------------------------- # PART B: ESG SCORING FRAMEWORK # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART B: ESG Scoring Framework") print("-"*60) # Define company ESG scores companies = pd.DataFrame({ 'Company': [ 'Company A', 'Company B', 'Company C', 'Company D', 'Company E' ], 'Sector': [ 'Technology', 'Energy', 'Finance', 'Healthcare', 'Consumer' ], 'E_Score': [85, 45, 65, 70, 55], 'S_Score': [80, 50, 70, 75, 60], 'G_Score': [90, 60, 75, 80, 65] }) # Calculate ESG score (weighted average) weights = {'E': 0.4, 'S': 0.3, 'G': 0.3} companies['ESG_Score'] = ( companies['E_Score'] * weights['E'] + companies['S_Score'] * weights['S'] + companies['G_Score'] * weights['G'] ).round(2) print("Company ESG Scores:") print(companies.to_string(index=False)) # Visualise fig, ax = plt.subplots(figsize=(10, 6)) companies.set_index('Company')[['E_Score', 'S_Score', 'G_Score', 'ESG_Score']].plot(kind='bar', ax=ax) ax.set_ylabel('Score') ax.set_title('ESG Scores by Company') ax.legend(loc='best') ax.grid(True, alpha=0.3) plt.tight_layout() plt.savefig('esg_scores.png', dpi=300, bbox_inches='tight') plt.show() print("ESG scores visualisation saved as 'esg_scores.png'") # ---------------------------------------------------------------- # PART C: ESG PORTFOLIO CONSTRUCTION # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART C: ESG Portfolio Construction") print("-"*60) # Generate synthetic ESG portfolio data np.random.seed(42) n_companies = 100 esg_portfolio = pd.DataFrame({ 'company_id': range(1, n_companies + 1), 'esg_score': np.random.normal(65, 15, n_companies).clip(20, 95), 'return_expected': np.random.normal(0.08, 0.03, n_companies).clip(0.02, 0.15), 'volatility': np.random.normal(0.15, 0.05, n_companies).clip(0.05, 0.35), 'sector': np.random.choice(['Technology', 'Energy', 'Finance', 'Healthcare', 'Consumer', 'Utilities'], n_companies) }) # ESG screening: include companies with ESG score > 60 esg_portfolio['pass_esg'] = esg_portfolio['esg_score'] > 60 # Portfolio options normal_portfolio = esg_portfolio.sample(frac=0.3, random_state=42) esg_portfolio_selected = esg_portfolio[esg_portfolio['pass_esg']].sample(frac=0.3, random_state=42) print("ESG Portfolio Summary:") print(f"Total Companies: {len(esg_portfolio)}") print(f"ESG Pass Rate: {esg_portfolio['pass_esg'].mean():.2%}") print(f"Normal Portfolio: {len(normal_portfolio)} companies") print(f"ESG Portfolio: {len(esg_portfolio_selected)} companies") # Compare portfolios normal_return = normal_portfolio['return_expected'].mean() normal_volatility = normal_portfolio['volatility'].mean() esg_return = esg_portfolio_selected['return_expected'].mean() esg_volatility = esg_portfolio_selected['volatility'].mean() comparison = pd.DataFrame({ 'Portfolio': ['Normal', 'ESG'], 'Expected Return (%)': [normal_return * 100, esg_return * 100], 'Volatility (%)': [normal_volatility * 100, esg_volatility * 100], 'Avg ESG Score': [ normal_portfolio['esg_score'].mean(), esg_portfolio_selected['esg_score'].mean() ] }) print("\nPortfolio Comparison:") print(comparison.to_string(index=False)) # ---------------------------------------------------------------- # PART D: GREEN LOAN PRODUCT SIMULATION # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART D: Green Loan Product Simulation") print("-"*60) class GreenLoanProduct: """Simulate a green loan product.""" def __init__(self): self.loans = [] self.green_projects = [] def create_loan(self, customer_id, amount, term, purpose): """Create a green loan.""" loan = { 'loan_id': len(self.loans) + 1, 'customer_id': customer_id, 'amount': amount, 'term': term, 'purpose': purpose, 'interest_rate': self.calculate_rate(purpose), 'green': self.is_green(purpose), 'created_at': datetime.now().isoformat(), 'status': 'Active' } self.loans.append(loan) return loan def calculate_rate(self, purpose): """Calculate interest rate based on purpose.""" base_rate = 0.05 if purpose in ['Solar Panels', 'EV', 'Energy Efficiency', 'Green Building']: return base_rate - 0.01 # Green discount return base_rate def is_green(self, purpose): """Check if the loan is green.""" green_purposes = ['Solar Panels', 'EV', 'Energy Efficiency', 'Green Building', 'Sustainable Agriculture', 'Water Conservation'] return purpose in green_purposes def get_portfolio_stats(self): """Get green loan portfolio statistics.""" if not self.loans: return {'total_loans': 0} green_loans = [l for l in self.loans if l['green']] total_amount = sum(l['amount'] for l in self.loans) green_amount = sum(l['amount'] for l in green_loans) return { 'total_loans': len(self.loans), 'green_loans': len(green_loans), 'total_amount': total_amount, 'green_amount': green_amount, 'green_ratio': green_amount / total_amount if total_amount > 0 else 0 } # Test green loan product green_loan = GreenLoanProduct() # Create loans green_loan.create_loan('CUST001', 25000, 60, 'Solar Panels') green_loan.create_loan('CUST002', 15000, 48, 'EV') green_loan.create_loan('CUST003', 30000, 72, 'Home Renovation') green_loan.create_loan('CUST004', 50000, 84, 'Energy Efficiency') green_loan.create_loan('CUST005', 10000, 36, 'Car Purchase') stats = green_loan.get_portfolio_stats() print("Green Loan Portfolio:") print(f" Total Loans: {stats['total_loans']}") print(f" Green Loans: {stats['green_loans']}") print(f" Green Ratio: {stats['green_ratio']:.2%}") # ---------------------------------------------------------------- # PART E: ESG PRODUCT METRICS # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART E: ESG Product Metrics Dashboard") print("-"*60) esg_metrics = pd.DataFrame({ 'Metric': [ 'ESG Assets Under Management', 'Green Loan Portfolio', 'ESG Fund Performance', 'Carbon Reduction Impact', 'ESG Client Adoption', 'SFDR Article 8/9 Funds', 'ESG NPS', 'Regulatory Compliance' ], 'Current Value': [ '$1.2B', '$250M', '8.2%', '15,000 tonnes', '35%', '12', '58', '92%' ], 'Target Value': [ '$5.0B', '$1.0B', '> 10%', '50,000 tonnes', '> 60%', '25+', '> 70', '100%' ], 'Status': ['🟡', '🟡', '🟡', '🟡', '🔴', '🟡', '🟡', '🟡'] }) print("ESG Product Metrics Dashboard:") print(esg_metrics.to_string(index=False)) # ---------------------------------------------------------------- # PART F: ESG PRODUCT ROADMAP # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART F: ESG Product Roadmap") print("-"*60) roadmap = { "Phase 1 (0-6 months) – Foundation": { "Focus": "Build ESG product foundation.", "Activities": [ "Launch ESG ETF and green bond funds.", "Develop ESG scoring framework.", "Implement green loan product.", "Comply with SFDR Article 8 requirements." ], "Success Metrics": ["ESG AUM > $500M", "Green loan portfolio > $100M"] }, "Phase 2 (6-12 months) – Scale": { "Focus": "Scale ESG products.", "Activities": [ "Launch ESG robo-advisory.", "Add sustainable savings account.", "Implement green mortgage product.", "Achieve SFDR Article 9 for select funds." ], "Success Metrics": ["ESG AUM > $1.5B", "ESG client adoption > 40%"] }, "Phase 3 (12-24 months) – Expansion": { "Focus": "Expand ESG product range.", "Activities": [ "Launch impact investing products.", "Implement carbon offset products.", "Build ESG analytics platform.", "Achieve industry-leading ESG credentials." ], "Success Metrics": ["ESG AUM > $3B", "Carbon reduction > 30,000 tonnes"] }, "Phase 4 (24+ months) – Leadership": { "Focus": "Industry-leading ESG products.", "Activities": [ "Launch full ESG banking suite.", "Build global ESG capabilities.", "Achieve sustainability leadership.", "Continuous innovation." ], "Success Metrics": ["Industry-leading ESG products", "Continuous improvement"] } } for phase, details in roadmap.items(): print(f"\n{phase}:") print(f" Focus: {details['Focus']}") print(" Activities:") for activity in details['Activities']: print(f" • {activity}") print(" Success Metrics:") for metric in details['Success Metrics']: print(f" • {metric}") # ---------------------------------------------------------------- # PART G: SUMMARY AND RECOMMENDATIONS # ---------------------------------------------------------------- print("\n" + "="*70) print("PART G: Summary and Recommendations") print("="*70) print(""" Sustainable Finance and ESG Products – Key Takeaways: 1. Sustainable finance integrates ESG criteria into financial services. 2. ESG pillars: Environmental, Social, Governance. 3. Key frameworks: GRI, SASB, TCFD, ISSB, EU Taxonomy, SFDR. 4. ESG products: green loans, ESG funds, green bonds, impact investing. 5. Investment strategies: negative screening, positive screening, ESG integration, impact investing. 6. Regulatory landscape: SFDR, EU Taxonomy, CSRD, TCFD. 7. Key metrics: ESG AUM, green loan portfolio, ESG performance, carbon reduction. Recommendations: - Launch ESG ETF and green bond funds. - Implement green loan products. - Develop ESG scoring and analytics. - Comply with SFDR and EU Taxonomy. - Build ESG robo-advisory capabilities. - Continuously innovate and improve ESG products. """) print("="*70) print("END OF LESSON 6 – MODULE 7") print("="*70)
SECTION 7: SUMMARY FOR THE DATA PRACTITIONER
-
Sustainable finance integrates Environmental, Social, and Governance (ESG) criteria into financial services.
-
ESG pillars: Environmental (carbon, pollution), Social (labour, human rights), Governance (board, transparency).
-
Key frameworks include GRI, SASB, TCFD, ISSB, EU Taxonomy, and SFDR.
-
ESG products include green loans, ESG funds (ETFs, mutual funds), green bonds, impact investing, and carbon offset products.
-
Investment strategies include negative screening, positive screening, ESG integration, and impact investing.
-
Regulatory landscape includes SFDR (fund classification), EU Taxonomy (sustainable activities), CSRD (reporting), and TCFD (climate disclosure).
-
Key metrics include ESG AUM, green loan portfolio, ESG fund performance, carbon reduction impact, and ESG client adoption.
SECTION 8: RECOMMENDED NEXT STEPS
-
Launch ESG ETF and green bond funds.
-
Implement green loan products.
-
Develop ESG scoring and analytics.
-
Comply with SFDR and EU Taxonomy.
-
Build ESG robo-advisory capabilities.
-
Continuously innovate and improve ESG products.
-
Prepare for Lesson 7:Â Product Innovation and Lifecycle Management.