SECTION 1: LEARNING OBJECTIVES

By the end of this lesson, you will be able to:

  • Define securities and explain the Howey Test.

  • Understand the difference between securities, commodities, and utility tokens.

  • Explain token classification frameworks (US, EU, UK, Asia).

  • Describe the regulatory implications of token classification.

  • Differentiate between equity tokens, debt tokens, and utility tokens.

  • Identify key legal cases shaping token classification.

  • Implement a basic token classification assessment in Python.

  • Develop a framework for token classification and compliance.


SECTION 2: WHAT IS A SECURITY?

2.1 Definition

security is a financial instrument that represents an ownership position in a company (stock), a creditor relationship with a government or corporation (bond), or rights to ownership (options, derivatives). In the context of blockchain, token classification determines whether a token is subject to securities regulations.

2.2 The Howey Test

The Howey Test is a Supreme Court test for determining whether a transaction qualifies as an “investment contract” and therefore a security.

The Four Prongs:

text
┌─────────────────────────────────────────────────────────────────────────────┐
│                    THE HOWEY TEST                                           │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  1. INVESTMENT OF MONEY                                                    │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Did investors contribute money or assets?                        │   │
│  │ • Tokens acquired through investment (not mining or airdrop)       │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  2. COMMON ENTERPRISE                                                      │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Are the investors' funds pooled?                                   │   │
│  │ • Is there a common business venture?                               │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  3. EXPECTATION OF PROFITS                                                │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Do investors expect to profit?                                     │   │
│  │ • Is profit expected from the efforts of others?                   │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  4. EFFORTS OF OTHERS                                                     │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Are profits generated by the efforts of a promoter/third party?   │   │
│  │ • Are investors passive, relying on others?                        │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  IF ALL FOUR PRONGS ARE MET → THE TOKEN IS A SECURITY                     │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

2.3 Key Legal Precedents

 
 
Case Year Key Ruling Impact on Crypto
SEC v. Howey 1946 Established Howey Test Foundation for token classification
SEC v. Ripple Labs 2020 XRP not necessarily a security Programmatic sales not securities
SEC v. LBRY 2022 LBC token is a security Broad token classification
SEC v. Telegram 2019 Grams token is a security ICOs under scrutiny
SEC v. Kik 2019 Kin token is a security ICO enforcement

SECTION 3: TOKEN CLASSIFICATION FRAMEWORKS

3.1 Classification by Purpose

text
┌─────────────────────────────────────────────────────────────────────────────┐
│                    TOKEN CLASSIFICATION                                     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  1. PAYMENT TOKENS (Cryptocurrencies)                                      │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Used as a medium of exchange                                       │   │
│  │ • No expectation of profit from others' efforts                     │   │
│  │ • Examples: Bitcoin, Litecoin                                      │   │
│  │ • Regulatory treatment: Generally not securities                   │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  2. SECURITY TOKENS                                                         │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Represent ownership, debt, or rights                             │   │
│  │ • Expectation of profit from others' efforts                       │   │
│  │ • Examples: Tokenised stocks, bonds, equity                         │   │
│  │ • Regulatory treatment: Securities regulations apply               │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  3. UTILITY TOKENS                                                          │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Provide access to a product or service                            │   │
│  │ • May become securities if marketed as investment                  │   │
│  │ • Examples: BAT, Filecoin, ETH (debated)                           │   │
│  │ • Regulatory treatment: Varies, may be securities                  │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  4. ASSET-BACKED TOKENS                                                     │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Represent ownership of physical assets                            │   │
│  │ • Examples: Gold-backed tokens, real estate tokens                 │   │
│  │ • Regulatory treatment: May be commodities or securities           │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  5. HYBRID TOKENS                                                           │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Combine multiple classifications                                  │   │
│  │ • Examples: Governance tokens with investment features              │   │
│  │ • Regulatory treatment: Case-by-case assessment                    │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

3.2 Jurisdictional Classification Frameworks

United States (SEC):

  • Howey Test determines if token is a security.

  • Reves Test for notes/instruments.

  • Factors: investment of money, common enterprise, expectation of profits, efforts of others.

European Union (MiCA):

  • Three categories: CASPs, ARTs (Asset-Referenced Tokens), EMTs (Electronic Money Tokens).

  • Security tokens are outside MiCA scope (subject to existing securities law).

  • Utility tokens: not securities, but regulated under MiCA.

United Kingdom (FCA):

  • Token classification guidelines.

  • Security tokens: regulated as securities.

  • E-money tokens: regulated as e-money.

  • Utility tokens: unregulated (unless securities).

Singapore (MAS):

  • Payment tokens: regulated under PSA.

  • Digital Payment Tokens (DPTs): regulated for AML/CFT.

  • Security tokens: regulated under Securities and Futures Act.


SECTION 4: REGULATORY IMPLICATIONS

4.1 Securities Token Requirements

If a token is classified as a security, the following requirements apply:

 
 
Requirement Description
Registration Must register with SEC or qualify for exemption (Reg D, Reg S, etc.)
Disclosure Full disclosure of risks, financials, and business model
Trading Restrictions Limited to accredited investors (Reg D) or public markets
Transfer Restrictions Lock-up periods, transfer restrictions
Reporting Ongoing reporting obligations (10-K, 10-Q)
Anti-Fraud Prohibited from misrepresentation

4.2 Exemptions

 
 
Exemption Description Use Case
Reg D (506) Private placement Accredited investors only
Reg A+ Mini-IPO Retail investors, up to $75M
Reg S Offshore offerings Non-US investors
Reg CF Crowdfunding Up to $5M from retail

4.3 Implications of Misclassification

 
 
Consequence Description
Enforcement Actions SEC enforcement, fines, penalties
Rescission Rights Investors may rescind investment
Legal Liability Officers may be personally liable
Reputational Damage Loss of trust and credibility
Business Disruption Halting token trading

SECTION 5: IMPLEMENTATION IN PYTHON

python
# ===================================================================
# MODULE 5, LESSON 2: SECURITIES LAWS AND TOKEN CLASSIFICATION
# ===================================================================

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from typing import Dict, List, Optional
import warnings
warnings.filterwarnings('ignore')

print("="*70)
print("SECURITIES LAWS AND TOKEN CLASSIFICATION")
print("="*70)

# ----------------------------------------------------------------
# PART A: HOWEY TEST ASSESSMENT TOOL
# ----------------------------------------------------------------

print("\n" + "-"*60)
print("PART A: Howey Test Assessment Tool")
print("-"*60)

class HoweyTest:
    """
    Simplified Howey Test assessment for token classification.
    """
    def __init__(self, token_name: str):
        self.token_name = token_name
        self.prongs = {
            'investment_of_money': None,
            'common_enterprise': None,
            'expectation_of_profits': None,
            'efforts_of_others': None
        }
        self.assessment = {}
    
    def assess_prong(self, prong: str, score: float) -> None:
        """Assess a prong with a score (0 = no, 1 = maybe, 2 = yes)."""
        self.prongs[prong] = score
        status = {0: 'No', 1: 'Unclear', 2: 'Yes'}
        print(f"  {prong.replace('_', ' ')}: {status.get(score, 'Unknown')}")
    
    def get_result(self) -> Dict:
        total_score = sum(self.prongs.values())
        max_score = len(self.prongs) * 2
        percentage = total_score / max_score
        
        if percentage > 0.75:
            classification = 'Likely a Security'
        elif percentage > 0.5:
            classification = 'Potentially a Security'
        else:
            classification = 'Likely NOT a Security'
        
        return {
            'token_name': self.token_name,
            'total_score': total_score,
            'percentage': percentage,
            'classification': classification,
            'details': self.prongs
        }

# Simulate assessment for different tokens
test_results = []

# Token 1: Bitcoin
assessment = HoweyTest("Bitcoin")
print("\nAssessing Bitcoin...")
assessment.assess_prong('investment_of_money', 1)
assessment.assess_prong('common_enterprise', 0)
assessment.assess_prong('expectation_of_profits', 1)
assessment.assess_prong('efforts_of_others', 0)
result = assessment.get_result()
test_results.append(result)
print(f"  Classification: {result['classification']}")

# Token 2: Typical ICO Token (Security)
assessment = HoweyTest("ICOToken")
print("\nAssessing ICO Token...")
assessment.assess_prong('investment_of_money', 2)
assessment.assess_prong('common_enterprise', 2)
assessment.assess_prong('expectation_of_profits', 2)
assessment.assess_prong('efforts_of_others', 2)
result = assessment.get_result()
test_results.append(result)
print(f"  Classification: {result['classification']}")

# Token 3: Utility Token (Borderline)
assessment = HoweyTest("UtilityToken")
print("\nAssessing Utility Token...")
assessment.assess_prong('investment_of_money', 2)
assessment.assess_prong('common_enterprise', 1)
assessment.assess_prong('expectation_of_profits', 1)
assessment.assess_prong('efforts_of_others', 0)
result = assessment.get_result()
test_results.append(result)
print(f"  Classification: {result['classification']}")

# Token 4: Pure Governance Token
assessment = HoweyTest("GovernanceToken")
print("\nAssessing Governance Token...")
assessment.assess_prong('investment_of_money', 2)
assessment.assess_prong('common_enterprise', 0)
assessment.assess_prong('expectation_of_profits', 0)
assessment.assess_prong('efforts_of_others', 0)
result = assessment.get_result()
test_results.append(result)
print(f"  Classification: {result['classification']}")

# ----------------------------------------------------------------
# PART B: TOKEN CLASSIFICATION COMPARISON
# ----------------------------------------------------------------

print("\n" + "-"*60)
print("PART B: Token Classification by Jurisdiction")
print("-"*60)

classification_data = {
    'Jurisdiction': ['US (SEC)', 'EU (MiCA)', 'UK (FCA)', 'Singapore (MAS)'],
    'Security Token': ['Securities', 'MiCA excluded, existing laws', 'Securities', 'Securities'],
    'Utility Token': ['May be security', 'Regulated under MiCA', 'Unregulated', 'Unregulated'],
    'Payment Token': ['Unregulated (CFTC)', 'Regulated under MiCA', 'Regulated (e-money)', 'Regulated (PSA)'],
    'Stablecoin': ['Regulated', 'EMTs/ARTs', 'Regulated', 'Regulated'],
    'DeFi Token': ['Enforcement', 'Under review', 'Under review', 'Monitoring']
}

classification_df = pd.DataFrame(classification_data)
print(classification_df.to_string(index=False))

# ----------------------------------------------------------------
# PART C: SECURITIES EXEMPTIONS
# ----------------------------------------------------------------

print("\n" + "-"*60)
print("PART C: Securities Exemptions")
print("-"*60)

exemptions_data = {
    'Exemption': ['Reg D (506)', 'Reg A+', 'Reg S', 'Reg CF'],
    'Target Investors': ['Accredited only', 'Retail + Accredited', 'Offshore only', 'Retail'],
    'Max Raise': ['Unlimited', '$75M', 'Unlimited', '$5M'],
    'Filing Requirements': ['Form D', 'Form 1-A', 'None (offshore)', 'Form C'],
    'Time to Market': ['Fast', 'Medium', 'Fast', 'Medium']
}

exemptions_df = pd.DataFrame(exemptions_data)
print(exemptions_df.to_string(index=False))

# ----------------------------------------------------------------
# PART D: REGULATORY ENFORCEMENT TRENDS
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART D: Regulatory Enforcement Trends")
print("-"*60)

enforcement_data = {
    'Year': ['2021', '2022', '2023', '2024'],
    'SEC Actions': [18, 32, 45, 50],
    'Fines (Millions)': [85, 120, 300, 150],
    'DeFi Cases': [1, 3, 8, 12],
    'Exchange Cases': [2, 4, 6, 8]
}

enforcement_df = pd.DataFrame(enforcement_data)
print(enforcement_df.to_string(index=False))

# Visualise
fig, ax = plt.subplots(figsize=(12, 5))
x = np.arange(len(enforcement_data['Year']))
width = 0.2

ax.bar(x - width*1.5, enforcement_data['SEC Actions'], width, label='SEC Actions', color='blue', alpha=0.7)
ax.bar(x - width*0.5, [f/10 for f in enforcement_data['Fines (Millions)']], width, label='Fines/10 (Millions)', color='red', alpha=0.7)
ax.bar(x + width*0.5, enforcement_data['DeFi Cases'], width, label='DeFi Cases', color='green', alpha=0.7)
ax.bar(x + width*1.5, enforcement_data['Exchange Cases'], width, label='Exchange Cases', color='orange', alpha=0.7)

ax.set_xlabel('Year')
ax.set_ylabel('Number')
ax.set_title('Regulatory Enforcement Trends')
ax.set_xticks(x)
ax.set_xticklabels(enforcement_data['Year'])
ax.legend()
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('enforcement_trends.png', dpi=300, bbox_inches='tight')
plt.show()
print("Enforcement trends chart saved as 'enforcement_trends.png'")

# ----------------------------------------------------------------
# PART E: TOKEN CLASSIFICATION DECISION FRAMEWORK
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART E: Token Classification Decision Framework")
print("-"*60)

decision_framework = {
    "Step 1: Purpose of Token": {
        "Questions": [
            "Is the token used as a medium of exchange?",
            "Does the token provide access to a service?",
            "Does the token represent ownership or debt?"
        ],
        "Classifications": ["Payment", "Utility", "Security"]
    },
    "Step 2: Howey Test Assessment": {
        "Questions": [
            "Was there an investment of money?",
            "Is there a common enterprise?",
            "Is there an expectation of profits?",
            "Are profits from the efforts of others?"
        ],
        "If All Yes": "Likely a Security Token"
    },
    "Step 3: Jurisdictional Analysis": {
        "Questions": [
            "Which jurisdictions will the token be offered in?",
            "What are the regulatory requirements in each?",
            "What exemptions are available?"
        ],
        "Actions": ["Comply with local laws", "Consider exemptions", "Engage legal counsel"]
    },
    "Step 4: Risk Assessment": {
        "Questions": [
            "What is the risk of SEC enforcement?",
            "What is the risk of investor litigation?",
            "What is the reputational risk?"
        ],
        "Actions": ["Mitigate risks", "Consider legal opinions", "Implement compliance"]
    }
}

for step, details in decision_framework.items():
    print(f"\n{step.upper()}:")
    for key, value in details.items():
        if isinstance(value, list):
            print(f"  {key}:")
            for item in value:
                print(f"    • {item}")
        else:
            print(f"  {key}: {value}")

# ----------------------------------------------------------------
# PART F: SUMMARY AND RECOMMENDATIONS
# -----------------------------------------------------------------

print("\n" + "="*70)
print("PART F: Summary and Recommendations")
print("="*70)

print("""
Securities Laws and Token Classification – Key Takeaways:

1. The Howey Test determines if a token is a security: investment of money, common enterprise, expectation of profits, efforts of others.
2. Token types: payment, security, utility, asset-backed, hybrid.
3. Jurisdictional frameworks vary (US: Howey, EU: MiCA, UK: FCA, Singapore: PSA).
4. Security tokens are subject to securities laws (registration, disclosure, reporting).
5. Exemptions: Reg D (accredited), Reg A+ (retail), Reg S (offshore), Reg CF (crowdfunding).
6. Misclassification risks: enforcement actions, rescission rights, legal liability.
7. Key cases: SEC v. Ripple, SEC v. LBRY, SEC v. Telegram.

Recommendations:
  - Conduct a Howey Test analysis for any token offering.
  - Seek legal counsel on token classification.
  - Consider exemptions if token is a security.
  - Build compliance into token design.
  - Disclose risks transparently.
  - Monitor regulatory developments.
  - Consider decentralisation to avoid security classification.
""")