Need investment options for a 2-3 year period

Hello all

I am a Sr Citizen and need some extra cash around 2-3 years hence. Not interested in FD as 6.75 +/- something not attractive. I read NCDs are secured but some videos say they are not so. Not looking for hefty returns, around 12% would be okay. Different apps show different corporate bonds so not sure how true they are.

Any link within here or can someone guide?

Thanks

In 2–3 year i would suggest focusing on strong AA+/AAA issuers rather than stretching for yield. In my view, earning a steady 8–9% safely is far wiser than chasing 12% and worrying about capital protection later.

Also, different apps show different bonds because inventories and commissions vary. Always check the credit rating, repayment history, and maturity before investing. If you want to apply for corporate bonds can check goldenpi or if you’re going for listed ones can search in kite.

1 Like

For just 8% SCSS is much better: It offers 8.2% currently. Even 10Y sovereign bond offers 7% and 30Y 7.8% recently.

Interest rate cycle seems to be turning to positive. So I would stagger any debt investments and avoid large investments with huge lock ins. Once we know the direction of interest rates for sure, we can make extra bets. You should also consider equity/gold to reduce inflation risk.

1 Like

In the search for 12% returns,
hopefully, you have internalised the remote but distinct possibility of
even the principal not being available in a timely manner
and what that means for your upcoming needs.

Another approach would be to check if one can gain exposure today to asset-classes that are strictly correlated with whatever needs in the near future (2-3 years) one is saving/investing for. Essentially the magnitude of returns from such assets wouldn’t matter as the net purchasing-power w.r.t the needs remains the same.

You are not looking for hefty returns but somewhere around 12 % sounds ridiculous. That number is hefty. But to answer your query - you can invest in RBI floating rate bonds that give 8.05 percent returns payable semi annually. The interest rate is floating that is declared every 6 months for the next 6 month cycle. The bonds have 7 year lock in with some exemption for early redemption for senior citizens in some conditions…

For 2 to 3 years optimising return is not worth it. Fixed deposit in smaller bank up to 4.5 lakhs is worth a bet.

SCSS has a lock in period, may be good for long term. I am looking for short term. Anyways, thanks for your reply

Well, when interest rate around 8 is okay, then how can 12% be ridiculous? I thought someone would recommend some midcaps or something similar. Lock in period may look good for those in service, not for me. Anyways, thanks for your reply

So basically, it is like admitting putting in FDs make little sense because by the time they mature, inflation too would have matched and overall value remains the same

Because you are a senior citizen obviously you may not prefer high risk investment is a general assumption and also because you haven’t mentioned about your risk appetite inn your post. Now at low risk you can’t get 12 percent returns and that’s why your expectation of 12 precent returns is ridiculous. You can go with Midcaps but they can go down 5 percent or much more in the short term rather than returning 12 percent so there is a huge risk involved there. The simple logic anywhere in the world is - if you want higher returns you need to take higher risk

Not necessarily.
The term and rate-of-returns of an FD is fixed
in terms of the currency it is denominated in.
Inflation is not fixed.

If the inflation of a specific currency is the risk one needs to hedge against,
then one can open a fixed deposit (or a CD - Certificate of Deposit, in some jurisdictions) in another currency.

The basic principle being
identifying the eventual expenditure that one is saving for,
and getting exposure to it (or closely related asset-classes) right away.

@Prickly
if you have the risk appetite (risk of underperforming FDs) then conservative hybrid funds could be an option.

White oak multi asset fund


https://www.valueresearchonline.com/funds/43501/whiteoak-capital-multi-asset-allocation-fund-direct-plan/#fund-portfolio

SBI Multi Asset Fund


https://www.valueresearchonline.com/funds/17657/sbi-multi-asset-allocation-fund-direct-plan#fund-portfolio

  1. Both are well diversified across asset classes with a good chance of getting 12% cagr returns across 3-5 years imo.
  2. The WO fund is slightly more diversified across asset-classes, smaller equity allocation (but mostly large caps).
  3. The SBI fund has bit lesser diversification across asset classes and higher exposure to Eq, but is better diversified across the equity range - large/mid/small getting near equal allocation (within the equity allocation).
  4. The SBI Fund has not had a single negative year in the past 12 years. WO fund is newer, and has not had a negative year since its inception (3 years)

Both these funds are part of my father’s portfolio. I’d prefer SWP instead of full-redemption.

So targetting between 0# - 12% returns
(with not necessarily a uniform distribution/likelihood)

# = or what’s their historical worst-case return in any year?

@cvs
2014 - 17.87
2015 - 10.86
2016 - 9.96
2017 - 11.96
2018 - 1.83
2019 - 11.16
2020 - 14.95
2021 - 13.96
2022 - 6.96
2023 - 25.5
2024 - 13.85
2025 - 19.58

2 Likes

Limiting the downside to only the worst year seen in the last 12 years
i.e. principal 100% guaranteed and at least >1.8% returns,
(just for quick modelling).

There is still a 1 in 3 chance that the target corpus will NOT be met in 3 years.
Desired 12% annualised returns for 3 years = 40% absolute returns = 1.4x over 3 years.

The likelihood of achieving desired target corpus only goes further down
if one accounts for the miniscule tail-risk (even the principal is at non-zero risk) with these assets.

sim_portfolio_v2.py
"""Extended analysis with downside risk and confidence-level views."""
import json
import numpy as np

HIST_B = np.array([
    17.87, 10.86, 9.96, 11.96, 1.83, 11.16,
    14.95, 13.96, 6.96, 25.50, 13.85, 19.58
]) / 100.0

R_A = 0.065
HORIZON = 3
TARGET = 1.40
N_SIM = 200_000

rng = np.random.default_rng(seed=42)
samples = rng.choice(HIST_B, size=(N_SIM, HORIZON), replace=True)
mult_A_3yr = (1 + R_A) ** HORIZON
mult_B_paths = np.prod(1 + samples, axis=1)

print(f"Asset A 3-yr multiple: {mult_A_3yr:.4f}")
print(f"Asset B 3-yr P(>=1.4x): {(mult_B_paths >= TARGET).mean()*100:.2f}%")
print(f"Asset B 3-yr P(<1.0x): {(mult_B_paths < 1.0).mean()*100:.4f}%  (only counts price risk, not 1% principal)")
print()

# Fine sweep
ws_fine = np.linspace(0, 1, 101)
fine = []
for w in ws_fine:
    final = (1 - w) * mult_A_3yr + w * mult_B_paths
    fine.append({
        "w": float(w),
        "w_pct": round(float(w) * 100, 1),
        "p_target": float((final >= TARGET).mean()),
        "p_loss": float((final < 1.0).mean()),
        "mean": float(final.mean()),
        "median": float(np.median(final)),
        "p1": float(np.percentile(final, 1)),
        "p5": float(np.percentile(final, 5)),
        "p25": float(np.percentile(final, 25)),
        "p75": float(np.percentile(final, 75)),
        "p95": float(np.percentile(final, 95)),
        "p99": float(np.percentile(final, 99)),
    })

# Determine, for each confidence threshold, the minimum w to reach it
conf_levels = [0.30, 0.40, 0.50, 0.60, 0.6493]
min_w_for_conf = {}
for c in conf_levels:
    hits = [r for r in fine if r["p_target"] >= c]
    if hits:
        min_w = min(hits, key=lambda r: r["w"])
        min_w_for_conf[c] = min_w
    else:
        min_w_for_conf[c] = None

print("Minimum w_B for confidence levels:")
for c, r in min_w_for_conf.items():
    if r:
        print(f"  >={c*100:.1f}% confidence: w_B>={r['w']*100:.1f}%  (P5={r['p5']:.4f}, mean={r['mean']:.4f})")
    else:
        print(f"  >={c*100:.1f}% confidence: NOT ACHIEVABLE")

# A coarse w table for display
coarse = []
for w_pct in [0, 25, 50, 60, 70, 75, 80, 90, 100]:
    w = w_pct / 100
    final = (1 - w) * mult_A_3yr + w * mult_B_paths
    coarse.append({
        "w_pct": w_pct,
        "p_target": float((final >= TARGET).mean()),
        "p_loss": float((final < 1.0).mean()),
        "mean": float(final.mean()),
        "median": float(np.median(final)),
        "p5": float(np.percentile(final, 5)),
        "p95": float(np.percentile(final, 95)),
        "p25": float(np.percentile(final, 25)),
        "p75": float(np.percentile(final, 75)),
        "implied_cagr_mean_pct": (float(final.mean()) ** (1/3) - 1) * 100,
        "implied_cagr_p5_pct": (float(np.percentile(final, 5)) ** (1/3) - 1) * 100,
        "implied_cagr_p95_pct": (float(np.percentile(final, 95)) ** (1/3) - 1) * 100,
    })

print()
print(f"{'w_B%':>5} {'P(>=1.4x)':>10} {'P(<1x)':>8} {'mean':>7} {'median':>7} {'P5':>7} {'P95':>7} {'CAGR mean':>10} {'CAGR P5':>9} {'CAGR P95':>9}")
for r in coarse:
    print(f"{r['w_pct']:>5} {r['p_target']*100:>9.2f}% {r['p_loss']*100:>7.3f}% "
          f"{r['mean']:>7.4f} {r['median']:>7.4f} {r['p5']:>7.4f} {r['p95']:>7.4f} "
          f"{r['implied_cagr_mean_pct']:>9.2f}% {r['implied_cagr_p5_pct']:>8.2f}% {r['implied_cagr_p95_pct']:>8.2f}%")

# Save extended JSON
out = {
    "hist_b_pct": [round(x*100, 2) for x in HIST_B.tolist()],
    "years": list(range(2014, 2026)),
    "hist_stats": {
        "n": int(len(HIST_B)),
        "mean_pct": float(HIST_B.mean()*100),
        "std_pct": float(HIST_B.std(ddof=1)*100),
        "min_pct": float(HIST_B.min()*100),
        "max_pct": float(HIST_B.max()*100),
        "median_pct": float(np.median(HIST_B)*100),
    },
    "asset_a_annual_pct": R_A * 100,
    "asset_a_3yr_mult": float(mult_A_3yr),
    "horizon_yrs": HORIZON,
    "target_mult": TARGET,
    "n_sim": N_SIM,
    "fine": fine,
    "coarse": coarse,
    "asset_b_3yr": {
        "mean": float(mult_B_paths.mean()),
        "median": float(np.median(mult_B_paths)),
        "p5": float(np.percentile(mult_B_paths, 5)),
        "p95": float(np.percentile(mult_B_paths, 95)),
        "p_target": float((mult_B_paths >= TARGET).mean()),
        "p_loss": float((mult_B_paths < 1.0).mean()),
    },
}
with open("sim_results.json", "w") as f:
    json.dump(out, f, indent=2)
print("\nWrote sim_results.json")

The 2 main “buttons” identified so far in this thread - FDs and Mutual-funds…


Note: Numbers obtained by modelling the risk of capital invested in mutual funds as zero .

In addition to the angles already discussed above,
couple other angles to consider…

  • Is it a “need” or a “want” ?
    • Discretionary expense ?
  • Flexibility in the timeline?
    • What if some time during 2-3 2-5 years from now?
2 Likes

I get the urge for higher returns, but for 2-3 years, chasing 12% could risk your principal. Safety first at your age.

1 Like

Thanks. Now for Sr citizens, some banks offer better interest, I am opting for that.
Regards