<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="VB6Parse Library Reference - irr - Financial">
<title>irr - Financial - VB6Parse Library Reference</title>
<link rel="stylesheet" href="../../../assets/css/style.css">
<link rel="stylesheet" href="../../../assets/css/docs-style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">
<script src="../../../assets/js/theme-switcher.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/vbnet.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body>
<header class="docs-header">
<div class="container">
<h1><a href="../../../index.html">VB6Parse</a> / <a href="../../../library/index.html">Library</a> / <a href="../../../library/functions/financial/index.html">Financial</a> / irr</h1>
<p class="tagline">VB6 Library Reference</p>
</div>
</header>
<nav class="docs-nav">
<div class="container">
<a href="../../../index.html">Home</a>
<a href="../../../library/index.html">Library Reference</a>
<a href="../../../documentation.html">Documentation</a>
<a href="https://docs.rs/vb6parse" target="_blank">API Docs</a>
<a href="https://github.com/scriptandcompile/vb6parse" target="_blank">GitHub</a>
<button id="theme-toggle" class="theme-toggle" aria-label="Toggle theme">
<span class="theme-icon">🌙</span>
</button>
</div>
</nav>
<main class="container">
<article class="library-item">
<h1 id="irr-function">IRR Function</h1>
<p>Returns a <code>Double</code> specifying the internal rate of return for a series of periodic cash flows (payments and receipts).</p>
<h2 id="syntax">Syntax</h2>
<pre><code class="language-vbnet">IRR(values()[, guess])</code></pre>
<h2 id="parameters">Parameters</h2>
<ul>
<li><code>values()</code> (Required): <code>Array</code> of <code>Double</code> specifying cash flow values. The array must contain at least one positive value (receipt) and one negative value (payment)</li>
<li><code>guess</code> (Optional): <code>Variant</code> specifying value you estimate will be returned by <code>IRR</code>. If omitted, guess is 0.1 (10 percent)</li>
</ul>
<h2 id="return-value">Return Value</h2>
<p>Returns a <code>Double</code> representing the internal rate of return:
- Expressed as a decimal (0.1 = 10%)
- The discount rate that makes the net present value (<code>NPV</code>) of all cash flows equal to zero
- Used to evaluate the profitability of potential investments
- Higher <code>IRR</code> indicates more desirable investment</p>
<h2 id="remarks">Remarks</h2>
<p>The internal rate of return is the interest rate received for an investment consisting of payments and receipts that occur at regular intervals:
- <code>IRR</code> uses the order of values within the array to interpret the order of cash flows
- Cash flows must occur at regular intervals (monthly, quarterly, annually, etc.)
- First element is typically a negative value (initial investment)
- Array must contain at least one positive and one negative value
- Uses an iterative technique to calculate <code>IRR</code>
- Begins with the value of <code>guess</code> and cycles through until result is accurate to within 0.00001 percent
- If <code>IRR</code> can't find a result after 20 tries, it fails with Error 5
- Most cases, you don't need to provide <code>guess</code>; if omitted, 10% is assumed
- If <code>IRR</code> returns Error 5, try different value for <code>guess</code>
- <code>IRR</code> is closely related to <code>NPV</code> (net present value) function
- <code>IRR</code> is the rate where <code>NPV</code> equals zero: <code>NPV(IRR(values), values) = 0</code> (approximately)</p>
<h2 id="typical-uses">Typical Uses</h2>
<ol>
<li><strong>Investment Analysis</strong>: Evaluate profitability of potential investments</li>
<li><strong>Project Evaluation</strong>: Compare multiple projects to select most profitable</li>
<li><strong>Capital Budgeting</strong>: Assess capital expenditure decisions</li>
<li><strong>Business Case Analysis</strong>: Justify business investments with <code>ROI</code> calculations</li>
<li><strong>Equipment Purchase</strong>: Evaluate cost savings from new equipment</li>
<li><strong>Real Estate Investment</strong>: Analyze property investment returns</li>
<li><strong>Lease vs Buy</strong>: Compare financial impact of leasing versus purchasing</li>
<li><strong>Portfolio Management</strong>: Assess historical returns on investments</li>
</ol>
<h2 id="basic-usage-examples">Basic Usage Examples</h2>
<pre><code class="language-vbnet">' Example 1: Simple investment analysis
Dim cashFlows(0 To 4) As Double
Dim returnRate As Double
cashFlows(0) = -10000 ' Initial investment (negative = cash out)
cashFlows(1) = 3000 ' Year 1 return
cashFlows(2) = 3500 ' Year 2 return
cashFlows(3) = 4000 ' Year 3 return
cashFlows(4) = 4500 ' Year 4 return
returnRate = IRR(cashFlows)
Debug.Print "Internal Rate of Return: " & Format$(returnRate * 100, "0.00") & "%"
' Prints approximately: 28.09%
' Example 2: Equipment purchase evaluation
Dim equipmentCosts(0 To 5) As Double
equipmentCosts(0) = -50000 ' Equipment cost
equipmentCosts(1) = 12000 ' Year 1 savings
equipmentCosts(2) = 15000 ' Year 2 savings
equipmentCosts(3) = 18000 ' Year 3 savings
equipmentCosts(4) = 21000 ' Year 4 savings
equipmentCosts(5) = 24000 ' Year 5 savings
returnRate = IRR(equipmentCosts)
If returnRate > 0.15 Then ' 15% hurdle rate
MsgBox "Equipment purchase approved - IRR: " & Format$(returnRate * 100, "0.00") & "%"
Else
MsgBox "Equipment purchase rejected - IRR too low"
End If
' Example 3: Comparing two projects
Dim projectA(0 To 3) As Double
Dim projectB(0 To 3) As Double
projectA(0) = -25000: projectA(1) = 10000: projectA(2) = 12000: projectA(3) = 15000
projectB(0) = -30000: projectB(1) = 15000: projectB(2) = 14000: projectB(3) = 13000
Dim irrA As Double, irrB As Double
irrA = IRR(projectA)
irrB = IRR(projectB)
Debug.Print "Project A IRR: " & Format$(irrA * 100, "0.00") & "%"
Debug.Print "Project B IRR: " & Format$(irrB * 100, "0.00") & "%"
If irrA > irrB Then
MsgBox "Select Project A"
Else
MsgBox "Select Project B"
End If
' Example 4: Using guess parameter for difficult calculations
Dim complexFlows(0 To 6) As Double
complexFlows(0) = -100000
complexFlows(1) = -50000 ' Additional investment in year 2
complexFlows(2) = 20000
complexFlows(3) = 40000
complexFlows(4) = 50000
complexFlows(5) = 60000
complexFlows(6) = 70000
' Provide guess to help convergence
On Error Resume Next
returnRate = IRR(complexFlows, 0.2) ' Start with 20% guess
If Err.Number = 0 Then
Debug.Print "Complex IRR: " & Format$(returnRate * 100, "0.00") & "%"
Else
Debug.Print "Could not calculate IRR"
End If
On Error GoTo 0</code></pre>
<h2 id="common-patterns">Common Patterns</h2>
<pre><code class="language-vbnet">' Pattern 1: Calculate IRR for investment
Function CalculateInvestmentIRR(initialInvestment As Double, returns() As Double) As Double
Dim cashFlows() As Double
Dim i As Integer
ReDim cashFlows(0 To UBound(returns) + 1)
cashFlows(0) = -Abs(initialInvestment) ' Ensure negative
For i = 0 To UBound(returns)
cashFlows(i + 1) = returns(i)
Next i
CalculateInvestmentIRR = IRR(cashFlows)
End Function
' Pattern 2: IRR with hurdle rate comparison
Function MeetsHurdleRate(cashFlows() As Double, hurdleRate As Double) As Boolean
On Error Resume Next
Dim rate As Double
rate = IRR(cashFlows)
If Err.Number = 0 Then
MeetsHurdleRate = (rate >= hurdleRate)
Else
MeetsHurdleRate = False
End If
On Error GoTo 0
End Function
' Pattern 3: Format IRR as percentage
Function FormatIRR(cashFlows() As Double) As String
On Error Resume Next
Dim rate As Double
rate = IRR(cashFlows)
If Err.Number = 0 Then
FormatIRR = Format$(rate * 100, "0.00") & "%"
Else
FormatIRR = "N/A"
End If
On Error GoTo 0
End Function
' Pattern 4: Select best investment from multiple options
Function SelectBestInvestment(investments As Collection) As Integer
Dim bestIRR As Double
Dim bestIndex As Integer
Dim currentIRR As Double
Dim i As Integer
bestIRR = -999999
bestIndex = -1
For i = 1 To investments.Count
On Error Resume Next
currentIRR = IRR(investments(i))
If Err.Number = 0 And currentIRR > bestIRR Then
bestIRR = currentIRR
bestIndex = i
End If
On Error GoTo 0
Next i
SelectBestInvestment = bestIndex
End Function
' Pattern 5: Calculate IRR with validation
Function SafeIRR(cashFlows() As Double, Optional guess As Double = 0.1) As Variant
Dim hasPositive As Boolean
Dim hasNegative As Boolean
Dim i As Integer
' Validate array has both positive and negative values
For i = LBound(cashFlows) To UBound(cashFlows)
If cashFlows(i) > 0 Then hasPositive = True
If cashFlows(i) < 0 Then hasNegative = True
Next i
If Not (hasPositive And hasNegative) Then
SafeIRR = Null
Exit Function
End If
On Error Resume Next
SafeIRR = IRR(cashFlows, guess)
If Err.Number <> 0 Then SafeIRR = Null
On Error GoTo 0
End Function
' Pattern 6: Compare project IRRs
Sub CompareProjects(project1() As Double, project2() As Double)
Dim irr1 As Double, irr2 As Double
irr1 = IRR(project1)
irr2 = IRR(project2)
Debug.Print "Project 1 IRR: " & Format$(irr1 * 100, "0.00") & "%"
Debug.Print "Project 2 IRR: " & Format$(irr2 * 100, "0.00") & "%"
Debug.Print "Difference: " & Format$((irr1 - irr2) * 100, "0.00") & " percentage points"
End Sub
' Pattern 7: Calculate breakeven IRR
Function GetBreakevenIRR(costOfCapital As Double, cashFlows() As Double) As String
Dim projectIRR As Double
projectIRR = IRR(cashFlows)
If projectIRR > costOfCapital Then
GetBreakevenIRR = "Project exceeds cost of capital by " & _
Format$((projectIRR - costOfCapital) * 100, "0.00") & "%"
ElseIf projectIRR < costOfCapital Then
GetBreakevenIRR = "Project falls short of cost of capital by " & _
Format$((costOfCapital - projectIRR) * 100, "0.00") & "%"
Else
GetBreakevenIRR = "Project exactly meets cost of capital"
End If
End Function
' Pattern 8: IRR for monthly cash flows
Function MonthlyIRR(monthlyCashFlows() As Double) As Double
' Returns annualized IRR from monthly cash flows
Dim monthlyRate As Double
monthlyRate = IRR(monthlyCashFlows)
MonthlyIRR = ((1 + monthlyRate) ^ 12) - 1 ' Convert to annual rate
End Function
' Pattern 9: Try multiple guesses if IRR fails
Function RobustIRR(cashFlows() As Double) As Variant
Dim guesses As Variant
Dim i As Integer
Dim result As Double
guesses = Array(0.1, 0.2, 0.5, -0.1, -0.2, 0.01, 0.9)
For i = 0 To UBound(guesses)
On Error Resume Next
result = IRR(cashFlows, guesses(i))
If Err.Number = 0 Then
RobustIRR = result
On Error GoTo 0
Exit Function
End If
On Error GoTo 0
Next i
RobustIRR = Null ' Could not calculate
End Function
' Pattern 10: Incremental IRR analysis
Function IncrementalIRR(baseProject() As Double, incrementalProject() As Double) As Double
Dim incrementalFlows() As Double
Dim i As Integer
Dim maxIndex As Integer
' Calculate incremental cash flows
maxIndex = IIf(UBound(baseProject) > UBound(incrementalProject), _
UBound(baseProject), UBound(incrementalProject))
ReDim incrementalFlows(0 To maxIndex)
For i = 0 To maxIndex
incrementalFlows(i) = 0
If i <= UBound(incrementalProject) Then
incrementalFlows(i) = incrementalFlows(i) + incrementalProject(i)
End If
If i <= UBound(baseProject) Then
incrementalFlows(i) = incrementalFlows(i) - baseProject(i)
End If
Next i
IncrementalIRR = IRR(incrementalFlows)
End Function</code></pre>
<h2 id="advanced-usage-examples">Advanced Usage Examples</h2>
<pre><code class="language-vbnet">' Example 1: Investment analyzer class
Public Class InvestmentAnalyzer
Private m_cashFlows() As Double
Private m_irr As Variant
Private m_calculated As Boolean
Public Sub SetCashFlows(cashFlows() As Double)
Dim i As Integer
ReDim m_cashFlows(LBound(cashFlows) To UBound(cashFlows))
For i = LBound(cashFlows) To UBound(cashFlows)
m_cashFlows(i) = cashFlows(i)
Next i
m_calculated = False
End Sub
Public Function GetIRR() As Variant
If Not m_calculated Then
On Error Resume Next
m_irr = IRR(m_cashFlows)
If Err.Number <> 0 Then m_irr = Null
On Error GoTo 0
m_calculated = True
End If
GetIRR = m_irr
End Function
Public Function GetFormattedIRR() As String
Dim rate As Variant
rate = GetIRR()
If IsNull(rate) Then
GetFormattedIRR = "N/A"
Else
GetFormattedIRR = Format$(rate * 100, "0.00") & "%"
End If
End Function
Public Function IsAcceptable(hurdleRate As Double) As Boolean
Dim rate As Variant
rate = GetIRR()
If IsNull(rate) Then
IsAcceptable = False
Else
IsAcceptable = (rate >= hurdleRate)
End If
End Function
Public Function CompareToRate(targetRate As Double) As String
Dim rate As Variant
rate = GetIRR()
If IsNull(rate) Then
CompareToRate = "Unable to calculate IRR"
ElseIf rate > targetRate Then
CompareToRate = "Exceeds target by " & _
Format$((rate - targetRate) * 100, "0.00") & "%"
ElseIf rate < targetRate Then
CompareToRate = "Below target by " & _
Format$((targetRate - rate) * 100, "0.00") & "%"
Else
CompareToRate = "Exactly meets target"
End If
End Function
End Class
' Example 2: Project portfolio manager
Public Class ProjectPortfolio
Private m_projects As Collection
Private Sub Class_Initialize()
Set m_projects = New Collection
End Sub
Public Sub AddProject(projectName As String, cashFlows() As Double)
Dim projectData As Variant
projectData = Array(projectName, cashFlows)
m_projects.Add projectData
End Sub
Public Function GetBestProject() As String
Dim bestIRR As Double
Dim bestName As String
Dim currentIRR As Double
Dim i As Integer
Dim projectData As Variant
bestIRR = -999999
bestName = ""
For i = 1 To m_projects.Count
projectData = m_projects(i)
On Error Resume Next
currentIRR = IRR(projectData(1))
If Err.Number = 0 And currentIRR > bestIRR Then
bestIRR = currentIRR
bestName = projectData(0)
End If
On Error GoTo 0
Next i
GetBestProject = bestName & " (IRR: " & Format$(bestIRR * 100, "0.00") & "%)"
End Function
Public Function GetRankedProjects() As String
Dim rankings() As Variant
Dim i As Integer, j As Integer
Dim temp As Variant
Dim result As String
Dim projectData As Variant
Dim projectIRR As Double
ReDim rankings(1 To m_projects.Count)
' Build array of project names and IRRs
For i = 1 To m_projects.Count
projectData = m_projects(i)
On Error Resume Next
projectIRR = IRR(projectData(1))
If Err.Number <> 0 Then projectIRR = -999999
On Error GoTo 0
rankings(i) = Array(projectData(0), projectIRR)
Next i
' Sort by IRR (descending)
For i = 1 To UBound(rankings) - 1
For j = i + 1 To UBound(rankings)
If rankings(j)(1) > rankings(i)(1) Then
temp = rankings(i)
rankings(i) = rankings(j)
rankings(j) = temp
End If
Next j
Next i
' Build result string
result = "Project Rankings:" & vbCrLf
For i = 1 To UBound(rankings)
result = result & i & ". " & rankings(i)(0) & ": " & _
Format$(rankings(i)(1) * 100, "0.00") & "%" & vbCrLf
Next i
GetRankedProjects = result
End Function
End Class
' Example 3: Capital budgeting calculator
Function EvaluateCapitalProject(initialCost As Double, annualSavings As Double, _
years As Integer, salvageValue As Double, _
hurdleRate As Double) As String
Dim cashFlows() As Double
Dim i As Integer
Dim projectIRR As Double
Dim result As String
ReDim cashFlows(0 To years)
cashFlows(0) = -Abs(initialCost)
For i = 1 To years - 1
cashFlows(i) = annualSavings
Next i
cashFlows(years) = annualSavings + salvageValue
projectIRR = IRR(cashFlows)
result = "Capital Project Evaluation" & vbCrLf
result = result & "Initial Cost: " & Format$(initialCost, "Currency") & vbCrLf
result = result & "Annual Savings: " & Format$(annualSavings, "Currency") & vbCrLf
result = result & "Project Life: " & years & " years" & vbCrLf
result = result & "Salvage Value: " & Format$(salvageValue, "Currency") & vbCrLf
result = result & "IRR: " & Format$(projectIRR * 100, "0.00") & "%" & vbCrLf
result = result & "Hurdle Rate: " & Format$(hurdleRate * 100, "0.00") & "%" & vbCrLf
If projectIRR >= hurdleRate Then
result = result & "Recommendation: APPROVE"
Else
result = result & "Recommendation: REJECT"
End If
EvaluateCapitalProject = result
End Function
' Example 4: Real estate investment analyzer
Function AnalyzeRealEstateInvestment(purchasePrice As Double, downPayment As Double, _
monthlyRent As Double, monthlyExpenses As Double, _
years As Integer, appreciationRate As Double) As String
Dim cashFlows() As Double
Dim i As Integer
Dim salePrice As Double
Dim annualIRR As Double
Dim result As String
ReDim cashFlows(0 To years)
' Initial investment (down payment)
cashFlows(0) = -Abs(downPayment)
' Annual net cash flows
For i = 1 To years - 1
cashFlows(i) = (monthlyRent - monthlyExpenses) * 12
Next i
' Final year includes sale
salePrice = purchasePrice * ((1 + appreciationRate) ^ years)
cashFlows(years) = (monthlyRent - monthlyExpenses) * 12 + salePrice - (purchasePrice - downPayment)
annualIRR = IRR(cashFlows)
result = "Real Estate Investment Analysis" & vbCrLf
result = result & "Purchase Price: " & Format$(purchasePrice, "Currency") & vbCrLf
result = result & "Down Payment: " & Format$(downPayment, "Currency") & vbCrLf
result = result & "Monthly Rent: " & Format$(monthlyRent, "Currency") & vbCrLf
result = result & "Monthly Expenses: " & Format$(monthlyExpenses, "Currency") & vbCrLf
result = result & "Holding Period: " & years & " years" & vbCrLf
result = result & "Annual IRR: " & Format$(annualIRR * 100, "0.00") & "%"
AnalyzeRealEstateInvestment = result
End Function</code></pre>
<h2 id="error-handling">Error Handling</h2>
<p>The IRR function can raise errors:
- <strong>Invalid procedure call (Error 5)</strong>: If IRR can't find a result after 20 iterations, or if array doesn't contain at least one positive and one negative value
- <strong>Type Mismatch (Error 13)</strong>: If values array is not numeric
- <strong>Subscript out of range (Error 9)</strong>: If array is invalid</p>
<pre><code class="language-vbnet">On Error GoTo ErrorHandler
Dim cashFlows(0 To 4) As Double
Dim rate As Double
cashFlows(0) = -10000
cashFlows(1) = 3000
cashFlows(2) = 3500
cashFlows(3) = 4000
cashFlows(4) = 4500
rate = IRR(cashFlows)
Debug.Print "IRR: " & Format$(rate * 100, "0.00") & "%"
Exit Sub
ErrorHandler:
If Err.Number = 5 Then
MsgBox "Unable to calculate IRR. Try a different guess value.", vbCritical
Else
MsgBox "Error calculating IRR: " & Err.Description, vbCritical
End If</code></pre>
<h2 id="performance-considerations">Performance Considerations</h2>
<ul>
<li><strong>Iterative Calculation</strong>: <code>IRR</code> uses iterative algorithm that can be slow for complex cash flows</li>
<li><strong>Convergence</strong>: May require multiple iterations; providing good <code>guess</code> can improve performance</li>
<li><strong>Array Size</strong>: Larger arrays take longer to process</li>
<li><strong>Caching</strong>: Cache calculated <code>IRR</code> values rather than recalculating repeatedly</li>
</ul>
<h2 id="best-practices">Best Practices</h2>
<ol>
<li><strong>Validate Input</strong>: Ensure array contains at least one positive and one negative value</li>
<li><strong>Error Handling</strong>: Always wrap <code>IRR</code> in error handler as it may fail to converge</li>
<li><strong>Sign Convention</strong>: Use negative for cash outflows (investments), positive for inflows (returns)</li>
<li><strong>Provide Guess</strong>: For complex cash flows or when default fails, provide appropriate guess value</li>
<li><strong>Regular Intervals</strong>: Ensure cash flows occur at regular, consistent intervals</li>
<li><strong>Order Matters</strong>: Values must be in chronological order in the array</li>
<li><strong>Hurdle Rate</strong>: Compare <code>IRR</code> to hurdle rate or cost of capital to make decisions</li>
<li><strong>Multiple IRRs</strong>: Be aware that some cash flow patterns can have multiple valid <code>IRR</code>s</li>
<li><strong>Complement with NPV</strong>: Use <code>NPV</code> alongside <code>IRR</code> for complete investment analysis</li>
<li><strong>Format for Display</strong>: Multiply by 100 and format as percentage for user display</li>
</ol>
<h2 id="comparison-with-related-functions">Comparison with Related Functions</h2>
<table>
<thead>
<tr>
<th>Function</th>
<th>Purpose</th>
<th>Return Value</th>
<th>Use Case</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>IRR</code></td>
<td>Internal rate of return</td>
<td>Rate (<code>Decimal</code>)</td>
<td>Evaluate single investment profitability</td>
</tr>
<tr>
<td><code>MIRR</code></td>
<td>Modified <code>IRR</code></td>
<td>Rate (<code>Decimal</code>)</td>
<td>Handle reinvestment assumptions</td>
</tr>
<tr>
<td><code>NPV</code></td>
<td>Net present value</td>
<td><code>Currency</code> amount</td>
<td>Calculate dollar value at given rate</td>
</tr>
<tr>
<td><code>PV</code></td>
<td>Present value</td>
<td><code>Currency</code> amount</td>
<td>Simple annuity present value</td>
</tr>
<tr>
<td><code>FV</code></td>
<td>Future value</td>
<td><code>Currency</code> amount</td>
<td>Simple annuity future value</td>
</tr>
</tbody>
</table>
<h2 id="platform-and-version-notes">Platform and Version Notes</h2>
<ul>
<li>Available in all VB6 versions</li>
<li>Part of VBA financial functions</li>
<li>Uses <code>Double</code> precision</li>
<li>Consistent with Excel's <code>IRR</code> function</li>
<li>Maximum 20 iterations for convergence</li>
</ul>
<h2 id="limitations">Limitations</h2>
<ul>
<li>Assumes cash flows occur at regular intervals</li>
<li>May fail to converge for certain cash flow patterns</li>
<li>Assumes reinvestment at the <code>IRR</code> rate (use <code>MIRR</code> for different assumption)</li>
<li>Cannot handle irregular time periods between cash flows (use <code>XIRR</code> in Excel for that)</li>
<li>Multiple <code>IRR</code>s possible for some cash flow patterns (multiple sign changes)</li>
<li>Does not account for risk differences between projects</li>
</ul>
<h2 id="related-functions">Related Functions</h2>
<ul>
<li><code>MIRR</code>: Modified internal rate of return with reinvestment rate</li>
<li><code>NPV</code>: Net present value</li>
<li><code>PV</code>: Present value</li>
<li><code>FV</code>: Future value</li>
<li><code>Rate</code>: Interest rate per period</li>
</ul>
</article>
<div style="margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--border-color);">
<p>
<a href="index.html">← Back to Financial</a> |
<a href="../index.html">View all functions</a>
</p>
</div>
</main>
<footer>
<div class="container">
<p>© 2024-2026 VB6Parse Contributors. Licensed under the MIT License.</p>
</div>
</footer>
</body>
</html>