FinForge - Complete User Guide
Welcome to FinForge! This comprehensive guide covers everything you need to know to use the application effectively.
Table of Contents
- Getting Started
- Ticker Management
- Importing Data to Excel
- Creating Financial Ratios
- Assigning Ratios to Excel
- Advanced Ratio Features
- Quick Reference
- Available Data Reference
- Color Reference
- Data Cleanup System
- Troubleshooting
1. Getting Started
What is FinForge?
FinForge is a financial analysis tool that:
- Fetches real-time stock data from Yahoo Finance
- Stores data efficiently in Parquet format
- Imports financial statements into Excel
- Lets you create custom financial ratios
- Calculates and displays ratios for multiple tickers
Quick Start
Step 1: Launch the Application
Option A - Using the Batch File (Recommended)
- Double-click
launch_finforge.batin the main folder - The FinForge window will open
Step 2: Open the Workspace
- In the launcher, click Open statement import window
- The main workspace opens with sidebar navigation (Imports, Ratios, Company Profile, Research)
Step 3: Add Your First Ticker
- Go to the Imports tab
- Type a ticker symbol (e.g.,
AAPL) in the search bar - Select the ticker from search results and add it to the import list
- Data fetching starts automatically in the background
Step 4: Import Financial Data to Excel
- In the Imports tab, choose Balance sheet or Income statement scope
- Select the line items you want to print
- Click Import to send data to Excel
System Requirements
- Windows 10 or later
- Microsoft Excel (with macros enabled)
- Python 3.10+ (included in .venv)
- Node.js 18+ (for Electron, auto-installed by setup)
- Internet connection (for data fetching)
First-Time Setup
If this is your first time using the app:
- Run
setup.batto install all dependencies - Enable Excel Macros
- Open Excel, go to File > Options > Trust Center
- Click Trust Center Settings > Macro Settings
- Select “Enable all macros”
Folder Structure
FinForge/
FinForge.xlsm <- Main Excel workbook
launch_finforge.bat <- Quick launcher
setup.bat <- First-time setup
data/ <- All fetched data stored here
fundamentals/ <- Financial statements
holders/ <- Holder information
metadata/ <- Company info
prices/ <- Price history
ElectronHome/ <- Electron desktop UI
Guides/ <- Documentation
User/ <- User guides
Developer/ <- Technical docs
Importing/ <- Import scripts
Internal/ <- Core modules
Ticker_management/ <- Ticker CRUD
data_management/ <- Data persistence
2. Ticker Management
Learn how to add, edit, and manage stock tickers in your portfolio.
Opening the Ticker Manager
The ticker management is built into FinForge. Launch it by:
- Double-clicking
launch_finforge.bat, or - Running from command line (see Getting Started)
Adding Tickers
Single Ticker
- Type the ticker symbol in the input field (e.g.,
MSFT) - Click Add or press Enter
- The ticker appears in the list
- Data fetching starts automatically in the background
Example:
Input: AAPL
Result: Apple Inc. added to list, data fetching begins
Validation Rules
- Tickers must be 1-5 letters only
- No numbers or special characters
- Duplicates are not allowed
Removing Tickers
Delete a Single Ticker
- Find the ticker in the list
- Click the X (delete) button next to it
- Confirm the deletion
What Happens to the Data?
When you remove a ticker:
- The ticker is removed from your list immediately
- The data is scheduled for deletion in 3 days
- If you re-add the ticker within 3 days, the data is preserved
- After 3 days, data is permanently deleted on next app launch
Editing Tickers
- Find the ticker in the list
- Click the Edit button
- Enter the new ticker symbol
- Click OK
Note: Editing a ticker schedules the old ticker’s data for deletion.
Selecting Tickers for Launch
When launching the Excel dashboard:
- Click on tickers to select/deselect them
- Selected tickers will be highlighted
- Click Launch Dashboard to open Excel with selected tickers
Fetching Data
Automatic Fetching
Data is fetched automatically when you:
- Add a new ticker
- Launch the dashboard with tickers that need updates
What Data is Fetched?
For each ticker, the app fetches:
| Category | Data Types |
|---|---|
| Financials | Income statement, balance sheet, cash flow (annual and quarterly) |
| Analyst | Earnings estimates, revenue estimates, price targets, recommendations |
| Holders | Major, institutional, mutual fund holders, insider roster |
| Insider | Transactions, purchases summary |
| Historical | Dividends, splits, price history |
| Other | News, SEC filings, calendar, company info |
Where is Ticker Data Stored?
Tickers are saved in: data/tickers.json
{
"tickers": ["MSFT", "AAPL", "GOOGL"]
}
Stock data is stored in: data/ folder as Parquet files
3. Importing Data to Excel
Learn how to import financial statement data from your stored Parquet files into Excel.
Overview
The import system transfers data from Parquet files to your Excel workbook:
- Balance sheet data goes to the “balance sheets” sheet
- Income statement data goes to the “income statements” sheet
Prerequisites
Before importing:
- Have tickers with fetched data (see Ticker Management)
- Have Excel workbook open (
FinForge.xlsm) - Tickers should be listed in Row 4 of the respective sheet
Importing Balance Sheets
From Excel (VBA Macro)
- Open
FinForge.xlsm - Go to the “balance sheets” sheet
- Run the macro:
ImportBalanceSheets()- Press
Alt + F8 - Select
ImportBalanceSheets - Click Run
- Press
From Python
cd <your-finforge-folder>
.\.venv\Scripts\Activate.ps1
python -c "from Importing.import_balance_sheets import main; main()"
What Gets Imported
| Row | Content |
|---|---|
| 4 | Ticker symbols (you place these) |
| 5 | Most recent date |
| 6 | Second most recent date |
| 7+ | Financial line items |
Example Layout:
A B C D
4 INDEX MSFT AAPL GOOGL
5 2024-06-30 2024-06-30 2024-06-30
6 2024-03-31 2024-03-31 2024-03-31
7 Total Assets $411.9B $352.5B $402.3B
8 Cash $18.3B $28.4B $24.0B
...
Importing Income Statements
From Excel (VBA Macro)
- Open
FinForge.xlsm - Go to the “income statements” sheet
- Run the macro:
ImportIncomeStatements()- Press
Alt + F8 - Select
ImportIncomeStatements - Click Run
- Press
From Python
cd <your-finforge-folder>
.\.venv\Scripts\Activate.ps1
python -c "from Importing.import_income_statements import main; main()"
Customizing Which Items to Import
Using the Settings Sheet
- Go to the “Settings” sheet in Excel
- Find the section for Balance Sheet or Income Statement items
- List the items you want to import (one per row)
- Run the import again
Example Settings:
Balance Sheet Items:
Total Assets
Total Liabilities
Stockholders Equity
Cash And Cash Equivalents
Total Debt
Understanding Color Codes
After importing, cells are color-coded:
| Color | Meaning |
|---|---|
| Orange text | Data found and imported successfully |
| Red text | Data not available for this ticker |
| White text | Empty/no value |
Tips for Successful Imports
Setting Up Tickers
- In the import sheet (balance sheets or income statements)
- Go to Row 4
- Column A should say “INDEX”
- Enter ticker symbols in columns B, C, D, etc.
Example:
Row 4: INDEX | MSFT | AAPL | GOOGL | AMZN
After Adding New Tickers
- First, fetch data using the launcher or fetch script
- Then run the import macro
- Data will populate for the new tickers
Refreshing Data
To update with latest data:
- Run the fetch script to get new data from Yahoo Finance
- Run the import macro to update Excel
4. Creating Financial Ratios
Learn how to create custom financial ratios using the Ratio Maker tool.
What are Financial Ratios?
Financial ratios are calculations that use financial statement data to measure:
- Profitability (e.g., Profit Margin, ROE)
- Liquidity (e.g., Current Ratio, Quick Ratio)
- Leverage (e.g., Debt-to-Equity)
- Efficiency (e.g., Asset Turnover)
- Valuation (e.g., P/E Ratio, P/B Ratio)
Opening the Ratio Maker
From Excel
- Open
FinForge.xlsm - Run the macro:
OpenRatioMaker()- Press
Alt + F8 - Select
OpenRatioMaker - Click Run
- Press
From Python
cd <your-finforge-folder>
.\.venv\Scripts\Activate.ps1
python Importing/ratio_maker.py
Creating Your First Ratio
Step 1: Click “New Ratio”
The Create Ratio dialog opens.
Step 2: Enter Ratio Name
Give your ratio a descriptive name:
- “Gross Margin”
- “Current Ratio”
- “Debt to Equity”
Step 3: Build the Formula
Use the field selector and operators to build your formula.
Available Data Sources:
| Prefix | Source | Example Fields |
|---|---|---|
IS: |
Income Statement | Total Revenue, Net Income, EBITDA |
BS: |
Balance Sheet | Total Assets, Total Debt, Cash |
CF: |
Cash Flow | Operating Cash Flow, Free Cash Flow |
RATIO: |
Other Ratios | Use your previously created ratios |
Available Operators:
| Button | Operation |
|---|---|
+ |
Addition |
- |
Subtraction |
* |
Multiplication |
/ |
Division |
( |
Open parenthesis |
) |
Close parenthesis |
Step 4: Add Notes (Optional)
Add a description or notes about the ratio:
- What it measures
- How to interpret it
- Reference ranges
Step 5: Save
Click Save to store the ratio in ratio_config.json.
Formula Examples
Profitability Ratios
Gross Margin
(IS: Total Revenue - IS: Cost Of Revenue) / IS: Total Revenue
Operating Margin
IS: Operating Income / IS: Total Revenue
Net Profit Margin
IS: Net Income / IS: Total Revenue
Return on Assets (ROA)
IS: Net Income / BS: Total Assets
Return on Equity (ROE)
IS: Net Income / BS: Stockholders Equity
Liquidity Ratios
Current Ratio
BS: Current Assets / BS: Current Liabilities
Quick Ratio
(BS: Current Assets - BS: Inventory) / BS: Current Liabilities
Leverage Ratios
Debt to Equity
BS: Total Debt / BS: Stockholders Equity
Debt to Assets
BS: Total Debt / BS: Total Assets
Efficiency Ratios
Asset Turnover
IS: Total Revenue / BS: Total Assets
Using Other Ratios
ROE using DuPont Analysis
RATIO: Net Profit Margin * RATIO: Asset Turnover * RATIO: Equity Multiplier
Understanding Syntax Highlighting
As you type, the formula is color-coded:
| Color | Meaning |
|---|---|
| Green | Income Statement fields (IS:) |
| Light Blue | Balance Sheet fields (BS:) |
| Purple | Price/Cash Flow fields |
| Orange | Operators (+, -, *, /) |
| Yellow | Parentheses |
| Gold | Other Ratios (RATIO:) |
| Light Blue | Numbers |
| Red + Wavy | Errors (typos, invalid fields) |
Editing Existing Ratios
- Select the ratio in the list
- Click Edit
- Modify the name, formula, or notes
- Click Save
Note: If the ratio is assigned to an Excel column, the column header is automatically updated with the new name.
Deleting Ratios
- Select the ratio in the list
- Click Delete
- Confirm the deletion
Warning: If the ratio is assigned to an Excel column, unassign it first.
Where are Ratios Stored?
Ratios are saved in: Importing/ratio_config.json
{
"ratios": {
"Gross Margin": {
"formula": "(IS: Total Revenue - IS: Cost Of Revenue) / IS: Total Revenue",
"notes": "Measures profitability after direct costs"
},
"Current Ratio": {
"formula": "BS: Current Assets / BS: Current Liabilities",
"notes": "Measures short-term liquidity"
}
}
}
Tips for Creating Good Ratios
- Use descriptive names - “Gross Margin” not “GM1”
- Add notes - Document what the ratio measures
- Test with known values - Verify calculations are correct
- Use parentheses - Ensure correct order of operations
- Check field names - Use exact field names from the data
5. Assigning Ratios to Excel
Learn how to assign your created ratios to Excel columns for automatic calculation.
Key Features
What You Can Do:
- Assign Ratios: Assign any created ratio to Excel columns (B, C, D, etc.)
- View Status: See which ratios are assigned and to which columns
- View Notes: Read ratio notes/descriptions
- Unassign Ratios: Quick one-click unassignment
- Calculate Ratios: Compute all ratios for all tickers using Parquet data
- Manual Tickers: Enter tickers manually in Column A
Benefits:
- Fast: Uses Parquet data for quick calculations
- Reliable: Minimal VBA, all logic in Python
- Simple: Clean UI with clear feedback
- Flexible: Assign any ratio to any column
Excel Layout (Ratios Sheet)
Row 1: Financial Ratios [Title]
Row 2: [Empty]
Row 3: [Empty]
Row 4: Ticker | Ratio1 Name | Ratio2 Name | Ratio3 Name | ...
Row 5: [Empty - Reserved]
Row 6: AAPL | 1.2500 | 0.8500 | 2.4500 | ...
Row 7: MSFT | 1.3000 | 0.9200 | 2.5000 | ...
Row 8: GOOGL | 1.1800 | 0.7800 | 2.3200 | ...
...
Column Structure:
- Column A: Ticker symbols (enter manually from Row 6 onwards)
- Column B+: Assigned ratios with calculated values
Row Functions:
- Row 4: Ratio names (set by assignment)
- Row 5: Reserved and left empty
- Row 6+: Your data (tickers + calculated ratios)
How to Use
Step 1: Open Ratio Manager
From Excel:
- Run VBA macro:
OpenRatioManager() - Or create a button assigned to this macro
From Python:
python -c "from Internal.Ratios.ratio_manager_ui import launch_ratio_manager; launch_ratio_manager()"
Step 2: Assign a Ratio
In Ratio Manager UI:
- Select a ratio from the list
- Click “Assign to Column”
- Enter column letter (B, C, D, etc.)
- Click OK
Result: Ratio name appears in Row 4, Row 5 stays empty
Rules:
- Can only assign to columns B and onwards
- Cannot assign same ratio to multiple columns
- Cannot assign to a column that’s already in use
Step 3: View Ratio Notes
In Ratio Manager UI:
- Select a ratio
- Click “View Notes”
- Read notes in popup dialog
Step 4: Enter Tickers
In Excel (Ratios sheet):
- Go to Column A, Row 6
- Type ticker symbol (e.g., “AAPL”)
- Continue adding tickers in rows below
Step 5: Calculate Ratios
Option A - From Excel:
- Run VBA macro:
RefreshRatios()
Option B - From Python:
python -c "from Internal.Ratios.ratio_calculator import calculate_ratios; calculate_ratios()"
What Happens:
- System reads all tickers from Column A
- Loads financial data from Parquet files
- Calculates each assigned ratio for each ticker
- Writes results to Excel
- Shows progress dialog
Step 6: Update an Assignment
- Reassign the ratio in Row 4 if needed
- Refresh the sheet so the new layout recalculates
VBA Macros
Essential Functions:
' Open the Ratio Manager UI
OpenRatioManager()
' Calculate all ratios
RefreshRatios()
Setting Up Buttons:
- Insert Developer Tab > Insert > Button
- Assign macro to button:
- “Manage Ratios” >
OpenRatioManager - “Calculate Ratios” >
RefreshRatios
- “Manage Ratios” >
Example Workflow
Complete Example:
-
Create Ratios (using Ratio Maker)
- Current Ratio:
BS: Current Assets / BS: Current Liabilities - Quick Ratio:
BS: Cash / BS: Current Liabilities
- Current Ratio:
-
Open Ratio Manager
- See both ratios as “Not assigned”
-
Assign Ratios
- Current Ratio > Column B
- Quick Ratio > Column C
-
Enter Tickers
A7: AAPL A8: MSFT A9: GOOGL -
Calculate
- Click “Refresh ratios sheet” in FinForge or run
RefreshRatios() - See results:
B7: 1.2500 C7: 0.8500 B8: 1.3000 C8: 0.9200 B9: 1.1800 C9: 0.7800 - Click “Refresh ratios sheet” in FinForge or run
-
Update if Needed
- Adjust the Row 4 assignments, then refresh again
Best Practices
- Create ratios first before trying to assign
- Enter tickers before calculating
- Use meaningful ratio names for easy identification
- Add notes to ratios to remember what they do
- Refresh data regularly to keep ratios up to date
- Save Excel after assigning ratios
6. Advanced Ratio Features
Horizontal Operator Layout
All operators and buttons are arranged left-to-right for an intuitive workflow.
Operator Buttons:
+Addition-Subtraction*Multiplication/or division sign Division (toggleable)(Opening parenthesis)Closing parenthesis
Real-Time Syntax Highlighting
As you type or insert items, the formula is immediately color-coded:
| Element | Color | Example |
|---|---|---|
| Operators | Orange (#FF9800) | +, -, *, / |
| Brackets | Yellow (#FFD700) | (, ) |
| Income Statement | Green (#81C784) | IS: Revenue, IS: Net Income |
| Balance Sheet | Light Blue (#81D4FA) | BS: Total Assets, BS: Cash |
| Price Data | Purple (#CE93D8) | P: Closing Price |
| Functions | Yellow-Orange (#FFC107) | AVERAGE, SUM, MAX |
| Numbers | Light Blue (#90CAF9) | 100, 1.5, 0.25 |
| Errors | Red (#F44336) | Invalid fields, typos |
Error Detection and Highlighting
Invalid tokens are automatically detected and marked with:
- Red text color
- Wavy red underline
Examples of errors:
- Typos:
IS: Reveneu(misspelled) - Invalid fields:
XYZ: Unknown - Incomplete operators:
IS: Revenue +(missing right operand)
Advanced Functions
Advanced functions are coming soon. Currently supported features include:
- Basic price data (Close, Open, High, Low, Volume)
- Historical price offsets using
[-XD]syntax - Calculated fields (Change, Change Percent)
Color Legend
A built-in color legend appears above the formula preview showing:
Operators Brackets IS: Items BS: Items P: Items Errors
Each bullet is colored to match its syntax highlighting.
Usage Examples
Example 1: Simple Ratio with Highlighting
Gross Margin Formula:
(IS: Revenue - IS: Cost of Revenue) / IS: Revenue
How it appears:
(and)in yellowIS: Revenuein green-and/in orangeIS: Cost of Revenuein green
Example 2: Price Data with Historical Offset
10-Day Price Change Percent:
P: Change Percent [-10D]
How it appears:
P: Change Percentin purple[-10D]offset in brackets(and)in yellowIS: Revenuein green50in light blue
Example 3: Error Detection
Typo in field name:
IS: Reveneu / IS: Cost
How it appears:
IS:in green (valid prefix)Reveneuin red with wavy underline (invalid field)/in orangeIS: Costin red with wavy underline (incomplete field name)
Best Practices
Use Color Feedback
- Green/Blue/Purple = Valid fields
- Orange/Yellow = Valid operators/brackets
- Red = Fix immediately!
Validation Before Saving
- Check for red errors
- Verify all fields are green, blue, or purple
- Ensure operators are orange or yellow
7. Quick Reference
Color Guide (At-a-Glance)
Orange > Operators > + - * /
Yellow > Brackets > ( )
Green > IS: Items > Revenue, Net Income, EBITDA
Light Blue > BS: Items > Total Assets, Cash, Debt
Purple > P: Items > Close Price, Change Percent
Light Blue > Numbers > 100, 1.5, 3.14
Red + Wave > Errors > Typos, invalid fields
Button Layout (Horizontal)
Operators: [ + ] [ - ] [ * ] [ / ] [ ( ] [ ) ]
Common Formulas
Gross Margin
(IS: Revenue - IS: Cost of Revenue) / IS: Revenue
Current Ratio
BS: Current Assets / BS: Current Liabilities
P/E Ratio
P: Closing Price / IS: Earnings Per Share
ROE (Return on Equity)
IS: Net Income / BS: Total Equity
Debt-to-Equity
BS: Total Debt / BS: Total Equity
Operating Margin
IS: Operating Income / IS: Revenue
Working Capital
BS: Current Assets - BS: Current Liabilities
Pre-Save Checklist
- No red errors
- All fields are green/blue/purple
- Operators are orange/yellow
- Brackets match
- Formula makes sense
Quick Actions
| Action | How |
|---|---|
| Add field | Select > Insert Field |
| Add operator | Click operator button |
| Add function | Click Advanced Functions |
| Add notes | Click Notes |
| Save ratio | Click green Save |
| Cancel | Click Cancel |
File Locations
- Ratio Config:
Importing/ratio_config.json - Main App:
Importing/ratio_maker.py
8. Available Data Reference
This section lists all data fetched from Yahoo Finance and stored in Parquet format.
Data Storage Structure
data/
fundamentals/
income_statement/{TICKER}.parquet
balance_sheet/{TICKER}.parquet
cash_flow/{TICKER}.parquet
quarterly_income_statement/{TICKER}.parquet
quarterly_balance_sheet/{TICKER}.parquet
quarterly_cash_flow/{TICKER}.parquet
earnings_estimate/{TICKER}.parquet
revenue_estimate/{TICKER}.parquet
analyst_price_targets/{TICKER}.parquet
eps_trend/{TICKER}.parquet
growth_estimates/{TICKER}.parquet
earnings_history/{TICKER}.parquet
recommendations/{TICKER}.parquet
recommendations_summary/{TICKER}.parquet
upgrades_downgrades/{TICKER}.parquet
insider_transactions/{TICKER}.parquet
insider_purchases/{TICKER}.parquet
calendar/{TICKER}.parquet
dividends/{TICKER}.parquet
splits/{TICKER}.parquet
actions/{TICKER}.parquet
news/{TICKER}.parquet
sec_filings/{TICKER}.parquet
holders/
major_holders/{TICKER}.parquet
institutional_holders/{TICKER}.parquet
mutualfund_holders/{TICKER}.parquet
insider_roster_holders/{TICKER}.parquet
prices/
{TICKER}.parquet
metadata/
{TICKER}.json
Income Statement Fields
| Field | Description |
|---|---|
| Total Revenue | Total revenue from all sources |
| Operating Revenue | Revenue from core operations |
| Cost Of Revenue | Direct costs of goods/services sold |
| Gross Profit | Revenue minus cost of revenue |
| Operating Expense | Operating costs (R&D, SG&A, etc.) |
| Research And Development | R&D spending |
| Selling General And Administration | SG&A expenses |
| Operating Income | Profit from core operations |
| Pretax Income | Income before taxes |
| Tax Provision | Income tax expense |
| Net Income | Net income attributable to company |
| Net Income Common Stockholders | Net income for common shareholders |
| Basic EPS | Earnings per share (basic) |
| Diluted EPS | Earnings per share (diluted) |
| EBIT | Earnings before interest and taxes |
| EBITDA | Earnings before interest, taxes, depreciation and amortization |
Balance Sheet Fields
Assets
| Field | Description |
|---|---|
| Total Assets | Sum of all assets |
| Current Assets | Assets convertible to cash within 1 year |
| Cash And Cash Equivalents | Cash on hand |
| Receivables | Money owed to company |
| Inventory | Goods held for sale |
| Total Non Current Assets | Long-term assets |
| Net PPE | Property, plant and equipment (net) |
| Goodwill | Goodwill from acquisitions |
Liabilities
| Field | Description |
|---|---|
| Total Liabilities Net Minority Interest | All liabilities |
| Current Liabilities | Debts due within 1 year |
| Accounts Payable | Supplier payables |
| Current Debt | Short-term borrowings |
| Long Term Debt | Long-term borrowings |
Equity
| Field | Description |
|---|---|
| Total Equity Gross Minority Interest | Total equity |
| Stockholders Equity | Shareholder equity |
| Common Stock | Common shares value |
| Retained Earnings | Accumulated profits |
Calculated Metrics
| Field | Description |
|---|---|
| Net Debt | Total debt minus cash |
| Total Debt | Sum of all debt |
| Working Capital | Current assets minus current liabilities |
| Invested Capital | Equity plus debt |
Cash Flow Statement Fields
Operating Activities
| Field | Description |
|---|---|
| Operating Cash Flow | Cash from operations |
| Net Income From Continuing Operations | Starting net income |
| Depreciation Amortization Depletion | Non-cash depreciation |
| Stock Based Compensation | Stock-based comp expense |
| Change In Working Capital | Working capital changes |
Investing Activities
| Field | Description |
|---|---|
| Investing Cash Flow | Cash used in investing |
| Capital Expenditure | CapEx spending |
| Purchase Of Investment | Investment purchases |
| Sale Of Investment | Investment sales |
Financing Activities
| Field | Description |
|---|---|
| Financing Cash Flow | Cash from financing |
| Issuance Of Debt | New debt raised |
| Repayment Of Debt | Debt repayments |
| Common Stock Issuance | Common stock issued |
| Cash Dividends Paid | Dividend payments |
Summary
| Field | Description |
|---|---|
| Changes In Cash | Total cash change |
| Free Cash Flow | Operating cash minus CapEx |
Analyst Estimates
Earnings Estimate
| Column | Description |
|---|---|
| avg | Average EPS estimate |
| low | Low EPS estimate |
| high | High EPS estimate |
| yearAgoEps | EPS from same period last year |
| numberOfAnalysts | Number of analysts |
| growth | Expected growth rate |
Revenue Estimate
| Column | Description |
|---|---|
| avg | Average revenue estimate |
| low | Low revenue estimate |
| high | High revenue estimate |
| numberOfAnalysts | Number of analysts |
Analyst Price Targets
| Field | Description |
|---|---|
| current | Current stock price |
| high | Highest analyst target |
| low | Lowest analyst target |
| mean | Average target price |
| median | Median target price |
Holder Data
Major Holders
| Metric | Description |
|---|---|
| insidersPercentHeld | Percentage held by insiders |
| institutionsPercentHeld | Percentage held by institutions |
| institutionsFloatPercentHeld | Institutional % of float |
| institutionsCount | Number of institutional holders |
Institutional Holders
| Column | Description |
|---|---|
| Holder | Institution name |
| pctHeld | Percentage of shares held |
| Shares | Number of shares |
| Value | Dollar value of position |
Price Data
| Column | Description |
|---|---|
| Date | Trading date |
| Open | Opening price |
| High | Day high |
| Low | Day low |
| Close | Closing price |
| Volume | Trading volume |
| Dividends | Dividend amount (if any) |
| Stock Splits | Split ratio (if any) |
Using This Data in Ratio Formulas
Use these prefixes to reference data:
| Prefix | Data Source |
|---|---|
| IS: | Income Statement |
| BS: | Balance Sheet |
| CF: | Cash Flow |
Example formulas:
IS: Net Income / BS: Total Assets(ROA)BS: Total Debt / BS: Stockholders Equity(Debt to Equity)CF: Free Cash Flow / IS: Net Income(FCF Conversion)
9. Color Reference
Syntax Highlighting Color Palette
Operator Colors
ORANGE (#FF9800) - Arithmetic Operators
+ (addition)
- (subtraction)
* (multiplication)
/ (division)
Bracket Colors
YELLOW (#FFD700) - Grouping Brackets
( (open parenthesis)
) (close parenthesis)
Financial Item Colors
Income Statement Items
GREEN (#81C784) - Income Statement Fields
IS: Revenue
IS: Net Income
IS: Operating Income
IS: EBITDA
... (any field prefixed with "IS:")
Balance Sheet Items
LIGHT BLUE (#81D4FA) - Balance Sheet Fields
BS: Total Assets
BS: Total Equity
BS: Total Liabilities
BS: Cash
... (any field prefixed with "BS:")
Price/Market Data
PURPLE (#CE93D8) - Price & Market Data
P: Closing Price
P: Opening Price
P: Volume
... (any field prefixed with "P:")
Function Colors
YELLOW-ORANGE (#FFC107) - Advanced Functions
AVERAGE
SUM
MAX
MIN
MEDIAN
STDEV
Number Colors
LIGHT BLUE (#90CAF9) - Numeric Literals
100
1.5
0.25
Error Colors
RED (#F44336) - Invalid Tokens/Errors
- Misspelled field names
- Unknown prefixes
- Unrecognized tokens
- Typos
Visual indicators:
- Red text color
- Wavy red underline
Example Formulas with Color Coding
Gross Margin
(IS: Revenue - IS: Cost of Revenue) / IS: Revenue
Colors:
(,)= YellowIS: Revenue= Green (appears twice)IS: Cost of Revenue= Green-,/= Orange
Current Ratio
BS: Current Assets / BS: Current Liabilities
Colors:
BS: Current Assets= Light BlueBS: Current Liabilities= Light Blue/= Orange
P/E Ratio
P: Closing Price / IS: Earnings Per Share
Colors:
P: Closing Price= PurpleIS: Earnings Per Share= Green/= Orange
Error Example (Typo)
IS: Reveneu / BS: Totl Assets
Colors:
IS:= Green (valid prefix)Reveneu= Red + wavy underline (invalid)/= OrangeBS:= Light Blue (valid prefix)Totl Assets= Red + wavy underline (invalid)
Dark Theme Background Colors
Dialog Background
- Main: #121212 (Very Dark Gray)
- Input Fields: #1E1E1E (Dark Gray)
- Borders: #2C2C2C (Medium Dark Gray)
Text Colors
- Primary Text: #E0E0E0 (Light Gray)
- Secondary Text: #B0B0B0 (Medium Gray)
Accent Colors
- Primary Accent: #29B6F6 (Light Blue)
- Success: #4CAF50 (Green)
- Danger: #E57373 (Red)
- Warning: #FFA726 (Orange)
10. Data Cleanup System
Overview
FinForge includes an automatic data cleanup system that manages parquet file storage when tickers are removed or changed. This prevents the system from accumulating unused data while providing a safety window to recover accidentally deleted tickers.
How It Works
Delayed Deletion (3-Day Grace Period)
When you remove or change a ticker in the UI, the system does NOT immediately delete the data. Instead:
- The ticker is added to a pending deletions list (
data/pending_deletions.json) - A deletion date is set for 3 days in the future
- The actual data deletion occurs on the next app launch after the 3-day period
Automatic Cleanup on Startup
Every time you launch FinForge:
- The system checks
pending_deletions.jsonfor any tickers past their deletion date - For each ticker past its 3-day grace period, all associated data is permanently deleted
- The pending deletions list is updated
Recovery Window
If you accidentally remove a ticker, you have 3 days to re-add it:
- Simply add the ticker again using the launcher
- The pending deletion will be automatically cancelled
- Your existing data will be preserved
What Gets Deleted
When a ticker’s data is permanently deleted, the following files are affected:
| Data Type | File Location | Action |
|---|---|---|
| Price History | data/prices/{TICKER}.parquet |
File deleted |
| Metadata | data/metadata/{TICKER}.json |
File deleted |
| Income Statement | data/fundamentals/income_statement/{TICKER}.parquet |
File deleted |
| Balance Sheet | data/fundamentals/balance_sheet/{TICKER}.parquet |
File deleted |
| Cash Flow | data/fundamentals/cash_flow/{TICKER}.parquet |
File deleted |
| Recommendations | data/fundamentals/recommendations/{TICKER}.parquet |
File deleted |
| Major Holders | data/holders/major_holders/{TICKER}.parquet |
File deleted |
| Institutional Holders | data/holders/institutional_holders/{TICKER}.parquet |
File deleted |
| Mutual Fund Holders | data/holders/mutualfund_holders/{TICKER}.parquet |
File deleted |
Actions That Trigger Deletion Scheduling
| Action | Result |
|---|---|
| Remove ticker (delete button) | Ticker scheduled for deletion in 3 days |
| Edit ticker to new symbol | Old ticker scheduled for deletion in 3 days |
| Clear all tickers | Each ticker scheduled for deletion in 3 days |
Actions That Cancel Scheduled Deletions
| Action | Result |
|---|---|
| Add a ticker that was pending deletion | Deletion cancelled, data preserved |
Pending Deletions File
The pending deletions are tracked in data/pending_deletions.json:
{
"TICKER1": {
"scheduled_date": "2025-12-06T21:28:50.896922",
"deletion_date": "2025-12-09T21:28:50.896910"
}
}
scheduled_date: When the ticker was removed from the UIdeletion_date: When the data will be permanently deleted
11. Troubleshooting
Ticker Management Issues
“Invalid Ticker” Error
Cause: Ticker contains numbers or is too long Solution: Use only letters, 1-5 characters
“Duplicate Ticker” Message
Cause: Ticker already exists in your list Solution: Check your list, ticker is already there
Data Not Fetching
Cause: Network issue or invalid ticker symbol Solution:
- Check your internet connection
- Verify the ticker exists on Yahoo Finance
- Check the terminal for error messages
Ticker Shows No Data
Cause: Yahoo Finance doesn’t have data for this ticker Solution: Some tickers (especially foreign or OTC) have limited data
Import Issues
No Data Appears
Possible Causes:
- Tickers not in Row 4
- Data not fetched yet
- Column A doesn’t say “INDEX”
Solutions:
- Verify tickers are in Row 4, starting from column B
- Run the fetch script first
- Ensure column A, Row 4 contains “INDEX”
“Cannot find data” Error
Cause: Parquet file doesn’t exist for the ticker Solution: Run the fetch script to download data
Import Takes Too Long
Cause: Many tickers or slow disk access Solution:
- Import fewer tickers at once
- Close other Excel workbooks
- Wait for the process to complete
Ratio Issues
Red Error Highlighting
Cause: Invalid field name Solution: Check spelling, use the field selector dropdown
“Field not found” Error
Cause: Field doesn’t exist in the data Solution: See Available Data Reference for valid field names
Calculation Shows #N/A
Cause:
- Data missing for the ticker
- Division by zero
Solution:
- Verify data exists for the ticker
- Add logic to handle zero denominators
Ratio Not Appearing in Manager
Cause: Save failed or file permission issue Solution:
- Check if ratio_config.json is writable
- Try saving again
Ratio Assignment Issues
“No ratios found”
Solution: Create ratios first using Ratio Maker
“No tickers found”
Solution: Enter tickers in Column A starting from Row 6
“Failed to load Parquet data”
Solution: Make sure data files exist. Run data import first if needed.
“Column already in use”
Solution: Reassign the ratio in Row 4 and refresh the sheet
Calculation shows “N/A”
Reason: Financial data not found for that ticker/item Check: Ticker spelling and data availability
Calculation shows “DIV/0”
Reason: Denominator is zero Normal: Some ratios can legitimately be undefined
General Tips
- Always fetch data first before trying to import or calculate
- Check your internet connection if data fetching fails
- Verify ticker symbols exist on Yahoo Finance
- Enable Excel macros for full functionality
- Save your work frequently when working with Excel
Support
For additional help:
- Check the Guides folder for more documentation
- Review the Developer guides for technical details
- Ensure all prerequisites are installed correctly
Document Version: 1.0 Last Updated: December 2025 Data Source: Yahoo Finance via yfinance library