Managing shares and ETFs throughout accounts will get messy quick, and guessing your good points or sector publicity isn’t any method to make investments. Centralize all the things, monitor actual efficiency, and get notified when one thing wants your consideration as an alternative of reacting late. This information walks you thru pulling stay inventory costs, calculating good points and losses, monitoring sector publicity, and setting alerts for significant value modifications. And right here’s the factor: this complete information will present you tips on how to construct an funding portfolio tracker in Excel to observe all of your holdings in a single place and ship automated e mail alerts for vital market strikes.
1. Design The Column Construction
Open MS Excel and determine on the column construction based mostly on the funding particulars you need to monitor. Fill within the header rows. I’ve used the construction under:
A1: Image - Inventory ticker (AAPL, MSFT, SPY)B1: Firm Title - Full firm/fund title
C1: Asset Sort - Inventory, ETF, Bond, Crypto
D1: Shares - Variety of shares owned
E1: Avg Price - Common buy value per share
F1: Whole Price - Whole funding quantity
G1: Present Worth - Stay market value (auto-updated)
H1: Market Worth - Present whole worth
I1: Acquire/Loss $ - Revenue or loss in {dollars}
J1: Acquire/Loss % - Return proportion
K1: Sector - Business sector (Know-how, Healthcare, and many others.)
L1: Notes - Buy date, technique notes
2. Fill in Pattern Information
Insert a pattern of 20 various inventory and ETF holdings throughout a number of sectors. Embody expertise shares, monetary providers, healthcare, client items, vitality, and index ETFs to create a diversified portfolio. Depart Columns F by means of J empty initially, as they are going to be stuffed mechanically with formulation within the upcoming steps.
Pattern Holdings:

3. Getting Stay Inventory Costs
Now we’ll arrange automated value feeds. Excel Desktop has a number of strategies, however we’ll use essentially the most dependable method for constant outcomes.
Technique 1: Utilizing Inventory Information Sorts
Comply with the next steps under:
- Choose ticker symbols in column A (A2:A21)
- Go to Information tab
- Click on Shares button
- Look ahead to conversion (10-15 seconds for all 20 shares)
- Verifyy success by seeing a small icon subsequent to every ticker
Extract Present Worth in Column G:
Click on cell G2 and enter this system: =A2.Worth
This extracts the stay present value from the Inventory knowledge sort. Copy this system all the way down to G3:G21.

Technique 2: Various Resolution for Compatibility Points
Generally the “STOCK” Operate in excel relies upon upon the most recent model and geography. If Inventory knowledge sorts don’t work in your system, use this STOCKHISTORY operate:
Click on cell G2 and enter: =INDEX(STOCKHISTORY(A2,TODAY()-1,TODAY()),1,5)
This pulls the newest closing value. Copy all the way down to G3:G21.
4. Constructing Sensible Calculation Formulation
Now we’ll add formulation to mechanically calculate your funding efficiency. These formulation replace immediately every time costs change.
A. Whole Price Components (Column F)
Click on cell F2 and enter this system: =D2*E2
This calculates: Shares × Common Price = Whole Funding
Copy this system all the way down to F3:F21.
B. Market Worth Components (Column H)
Click on cell H2 and enter this system: =D2*G2
This calculates: Shares × Present Worth = Present Market Worth
Copy all the way down to H3:H21.
C. Acquire/Loss in {Dollars} (Column I)
Click on cell I2 and enter this system: =H2-F2
This calculates: Market Worth – Whole Price = Revenue/Loss
Copy all the way down to I3:I21.
D. Acquire/Loss Proportion (Column J)
Click on cell J2 and enter this system: =IF(F2=0,0,(I2/F2)*100)
Then format column J as Proportion
This calculates: (Acquire/Loss ÷ Whole Price) = Return Proportion
Copy all the way down to J3:J21.
5. Construct A Abstract Dashboard
Add a portfolio abstract part beginning at row 24 to trace key metrics:
A. Whole Portfolio Worth (In USD)
Add this system to calculate whole present worth: =SUM(H2:H21)
B. Whole Price Foundation (In USD)
Add this system to calculate whole funding: =SUM(F2:F21)
C. Whole Acquire/Loss ($)
Add this system to calculate whole revenue/loss: =B27-B28
(Assuming B27 has portfolio worth and B28 has price foundation)
D. Whole Return (%)
Add this system to calculate total return proportion: =(B29/B28)
E. Variety of Holdings
Add this system to depend lively positions: =COUNTA(A2:A21)
F. Greatest Performer
Add this system to determine high gainer: =INDEX(A2:A21,MATCH(MAX(J2:J21),J2:J21,0))
G. Worst Performer
Add this system to determine greatest loser: =INDEX(A2:A21,MATCH(MIN(J2:J21),J2:J21,0))

6. Creating Visible Alerts with Conditional Formatting
Now arrange conditional formatting to spotlight vital actions and efficiency:
Format Acquire/Loss $ Column (I):
- Choose column I (I2:I21)
- Go to Residence : Conditional Formatting : New Rule
- Format cells > 0: Mild inexperienced fill with darkish inexperienced textual content
- Add one other rule for
Format Acquire/Loss % Column (J):
Repeat the identical inexperienced/crimson formatting course of for column J.
Add Information Bars to Market Worth (Column H):
- Choose H2:H21
- Conditional Formatting : Information Bars : Blue Gradient Fill
This creates visible bars displaying the relative measurement of every place.
Now your tracker will mechanically spotlight good points in inexperienced and losses in crimson, making it simple to identify efficiency at a look.

7. Arrange Automated Electronic mail Alerts
Since Excel Desktop doesn’t have built-in e mail automation, we’ll use Google App Script for automated e mail alerts.
Steps for Setting Up Google Apps Script:
- Export to CSV: From Excel, save as CSV
- Add to Google Sheets: Import the CSV file
- Add GOOGLEFINANCE: Substitute column G with
=GOOGLEFINANCE(A2,"value") - Entry Apps Script: In Google Sheets, go to Extensions : Apps Script
- Delete Default Code: Take away present code
- Rename Challenge: Click on “Untitled challenge” and rename to “Portfolio Alerts”
Paste this whole script into the Code.gs file:
operate checkStockAlerts() {
const sheet = SpreadsheetApp.getActiveSheet();
const knowledge = sheet.getDataRange().getValues();
const headers = knowledge[0];
// Discover column indices
const symbolCol = headers.indexOf('Image');
const companyCol = headers.indexOf('Firm Title');
const priceCol = headers.indexOf('Present Worth');
const dayChangeCol = headers.indexOf('Day Change %');
const gainLossCol = headers.indexOf('Acquire/Loss %');
const sharesCol = headers.indexOf('Shares');
const marketValueCol = headers.indexOf('Market Worth');
let alerts = [];
// Loop by means of every row (skip header)
for (let i = 1; i 5% or = 5) {
alerts.push({
image: image,
firm: firm,
sort: 'Each day Motion',
message: `${image} (${firm}): ${dayChange.toFixed(2)}% day change`,
particulars: `Present Worth: ${currentPrice.toFixed(2)} | Shares: ${shares} | Worth: ${marketValue.toFixed(2)}`
});
}
// Alert if acquire/loss milestone reached
if (gainLoss >= 50) {
alerts.push({
image: image,
firm: firm,
sort: 'Revenue Milestone',
message: `${image}: +${gainLoss.toFixed(2)}% acquire reached!`,
particulars: `Present Worth: ${currentPrice.toFixed(2)} | Place Worth: ${marketValue.toFixed(2)}`
});
} else if (gainLoss 0) {
sendAlertEmail(alerts);
Logger.log('Alert e mail despatched with ' + alerts.size + ' alert(s)');
} else {
Logger.log('No alerts to ship right now');
}
}
operate sendAlertEmail(alerts) {
// CHANGE THIS TO YOUR EMAIL ADDRESS
const emailAddress="[email protected]";
// Construct e mail topic
const topic="🚨 Inventory Alert: " + alerts.size + ' Place(s) Require Consideration';
// Construct e mail physique
let physique = 'Portfolio Alert Summaryn';
physique += '═══════════════════════════nn';
// Group alerts by sort
const dailyMovement = alerts.filter(a => a.sort === 'Each day Motion');
const profitMilestones = alerts.filter(a => a.sort === 'Revenue Milestone');
const lossWarnings = alerts.filter(a => a.sort === 'Loss Warning');
// Each day motion alerts
if (dailyMovement.size > 0) {
physique += '📊 SIGNIFICANT DAILY MOVEMENTS:nn';
dailyMovement.forEach(alert => {
physique += alert.message + 'n';
physique += alert.particulars + 'nn';
});
}
// Revenue milestone alerts
if (profitMilestones.size > 0) {
physique += '💰 PROFIT MILESTONES:nn';
profitMilestones.forEach(alert => {
physique += alert.message + 'n';
physique += alert.particulars + 'nn';
});
}
// Loss warning alerts
if (lossWarnings.size > 0) {
physique += '⚠️ LOSS WARNINGS:nn';
lossWarnings.forEach(alert => {
physique += alert.message + 'n';
physique += alert.particulars + 'nn';
});
}
// Add footer
physique += '═══════════════════════════n';
physique += 'Alert generated: ' + new Date().toLocaleString() + 'n';
physique += 'Verify your portfolio tracker for full particulars.n';
// Ship the e-mail
attempt {
GmailApp.sendEmail(emailAddress, topic, physique);
} catch (error) {
Logger.log('Error sending e mail: ' + error);
}
}
operate testEmailAlert() {
// Check operate to confirm e mail works
const testAlerts = [
Shares: 10
];
sendAlertEmail(testAlerts);
Logger.log('Check e mail despatched');
}
Vital: Subsequent to const emailAddress = Substitute [email protected] together with your Gmail deal with.
Authorize and Check the Script:
- Save the script (press Ctrl+S or Cmd+S)
- Choose operate: Select
testEmailAlertfrom dropdown - Click on Run button
- Grant permissions when prompted:
- Click on “Evaluation permissions”
- Select your Google account
- Click on “Superior” : “Go to [Project Name] (unsafe)”
- Click on “Permit”
- Verify your e mail for the take a look at message

Set Up Automated Set off:
- Click on the Clock icon within the left sidebar (Triggers)
- Click on “+ Add Set off”
- Configure set off:
- Operate:
checkStockAlerts - Occasion supply: Time-driven
- Sort: Hour timer
- Interval: Each hour (or your choice)
- Click on Save

Greatest Practices for Upkeep
Listed here are some pointers you possibly can observe to maintain your funding tracker operating easily:
- Weekly Evaluation: Open tracker and assessment efficiency, test e mail alerts from the previous week & observe any vital modifications
- Quarterly Evaluation: Evaluation sector allocation, assess particular person holdings efficiency and contemplate rebalancing alternatives
- Annual Audit: Generate annual efficiency report, export transactions for tax preparation & assessment and replace funding technique
Conclusion
With a number of funding accounts and dozens of shares it may be troublesome to maintain monitor of your full portfolio efficiency. Nonetheless, now with the assistance of this Excel tracker with stay knowledge feeds, you might be on high of your investments and make knowledgeable choices. With the assistance of this data, now you can:
- Construct a complete funding tracker in Excel Desktop with stay inventory costs
- Automate calculations for good points, losses, and returns throughout all positions
- Arrange automated e mail alerts utilizing Google Apps Script for vital value actions
- Observe transactions and keep correct price foundation for tax functions
- Monitor portfolio efficiency throughout a number of sectors and asset lessons
With this method, you’ll by no means lose monitor of your funding efficiency once more and may make knowledgeable choices based mostly on real-time knowledge and complete analytics.
Learn extra:
Regularly Requested Questions
A. Excel Desktop is strongly beneficial for one of the best expertise. It has full Inventory knowledge sort assist for automated stay value feeds. Excel On-line has limitations with stay knowledge. In case you don’t have Excel Desktop, Google Sheets is a greater free different than Excel On-line, as GOOGLEFINANCE works reliably worldwide.
A. The tracker can simply deal with 100+ shares. Excel Desktop performs nicely with 200+ holdings. Google Sheets handles 1,000+ shares easily. For optimum efficiency, hold below 200 holdings in Excel, or contemplate splitting into a number of sheets by account sort.
A. This error happens when:
1. The Whole Price system (Column F) isn’t working: Guarantee F2 = =D2*E2
2. Incorrect system in Acquire/Loss %: Needs to be =IF(F2=0,0,I2/F2) not I2/E2
3. Double proportion multiplication: If utilizing Proportion format, take away *100 from system
Login to proceed studying and luxuriate in expert-curated content material.

