$hail's Portfolio Dashboard
Daily Data Refresh User Manual
ICICI Direct • Interactive Brokers • Revolut
Figure 1. Main dashboard and portfolio entry cards
| Purpose Use this guide for the normal daily routine, transaction updates, automatic price refreshes, and common recovery steps. The main starting point is the $hail's Dashboard home page. |
|---|
1. Daily routine at a glance
Start at: https://portfolio.finance.shailshilp.com/
| Portfolio | What refreshes automatically | What you do | When |
|---|---|---|---|
| ICICI Direct | Nothing without a valid Breeze session token. | Generate/update the Breeze token when the session expires, then open the ICICI Direct Portfolio. | Usually daily or whenever the session expires. |
| Interactive Brokers | External prices at 22:40 UTC, Monday to Friday. | For new trades, quantity, cash or account changes: log in to TWS, run the Windows agent, then click Refresh IBKR Snapshot. | Snapshot only when holdings/account data change. |
| Revolut | Supported prices and FX at 22:30 UTC, Monday to Friday. | Upload a new complete account-statement CSV only when transactions change. Upload P&L CSV when available. | No daily action for prices. |
| Important distinction A price refresh updates market prices and calculated P/L. A holdings refresh updates quantities, trades, cash and account information. These are separate processes. |
|---|
2. ICICI Direct / Breeze process
Normal daily process
1. Open $hail's Dashboard
Open the home page and locate the ICICI Direct Portfolio, Breeze Session Token and ICICI Breeze Login cards.
2. Open ICICI Breeze Login
Use the ICICI Breeze Login card to open the ICICI Breeze API login page and generate a current session token when required.
3. Update the Breeze Session Token
Return to $hail's Dashboard, open the Breeze Session Token card, paste the new token, enter the admin PIN and submit the update.
4. Open ICICI Direct Portfolio
Open the ICICI Direct Portfolio card. The dashboard retrieves the available funds, holdings and P/L using the active Breeze session.
5. If data does not load
Generate a fresh Breeze token and update it again. Then reload the ICICI Direct Portfolio page.
| What is automatic? ICICI holdings are retrieved through Breeze when the dashboard is opened, but the Breeze session token must remain valid. If the session expires, renew the token through the two Breeze cards on the main page. |
|---|
3. Interactive Brokers process
A. Daily prices only
- No TWS action is needed for the scheduled external price refresh.
- At 22:40 UTC, Monday to Friday, Oracle runs the IBKR price-refresh job.
- Open or refresh the IBKR dashboard after the scheduled time to see the latest cached prices.
- Supported UK/EU prices use Alpha Vantage; FX uses Twelve Data; unsupported/Singapore positions retain an IBKR snapshot fallback price.
B. New buy, sale, quantity, cash or account change
1. Log in to TWS
On a Windows laptop with the agent installed, open Trader Workstation and wait until the account is fully connected.
2. Start the Windows agent
Open PowerShell and run:
cd "$env:USERPROFILE\OneDrive\Apps\IBKR-Test" python .\ibkr_windows_agent.py
3. Keep the agent window running
The expected message is: “IBKR agent running as home-laptop. Polling every 10 seconds.”
4. Click Refresh IBKR Snapshot
From the IBKR dashboard, click the Refresh IBKR Snapshot button and enter the admin PIN.
5. Wait for completion
The dashboard should progress through waiting, claim, export, upload and success states, then reload using the new snapshot.
6. Close when finished
After the snapshot has updated, the Windows agent may be stopped with Ctrl+C and TWS may be closed if no longer required.
| Using another laptop The dashboard button can be clicked from any device. The laptop that is logged into TWS must be awake, online and running the configured Windows agent. |
|---|
4. Revolut process
A. Daily prices
- No daily manual action is required for supported prices.
- At 22:30 UTC, Monday to Friday, Oracle refreshes supported US prices, mapped UK prices and FX rates.
- Open or refresh the Revolut dashboard after the scheduled time.
- A Pending price means the Revolut symbol has not yet been mapped to an external provider. The holding remains in the dashboard.
B. When Revolut transactions change
1. Export complete statements from Revolut
Download a complete start-to-date trading account statement CSV. Also download the P&L statement CSV when available.
2. Open Revolut Portfolio
From $hail's Dashboard, open the Revolut Portfolio card.
3. Choose Upload Revolut Statements
Click the upload button. The upload page opens in the same browser tab.
4. Select files carefully
Account statement field: trading-account-statement…csv. Optional P&L field: trading-pnl-statement…csv. Do not reverse the files.
5. Enter the admin PIN and upload
Click Upload and rebuild dashboard. The server validates the files, backs up the old snapshot and builds a new snapshot.
6. Return to the dashboard
After success, the browser returns automatically and displays “Success. [count] holdings loaded at [timestamp].”
| Recommended update method Upload the latest complete start-to-date account statement rather than a differential file. Rebuilding from the full history reduces duplication and omission risk. |
|---|
5. Daily and event-driven checklist
| Situation | Required action | Expected result |
|---|---|---|
| Normal weekday, prices only | Nothing before the scheduled times. Refresh the Revolut/IBKR dashboards afterward. | Revolut prices updated after 22:30 UTC; IBKR prices after 22:40 UTC. |
| ICICI dashboard session expired | Use ICICI Breeze Login, generate token, update Breeze Session Token, reopen ICICI Direct Portfolio. | Funds and holdings load with a valid session. |
| IBKR trade or cash changed | Log in to TWS, start Windows agent, click Refresh IBKR Snapshot, enter PIN. | New TWS snapshot is exported and uploaded. |
| Revolut trade/dividend changed | Upload fresh complete account CSV and optional P&L CSV. | Revolut holdings and P&L summary are rebuilt. |
| Revolut/IBKR price says Pending | No urgent action. Map the exact provider symbol later or use fallback/manual price. | Holding remains visible; price-dependent values may remain Pending. |
| Automatic job appears stale | Check the appropriate cron log and cache timestamp on Oracle. | Any API or script error is visible in the log. |
6. Troubleshooting quick reference
IBKR shows “Waiting for a Windows agent”
Confirm TWS is logged in and the Windows agent PowerShell window is running. If the request was accidental, reset the queued state on Oracle.
IBKR agent reports Unauthorized
Confirm the Oracle agent route is exempt from website Basic Authentication and that the private agent token matches on Oracle and Windows.
IBKR export reports order timeouts
If the script still reports Connected: True and saves ibkr_snapshot.json, the portfolio export can still be successful.
Revolut upload reports missing columns
The account and P&L files may be reversed. Put trading-account-statement in the account field.
Automatic prices did not change
Check whether the market was closed, whether the cached timestamp changed, and whether the provider returned an error or rate limit.
Alpha Vantage limit reached
Previously cached values remain available. Twelve Data continues to cover supported US equities and FX; retry Alpha Vantage after its allowance resets.
7. Reference commands
Start the IBKR Windows agent
cd "$env:USERPROFILE\OneDrive\Apps\IBKR-Test" python .\ibkr_windows_agent.py
Check scheduled jobs on Oracle
crontab -l
Check Revolut price-refresh log
tail -50 ~/breeze-app/logs/revolut-price-refresh.log
Check IBKR price-refresh log
tail -50 ~/breeze-app/logs/ibkr-price-refresh.log
| Security reminder Never place API keys, agent tokens, admin PINs, IBKR credentials or Breeze session tokens in screenshots, HTML files, public JSON files or chat messages. Keep secrets only in protected configuration files. |
|---|