Ajitabh Pandey's Soul & Syntax

Exploring systems, souls, and stories – one post at a time

Author: Ajitabh

  • Why Insurance-Linked Plans Like HDFC Sanchay Par Advantage May Not Be as Attractive as They Look

    Recently, I received a proposal for the popular HDFC Life Sanchay Par Advantage, a traditional insurance-linked savings plan that promises guaranteed payouts, a sizable life cover, and tax-free returns.

    On the surface, the numbers look very impressive — large cumulative payouts, substantial maturity benefits, and a comforting insurance cushion.

    But when you take a closer look, break down the actual yearly cash flows, and compute the real rate of return (IRR), the story changes quite dramatically.

    In this post, I’ll show you:

    ✅ What the plan promises
    ✅ A year-by-year cash flow table
    ✅ A graph of cumulative balances
    ✅ And finally — why even with the maturity benefit, the actual return (IRR) is quite modest.

    The Proposal Highlights

    ParameterValue
    ProductHDFC Life Sanchay Par Advantage
    Annual Premium₹5,00,000
    Premium Paying Term6 years
    Life Cover₹52,50,000
    Payout Period20 years (starting right after year 1)
    Annual Payout₹1,05,200 (can be monthly)
    Maturity Benefit (Year 20)₹37,25,000
    Total Payouts + Maturity₹58,29,000 over 20 years

    Sounds impressive, doesn’t it?

    The Hidden Picture: Cash Flows Over Time

    Let’s lay out the cash flows year by year.
    In this plan:

    • You pay ₹5,00,000 in year 0 (start), then
    • From year 1 to year 5, you pay ₹5,00,000 each year but also start getting ₹1,05,200 payouts immediately, effectively reducing your net outgo to ₹3,94,800.
    • From year 6 to year 19, you receive ₹1,05,200 each year.
    • In year 20, you receive ₹1,05,200 plus the maturity benefit of ₹37,25,000.

    Revised Cash Flow Table

    YearCash FlowCumulative Balance
    0-₹5,00,000-₹5,00,000
    1-₹3,94,800-₹8,94,800
    2-₹3,94,800-₹12,89,600
    3-₹3,94,800-₹16,84,400
    4-₹3,94,800-₹20,79,200
    5-₹3,94,800-₹24,74,000
    6+₹1,05,200-₹23,68,800
    7+₹1,05,200-₹22,63,600
    8+₹1,05,200-₹21,58,400
    9+₹1,05,200-₹20,53,200
    10+₹1,05,200-₹19,48,000
    11+₹1,05,200-₹18,42,800
    12+₹1,05,200-₹17,37,600
    13+₹1,05,200-₹16,32,400
    14+₹1,05,200-₹15,27,200
    15+₹1,05,200-₹14,22,000
    16+₹1,05,200-₹13,16,800
    17+₹1,05,200-₹12,11,600
    18+₹1,05,200-₹11,06,400
    19+₹1,05,200-₹10,01,200
    20+₹38,30,200+₹28,29,000

    So by the end of 20 years, you have a gross cumulative balance of about ₹28.29 lakh — i.e. your payouts plus maturity exceed your total outgo by this amount.

    The Real Return You Earn

    Now let’s compute the effective IRR (internal rate of return) on these cash flows.

    • Over 6 years, you invest a total of ₹24,74,000 (after adjusting for payouts received during premium years).
    • Over 20 years, you get total payouts + maturity of ₹58,29,000.

    So approximate CAGR is:

    ≈ (58,29,000 / 24,74,000) ^ (1/20) – 1 ≈ (2.35)^0.05 – 1 ≈ 4.4% p.a.

    This means your effective compounded return is approximately 4.4% p.a. tax-free.

    Why Do Such Plans Look So Lucrative?

    Insurance sales illustrations often:

    ✅ Highlight large cumulative payouts like “₹58,29,000”,
    ✅ Emphasize tax-free income,
    ✅ Focus on the big life cover of ₹52.5 lakh,
    ✅ Present it as a “risk-free assured income.”

    What they usually don’t show clearly is:

    • The actual yearly cash flows which are modest until the final year.
    • The impact of locking your money for 20 years.
    • How a 4.4% return lags inflation, which averages 5-6% over long periods.

    Bottom Line: Should You Go for It?

    So with the maturity benefit, the product is like a long-term tax-free FD yielding ~4.4%, with bundled life insurance.

    If you value the insurance and the forced discipline, it might suit you. Otherwise:

    ✅ For insurance, a simple term plan of ₹52.5 lakh would cost just ~₹6-8k per year.
    ✅ For investment, diversified equity or balanced mutual funds over 20 years historically yield 10-12%, much better beating inflation.

    If you still like such plans for the psychological comfort of “assured money,” that’s perfectly okay. But at least go in fully aware:

    FeatureHDFC Sanchay Par AdvantageTerm Plan + Equity SIP
    Life cover₹52.5 lakh bundled₹52.5 lakh for ~₹8k/year
    Total 6-year outgo₹30 lakh₹30 lakh into SIP + minimal for term
    Expected corpus @20 yrs~₹58 lakh (4.4% IRR)~₹1.1 crore (12% SIP CAGR)
    Flexibility & liquidityLocked for 20 yrsWithdraw anytime from SIP

    They are insurance-led savings products — not true investment plans.
    Your money could work much harder for you elsewhere.

  • Book Review: Antarctica Storm by F.X. Holden

    F.X. Holden’s Antarctica Storm is a thrilling, high-stakes entry into the Aggressor series that plunges the reader immediately into a covert new arms race. This book is set in a world recovering from a devastating Pacific War and poses a serious question to the reader of the entire series: are America’s adversaries truly beaten, or are they secretly preparing to rise again?

    The plot centres around the elite Aggressor Inc. team of private security contractors who are drawn into a deadly race to protect a groundbreaking weapon based on antimatter technology. This power source is supposedly so potent that a mere 0.1 ounces could flatten Manhattan. The US research program developing it has been hidden beneath the ice at Antarctica’s remote Concordia Station.

    The team includes Captain Karen ‘Bunny’ O’Hare and Captain Rory O’Donoghue, both from the previous series. This team oversees a critical test of this new technology, the geopolitical tension explodes. The situation is complicated by the presence of an unidentified spy deep inside the program. To increase the pulse, the Russian operatives launch a covert sabotage operation which threatened not only the mission but global stability.

    Holden masterfully uses the icy, isolated setting of Antarctica to heighten the sense of claustrophobia and danger. The story weaves together the scientific brilliance of a physicist with the sharp instincts of the Aggressor Inc. team. Together they detect the first mysterious radiation spike that signals a very cold war is about to turn hot. The introduction of Chinese and Russian research teams in the desolate landscape cleverly plants the seeds of international conspiracy and conflict.

    This book is a page-burning thriller that captures the paranoia and high-tech stakes of the next arms race.

  • पुस्तक समीक्षा: उफ़्फ़ कोलकाता – सत्य व्यास द्वारा

    यह कहानी कोलकाता के बाहरी इलाके के एक विश्वविद्यालय हॉस्टल में रहने वाले युवाओं के इर्द-गिर्द घूमती है, जिनकी ज़िंदगी अचानक डरावनी और रहस्यमयी घटनाओं से भर जाती है।

    कहानी की शुरुआत एक हॉस्टल और एक अभिशप्त आत्मा से होती है, जो मुख्य किरदारों की गलती के कारण वहां आ जाती है। यह आत्मा बच्चों को परेशान तो करती है, पर मारती नहीं। डर और बचने के इंतज़ामों से उपजा यही हास्य इस उपन्यास का मूल है।

    सत्य व्यास ने डरावनी घटनाओं को हास्य के तड़के के साथ इस तरह पेश किया है कि पाठक एक साथ डरता भी है और हँसता भी है। यह एक जोखिम भरा मेल था, जिसे लेखक ने बखूबी निभाया है।

    कहानी में भूत-प्रेत और रहस्यमयी घटनाएँ हैं, लेकिन पात्रों की नोकझोंक, उनका बनारसी अंदाज़ (जो सत्य व्यास की कहानियों की पहचान है) और व्यंग्यात्मक संवाद आपको पूरे समय बाँधे रखते हैं। यह आपको हॉरर के तनाव से बचाता है और मनोरंजन को प्राथमिकता देता है। उपन्यास की भाषा सहज, संवाद चुटीले और कहानी तेज़ रफ़्तार है। यह गति सुनिश्चित करती है कि पाठक कहीं भी बोर न हो। कहानी ख़त्म होते-होते एक ऐसा हतप्रभ कर देने वाला मोड़ लेती है, जिसके लिए सत्य व्यास जाने जाते हैं। यह क्लाइमेक्स पूरे सफर को यादगार बना देता है।

    अगर आप एक हल्की-फुल्की, तेज़-तर्रार और अनोखे विषय पर आधारित हिंदी किताब ढूँढ रहे हैं, तो ‘उफ़्फ़ कोलकाता’ निश्चित रूप से आपकी पठन सूची में होनी चाहिए।

  • Book Review: Defeat Is an Orphan: How Pakistan Lost the Great South Asian War by Myra Macdonald

    Myra Macdonald’s Defeat Is an Orphan, published in 2017, is a compelling and incisive examination of the turbulent post-nuclear history of India-Pakistan relations. Long unread on my own bookshelf, I found the book to be a crucial read for understanding the current geopolitical landscape of South Asia.

    Macdonald, with her journalist’s eye for detail and a historian’s depth, masterfully traces the rollercoaster ride of conflict and diplomacy that followed the 1998 nuclear tests. The central argument is stark: Pakistan decisively lost the Great South Asian War, not because of India’s overwhelming military victory, but because of Pakistan’s own strategic miscalculations and dysfunction.

    The core of Macdonald’s analysis lies in the paradoxical impact of nuclear weapons. While they restored a certain strategic parity and shielded Pakistan from full-scale retaliation due to its smaller size, they ultimately proved to be its undoing. The book effectively dissects how the nuclear shield encouraged a reckless reliance on militant proxies (jihadis) even as those proxies began to spin out of control both internally and externally. This reliance sealed Pakistan into a cycle of militarism and denial.

    Macdonald successfully argues that while India, despite its flaws, was able to move toward economic and political consolidation, Pakistan became increasingly trapped. The book chronicles this downward spiral through key moments—from the Kargil conflict and military confrontation in the plains to the hijacking of an Indian plane and the horrific assault on Mumbai—showing how the ability to stake a serious claim to Kashmir and influence events in Afghanistan diminished rapidly.

    Defeat Is an Orphan is thought-provoking and exceptionally well-researched. It offers a nuanced perspective on South Asia’s geopolitical dynamics by focusing on the military’s dominant role in shaping Pakistan’s national policy and the country’s repeated failures to adapt.

    This is not merely a historical account; it is a critical analysis that remains remarkably relevant years after its publication. For anyone seeking to understand the roots of ongoing regional tensions and the complex interplay of nuclear deterrence, proxy warfare, and state policy in South Asia, this book is an essential reading. It powerfully makes the case that this “war… was not so much won by India as lost by Pakistan.

  • Using Telegram for Automation Using Python Telethon Module

    Using Telegram for Automation Using Python Telethon Module

    Telegram is a cloud based messaging application which provides an excellent set of APIs to allow developers to automate on top of the platform. It is increasingly being used to automate various notifications and messages. It has become a platform of choice to create bots which interact with users and groups.

    Telethon is an asyncio Python 3 library for interacting with telegram API. It is one of the very exhaustive libraries which allows users to interact with telegram API as a user or as a bot.

    Recently I have written some AWS Lambda functions to automate certain personal notifications. I could have run the code as a container on one of my VPSs or on Hulu or other platforms, but I took this exercise as an opportunity to learn more about serverless and functions. Also, my kind of load is something which can easyly fall under the Lambda free tier.

    In this post we will look into the process of how to start with the development and write some basic python applications.

    Registering As a Telegram Developer

    Following steps can be followed to obtain the API ID for telegram –

    • Sign up for Telegram using any application
    • Login to the https://my.telegram.org/ website using the same mobile number. Telegram will send you a confirmation code on Telegram application. After entering the confirmation code, you will be seeing the following screen –
    Screenshot of Telegram Core Developer Page
    • In the above screen select the API Development Tools and complete the form. This page will provide some basic information in addition to api_id and api_hash.

    Setting up Telethon Development Environment

    I assume that the reader is familiar with basic python and knows how to set up a virtual environment, so rather than explaining, I would more focus on quick code to get the development environment up and running.

    $ mkdir telethon-dev && cd telethon-dev 
    $ python3 -m venv venv-telethon
    $ source venv-telethon/bin/activate
    (venv-telethon) $ pip install --upgrade pip
    (venv-telethon) $ pip install telethon
    (venv-telethon) $ pip install python-dotenv

    Obtaining The Telegram Session

    I will be using .env file for storing the api_id and api_hash so that the same can be used in the code which we will write. Replace NNNNN with your api_id and XX with your api_hash

    TELEGRAM_API_ID=NNNNN
    TELEGRAM_API_HASH=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Next we will need to create a session to be used in our code. For full automation, it is needed that we store the session either as a file or as a string. Since the cloud environments destroy the ephimeral storage they provide, so I will get the session as a string. The following python code will help obtain the same.

    #! /usr/bin/env python3
    
    import os
    
    from dotenv import load_dotenv
    
    from telethon.sync import TelegramClient
    from telethon.sessions import StringSession
    
    load_dotenv()
    
    with TelegramClient(StringSession(), os.getenv("TELEGRAM_API_ID"), os.getenv("TELEGRAM_API_HASH")) as client:
        print(client.session.save())

    When this code is executed, it will prompt for your phone number. Here you would need to print the phone number with the country code. In the next step, an authorization code will be received in the telegram application which would need to be entered in the application prompt. Once the authorization code is typed correctly, the session will be printed as a string value on standard output. You would need to save the same.

    (venv-telethon) $ ./get_string_session.py
     Please enter your phone (or bot token): +91xxxxxxxxxx
     Please enter the code you received: zzzzz
    Signed in successfully as KKKKKK KKKKKKK
    9vznqQDuX2q34Fyir634qgDysl4gZ4Fhu82eZ9yHs35rKyXf9vznqQDuX2q34Fyir634qgDyslLov-S0t7KpTK6q6EdEnla7cqGD26N5uHg9rFtg83J8t2l5TlStCsuhWjdzbb29MFFSU5-l4gZ4Fhu9vznqQDuX2q34Fyir634qgDysl9vznqQDuX2q34Fyir634qgDy_x7Sr9lFgZsH99aOD35nSqw3RzBmm51EUIeKhG4hNeHuF1nwzttuBGQqqqfao8sTB5_purgT-hAd2prYJDBcavzH8igqk5KDCTsZVLVFIV32a9Odfvzg2MlnGRud64-S0t7KpTK6q6EdEnla7cqGD26N5uHg9rFtg83J8t2l5TlStCsuhWjdzbb29MFFSU5=

    I normally put the string session along with the API ID and Hash in the .env file. All these three values would need to be protected and should never be shared with a third party.

    For the next code, I will assume that you have used a variable TELEGRAM_STRING_SESSION. So the final .env file will look like below –

    TELEGRAM_API_ID=NNNNN
    TELEGRAM_API_HASH=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    TELEGRAM_STRING_SESSION=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

    Sending a Message to A Contact

    Now we have the ground work done, so we will write a simple python application to send a message to a contact. The important point to note here is that the recipient must be in your telegram contacts.

    #! /usr/bin/env python3
    
    import os
    
    from telethon.sync import TelegramClient
    from telethon.sessions import StringSession
    from dotenv import load_dotenv
    
    load_dotenv()
    
    try:
        client = TelegramClient(StringSession(os.getenv("STRING_TOKEN")), os.getenv("API_ID"), os.getenv("API_HASH"))
        client.start()
    except Exception as e:
        print(f"Exception while starting the client - {e}")
    else:
        print("Client started")
    
    async def main():
        try:
            # Replace the xxxxx in the following line with the full international mobile number of the contact
            # In place of mobile number you can use the telegram user id of the contact if you know
            ret_value = await client.send_message("xxxxxxxxxxx", 'Hi')
        except Exception as e:
            print(f"Exception while sending the message - {e}")
        else:
            print(f"Message sent. Return Value {ret_value}")
    
    with client:
        client.loop.run_until_complete(main())

    Next Steps

    The telethon API is quite versatile, a detailed API documentation can be find at https://tl.telethon.dev/. Hope this post will help the reader quickly start off with the telegram messaging with telethon module.