Ticker 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 |
Configuration
The deletion delay is configured in data_management/stock_data_manager.py:
DELETION_DELAY_DAYS = 3 # Number of days before data is permanently deleted
To change the grace period, modify this value.
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"
},
"TICKER2": {
"scheduled_date": "2025-12-05T10:00:00.000000",
"deletion_date": "2025-12-08T10:00:00.000000"
}
}
scheduled_date: When the ticker was removed from the UIdeletion_date: When the data will be permanently 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 |
Manual Data Management
If you need to manually manage the pending deletions:
View Pending Deletions
from data_management.stock_data_manager import StockDataManager
dm = StockDataManager(base_path='data')
print(dm.get_pending_deletions())
Cancel a Specific Deletion
dm.cancel_ticker_deletion('AAPL')
Force Immediate Deletion
dm.delete_ticker_data('AAPL') # Immediately deletes all data for AAPL
Process Pending Deletions Now
deleted = dm.process_pending_deletions()
print(f"Deleted: {deleted}")
Related Files
data_management/stock_data_manager.py- Contains the deletion logicInternal/launch/stock_launcher.py- Integrates deletion with UI actionsdata/pending_deletions.json- Tracks scheduled deletions