Skip to main content

A tool to analyse Sovereign Gold Bonds and compare their yields.

Project description

sgb-advisor

A tool to analyse Sovereign Gold Bonds and compare their yields.

Sovereign Gold Bond is a security issued by the RBI on behalf of the Government of India. It is linked to the price of gold.

This tool tries to use publically available data and ✨maths✨ to advise you on which SGB among all of them is trading at it's lowest "fair value".

This does not recommend anything. Calculations, data or something else can be wrong. Do your own research before investing your money anywhere.

Demo: Output will being sent in this public Telegram channel at 10:00 AM IST every weekday!

Tools used:

  1. Playwright for getting SGB prices from NSE and the price of gold from IBJA.

  2. pyxirr to calculate XIRR

Running the app

You can use any of the 3 methods given below

  1. You can use plain pip or something like uv to build and run the project.

    # Highly recommend creating a venv using `python -m venv .venv` and then activating it (https://docs.python.org/3/library/venv.html#how-venvs-work) first.
    pip install -r requirements.txt
    # Setup env before this
    python app.py
    

    (or)

    pip install uv
    # uv sync creates venv and installs dependencies automatically
    uv sync
    # Setup env before this
    python app.py
    
  2. Docker

    # Setup env before this
    docker run --env-file .env ghcr.io/vishalnandagopal/sgb-advisor:latest
    
  3. Github actions

    • An action is already setup here.
    • Clone the repo, enable the action in repo settings, setup the required GitHub secrets and vars/envs.
    • Change the timings of the cron job in the same file as per your requirements.

Environment variables

Place the required env variables in an .env file.

# How to notify the user. Accepted values are "telegram", "email" or "both"
SGB_MODE=telegram

# Get token from BotFather on Telegram
SGB_TELEGRAM_BOT_TOKEN=xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Can be one or many users/channels
SGB_TELEGRAM_CHAT_IDS=xxxxxxxxx,xxxxxxx,@sgb_advisor

# No one need to set any of these if you only want to send a message through telegram
SGB_AWS_ACCESS_KEY=xxx
SGB_AWS_SECRET_ACCESS_KEY=xxx
SGB_AWS_SES_SENDER_EMAIL=SGB Advisor <sgb-advisor@your-verified-domain.com>
SGB_AWS_SES_RECIPIENT=example@example.com
SGB_AWS_REGION=us-east-1

Sending results to someone

  1. Telegram (recommended)

    If you have a telegram account, you can create a bot in a few seconds, making it very easy to notify you of the results of every run.

    The bot can send results to multiple telegram accounts (both users and channels) at once.

    1. Get an API key from BotFather on Telegram ("bot token").

    2. Get the chat ID of the user(s) you want to send the output to. It is the unique identifier for the target chat (integer in this case) or username of the target channel (@channelusername in this case). Output can be sent to multiple users (place comma-separated chat IDs). Errors are only sent to the first chat-id.

    If you don't know your chat ID, get it by sending a message to @JsonDumpBot. The ["chat"]["id"] in response is your chat ID.

  2. Email (AWS SES only)

    Sending results to an email address using Amazon SES is supported.

    1. Get API keys from AWS console and place it in an .env file as per the above format.

    The email address you want to send from be verified in AWS console. Even the recipient of the email must be verified if you are a new user and in AWS SES Sandbox.

License

GNU GPLv3

TODO

  • Similar tool for finding arbritages in ETFs tracking the same index.

Disclaimers

This tries to use publically available data and maths to advise you on which SGB among all of them is trading at it's lowest "fair value".

This is just a tool to maximize XIRR on interest payments, and to find possible arbritages between gold price IRL and the prices SGBs are trading at.

This does not recommend anything. Calculations, data or something else can be wrong. Do your own research

Assumptions Made

  • The price of Gold when the SGB matures will be the same as it is today. While this may sound dumb, any increase in the price of gold should lead to a somewhat similar increase in redemption prices of all SGBs. You way think that gold can fall or increase in between, but that will affect all gold investments, not just SGB

  • You are interested in gold and have finalized on SGB as a product, and are just confused among different SGBs.

Copyright (C) 2025 Vishal N (hi@vishalnandagopal.com)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sgb_advisor-0.1.3.tar.gz (29.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sgb_advisor-0.1.3-py3-none-any.whl (30.4 kB view details)

Uploaded Python 3

File details

Details for the file sgb_advisor-0.1.3.tar.gz.

File metadata

  • Download URL: sgb_advisor-0.1.3.tar.gz
  • Upload date:
  • Size: 29.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sgb_advisor-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b947f55e008b7146ee92454f0ef926a7b5c1a93543d4c68aeb4f512c8f37f6f0
MD5 f3b2356b4dc94c4d887cdff717918445
BLAKE2b-256 4df419315dbb0213330c368dc7551fa751b5a788acac7345b4d288157200c1bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for sgb_advisor-0.1.3.tar.gz:

Publisher: publish-pypi.yml on vishalnandagopal/sgb-advisor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sgb_advisor-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: sgb_advisor-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 30.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sgb_advisor-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9e585bf7c15bdf82e74325d0cf930c0204b3646d3ad0c537662a1b13a96698bc
MD5 4f1c73d685a912059060d82b7973db61
BLAKE2b-256 3e93a0f4c785c81b06289f90ef6e17218024286173ebf92d156964f3d369f2bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sgb_advisor-0.1.3-py3-none-any.whl:

Publisher: publish-pypi.yml on vishalnandagopal/sgb-advisor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page