Credo Ventures closes $88M fifth fund to stay the first cheque for CEE’s most ambitious founders
Back to Tutorials
businessTutorialintermediate

Credo Ventures closes $88M fifth fund to stay the first cheque for CEE’s most ambitious founders

March 23, 202617 views5 min read

Learn how to create a simulated investment portfolio tracker that demonstrates how venture capital firms like Credo Ventures manage their investments and measure ROI.

Introduction

In the world of venture capital and startup funding, understanding how investment funds operate is crucial for both aspiring entrepreneurs and investors. Credo Ventures, a prominent venture capital firm based in Central and Eastern Europe, has just closed its $88M fifth fund, signaling significant confidence in the region's startup ecosystem. This tutorial will guide you through creating a simulation of how such a venture fund might track and manage its investments using Python and basic financial modeling concepts. We'll build a simple investment portfolio tracker that can help visualize fund performance and investment allocation.

Prerequisites

  • Basic understanding of Python programming
  • Python installed on your system
  • Knowledge of financial concepts like ROI (Return on Investment)
  • Basic understanding of data structures (lists, dictionaries)

Why these prerequisites? Python is the perfect tool for financial modeling due to its simplicity and powerful libraries. Understanding basic financial concepts will help you interpret the results of our simulation. Data structures are essential for organizing and manipulating investment data effectively.

Step-by-Step Instructions

1. Set Up Your Python Environment

First, we need to create a Python script to house our investment tracker. Open your preferred code editor and create a new file called investment_tracker.py.

For this tutorial, we'll use basic Python libraries. You don't need to install additional packages, but for more advanced analysis, you might consider installing pandas and matplotlib.

# investment_tracker.py

class InvestmentPortfolio:
    def __init__(self):
        self.investments = []
        self.total_invested = 0
        self.total_value = 0

    def add_investment(self, company_name, investment_amount, current_value):
        investment = {
            'company': company_name,
            'amount': investment_amount,
            'current_value': current_value,
            'roi': (current_value - investment_amount) / investment_amount * 100
        }
        self.investments.append(investment)
        self.total_invested += investment_amount
        self.total_value += current_value

    def get_portfolio_summary(self):
        return {
            'total_invested': self.total_invested,
            'total_value': self.total_value,
            'portfolio_roi': (self.total_value - self.total_invested) / self.total_invested * 100
        }

    def display_investments(self):
        print("\nInvestment Portfolio Summary:")
        print("Company\t\t\tInvestment\t\tCurrent Value\t\tROI %")
        print("-" * 70)
        for investment in self.investments:
            print(f"{investment['company']:<20} ${investment['amount']:<10} ${investment['current_value']:<10} {investment['roi']:<10.2f}")
        print("-" * 70)
        summary = self.get_portfolio_summary()
        print(f"Total Invested: ${summary['total_invested']}")
        print(f"Total Value: ${summary['total_value']}")
        print(f"Portfolio ROI: {summary['portfolio_roi']:.2f}%")

2. Create Sample Investments

Now, let's simulate some investments that might be typical for a fund like Credo Ventures. These investments will represent the kind of early-stage startups they might invest in.

def main():
    # Create a new portfolio
    portfolio = InvestmentPortfolio()
    
    # Add sample investments (simulating Credo Ventures' investments)
    portfolio.add_investment("UiPath", 2000000, 15000000)  # 2M invested, 15M current value
    portfolio.add_investment("ElevenLabs", 1500000, 12000000)  # 1.5M invested, 12M current value
    portfolio.add_investment("Credo Ventures Startup A", 500000, 2000000)  # 500K invested, 2M current value
    portfolio.add_investment("Credo Ventures Startup B", 750000, 3000000)  # 750K invested, 3M current value
    portfolio.add_investment("Credo Ventures Startup C", 300000, 1000000)  # 300K invested, 1M current value
    
    # Display the portfolio
    portfolio.display_investments()

if __name__ == "__main__":
    main()

3. Run the Simulation

Save your file and run it using Python:

python investment_tracker.py

You should see output similar to:

Investment Portfolio Summary:
Company			Investment		Current Value		ROI %
----------------------------------------------------------------------
UiPath			 $2000000		 $15000000		 650.00
ElevenLabs		 $1500000		 $12000000		 700.00
Credo Ventures Startup A	 $500000		 $2000000		 300.00
Credo Ventures Startup B	 $750000		 $3000000		 300.00
Credo Ventures Startup C	 $300000		 $1000000		 233.33
----------------------------------------------------------------------
Total Invested: $5050000
Total Value: $21000000
Portfolio ROI: 316.83%

4. Enhance the Tracker with Additional Features

Let's add more functionality to make our tracker more realistic and useful. We'll include a method to calculate the average ROI and sort investments by performance.

class InvestmentPortfolio:
    def __init__(self):
        self.investments = []
        self.total_invested = 0
        self.total_value = 0

    def add_investment(self, company_name, investment_amount, current_value):
        investment = {
            'company': company_name,
            'amount': investment_amount,
            'current_value': current_value,
            'roi': (current_value - investment_amount) / investment_amount * 100
        }
        self.investments.append(investment)
        self.total_invested += investment_amount
        self.total_value += current_value

    def get_portfolio_summary(self):
        return {
            'total_invested': self.total_invested,
            'total_value': self.total_value,
            'portfolio_roi': (self.total_value - self.total_invested) / self.total_invested * 100
        }

    def get_average_roi(self):
        if not self.investments:
            return 0
        total_roi = sum(investment['roi'] for investment in self.investments)
        return total_roi / len(self.investments)

    def sort_investments_by_roi(self):
        return sorted(self.investments, key=lambda x: x['roi'], reverse=True)

    def display_investments(self):
        print("\nInvestment Portfolio Summary:")
        print("Company\t\t\tInvestment\t\tCurrent Value\t\tROI %")
        print("-" * 70)
        for investment in self.investments:
            print(f"{investment['company']:<20} ${investment['amount']:<10} ${investment['current_value']:<10} {investment['roi']:<10.2f}")
        print("-" * 70)
        summary = self.get_portfolio_summary()
        print(f"Total Invested: ${summary['total_invested']}")
        print(f"Total Value: ${summary['total_value']}")
        print(f"Portfolio ROI: {summary['portfolio_roi']:.2f}%")
        print(f"Average ROI: {self.get_average_roi():.2f}%")

    def display_top_performers(self, n=3):
        sorted_investments = self.sort_investments_by_roi()
        print(f"\nTop {n} Performing Investments:")
        print("Company\t\t\tROI %")
        print("-" * 30)
        for i, investment in enumerate(sorted_investments[:n]):
            print(f"{investment['company']:<20} {investment['roi']:<10.2f}")

5. Update Main Function to Include New Features

Update your main function to include the new features:

def main():
    # Create a new portfolio
    portfolio = InvestmentPortfolio()
    
    # Add sample investments
    portfolio.add_investment("UiPath", 2000000, 15000000)
    portfolio.add_investment("ElevenLabs", 1500000, 12000000)
    portfolio.add_investment("Credo Ventures Startup A", 500000, 2000000)
    portfolio.add_investment("Credo Ventures Startup B", 750000, 3000000)
    portfolio.add_investment("Credo Ventures Startup C", 300000, 1000000)
    
    # Display the portfolio
    portfolio.display_investments()
    
    # Display top performers
    portfolio.display_top_performers(3)

if __name__ == "__main__":
    main()

6. Run Enhanced Simulation

Run the updated script to see the enhanced features in action:

python investment_tracker.py

This will now show both the portfolio summary and the top performing investments, giving you a more comprehensive view of how your simulated fund is performing.

Summary

In this tutorial, we've created a basic investment portfolio tracker that simulates how a venture capital firm like Credo Ventures might manage its investments. We've learned how to structure investment data, calculate ROI, and present financial information in a readable format. This simulation demonstrates the core principles behind how venture capital funds track their investments and measure performance.

The concepts we've covered—calculating ROI, tracking portfolio performance, and sorting investments by performance—are fundamental to understanding how venture capital firms operate. While this is a simplified model, it provides a foundation for more complex financial modeling and analysis that real venture capital firms use to make investment decisions.

As you continue to explore financial modeling and investment analysis, consider extending this project by adding features like:

  • Importing data from CSV files
  • Visualizing portfolio performance with charts
  • Adding more complex financial metrics
  • Integrating with financial APIs for real-time data

These enhancements will help you build more sophisticated tools for analyzing investment portfolios, similar to what professional venture capital firms use to evaluate their investments and make strategic decisions.

Source: TNW Neural

Related Articles