📖 The Global Indian Investor

Learn how to build a globally diversified portfolio from India. 8 of 12 chapters are live, covering LRS, FX, global indexes, Irish ETFs, and selecting a broker.


1 Portfolio — Snapshot

This report uses prices as on end of October 30.

Portfolio StrategyGlobal Multi-Asset Passive Investing using
Indian Mutual Funds & Irish ETFs
Equity AllocationTarget (2026-27)
85.00%
(unchanged)
Current
83.80% ▲
83.59%
India
44.21% ▲
41.70%
US
39.59% ▼
41.89%
1 PortfolioXIRR
14.43% ▼
16.92%
Drift
1.97% ▼
3.30%
New Investment
1.39% ▼
1.81%
Rebalancing MethodPerpetual Rebalancing

What Changed This Month

Nasdaq 100 and Nifty 50 swapped sides. Nasdaq 100 went from +1.89% overweight to -0.41% underweight, while Nifty 50 went from the largest underweight at -1.24% to +0.77% overweight.

Total Drift narrowed from 3.30% to 1.97%. Last month’s investment was planned to bring it down to 2.27%, and market moves did the rest. The framework then did the opposite of last month: Nifty 50 went from receiving 54.96% of new capital to receiving none, and Nasdaq 100 went from none to 42.78%.

1 Portfolio — Performance & Drift

Following is the state of the 1 Portfolio, before this month’s investment. Data is compared to the previous State of the 1 Portfolio (October 2026) report, which was likewise published pre-investment — so this is a like-for-like comparison.

Asset ClassAgeXIRRGrowth ShareCurrent Allocation
(Oct 30 EOD)
Target Allocation
(for TY 2026-27)
Drift
Nasdaq 1004y 4m27.95% ▼
34.38%
63.61% ▼
65.81%
39.59% ▼
41.89%
40.00%-0.41% ▼
+1.89%
Nifty 504y 4m1.82% ▲
0.50%
3.44% ▲
0.74%
20.77% ▲
18.76%
20.00%+0.77% ▲
-1.24%
Next 501y 4m5.73% ▼
11.79%
1.76% ▼
2.58%
9.54% ▲
9.22%
10.00%-0.46% ▲
-0.78%
Midcap 1501y 4m1.37% ▼
8.10%
0.43% ▼
1.81%
9.46% ▲
9.12%
10.00%-0.54% ▲
-0.88%
Smallcap 2501y 4m14.22% ▼
27.99%
2.00% ▼
2.78%
4.45% ▼
4.61%
5.00%-0.55% ▼
-0.39%
Debt4y 4m6.61% ▼
7.16%
4.40% ▲
3.82%
5.85% ▲
5.75%
5.00%+0.85% ▲
+0.75%
Gold4y 4m29.10% ▼
33.00%
24.36% ▲
22.46%
10.35% ▼
10.66%
10.00%+0.35% ▼
+0.66%
Total14.43% ▼
16.92%
100.00%100.00%100.00%+1.97% ▼
+3.30%

Definitions

  • Asset Class: Underlying asset class within the 1 Portfolio.
  • XIRR: Annualized return generated by investments in the asset class. Note: Asset-level XIRRs are based on the actual cash flows into each sleeve and therefore should be interpreted alongside the investment age shown in the table.
  • Growth Share: Percentage of total portfolio gains contributed by the asset class (Asset Class Gain ÷ Total Portfolio Gain). Note: This can be negative if an asset class has generated a loss.
  • Current Allocation: Current percentage of portfolio market value allocated to the asset class.
  • Target Allocation: Desired long-term allocation for the asset class.
  • Drift: Difference between current allocation and target allocation (positive = overweight, negative = underweight). Arrow colour: green = moved towards 0, red = moved away from 0, yellow = crossed from one side of 0 to the other.
  • Total Drift: Calculated as the sum of positive deviations from target allocations. A higher drift indicates the portfolio is further away from its target allocation. Conceptually, it represents the minimum percentage of portfolio value that would need to be shifted between asset classes to reach the target allocation precisely (ignoring taxes, transaction costs, and other practical constraints).
  • Capital-Efficiency Multiple: Growth Share ÷ Current Allocation. A ratio above 1 means the asset is contributing more to portfolio growth than its size alone would suggest.
{
  "title": [
    {
      "text": "1 Portfolio Performance",
      "left": "center",
      "top": 0,
      "textStyle": {
        "color": "#888",
        "fontSize": 16,
        "fontWeight": 600
      }
    },
    {
      "text": "Market Value",
      "left": "center",
      "top": "37%",
      "textStyle": {
        "fontSize": 15,
        "fontWeight": 600,
        "color": "#888"
      }
    },
    {
      "text": "Growth Share",
      "left": "center",
      "top": "57%",
      "textStyle": {
        "fontSize": 15,
        "fontWeight": 600,
        "color": "#888"
      }
    }
  ],
  "tooltip": {
    "trigger": "item"
  },
  "color": [
    "#2563EB",
    "#F97316",
    "#F59E0B",
    "#10B981",
    "#047857",
    "#64748B",
    "#D4AF37"
  ],
  "legend": {
    "bottom": 0,
    "left": "center",
    "orient": "horizontal",
    "data": [
      "Nasdaq 100",
      "Nifty 50",
      "Next 50",
      "Midcap 150",
      "Smallcap 250",
      "Debt",
      "Gold"
    ],
    "textStyle": {
      "color": "#888"
    }
  },
  "series": [
    {
      "name": "Growth Contribution",
      "type": "pie",
      "radius": [
        "36%",
        "58%"
      ],
      "center": [
        "50%",
        "52%"
      ],
      "startAngle": 180,
      "clockwise": false,
      "label": {
        "show": true,
        "position": "outside",
        "formatter": "{b} ({c}%)",
        "color": "#888"
      },
      "data": [
        {
          "name": "Nasdaq 100",
          "value": 63.61
        },
        {
          "name": "Nifty 50",
          "value": 3.44
        },
        {
          "name": "Next 50",
          "value": 1.76
        },
        {
          "name": "Midcap 150",
          "value": 0.43
        },
        {
          "name": "Smallcap 250",
          "value": 2.0
        },
        {
          "name": "Debt",
          "value": 4.4
        },
        {
          "name": "Gold",
          "value": 24.36
        },
        {
          "name": "__placeholder__",
          "value": 100.0,
          "itemStyle": {
            "color": "transparent"
          },
          "label": {
            "show": false
          },
          "tooltip": {
            "show": false
          },
          "labelLine": {
            "show": false
          }
        }
      ]
    },
    {
      "name": "Market Value Allocation",
      "type": "pie",
      "radius": [
        "36%",
        "58%"
      ],
      "center": [
        "50%",
        "48%"
      ],
      "startAngle": 180,
      "clockwise": true,
      "label": {
        "show": true,
        "position": "outside",
        "formatter": "{b} ({c}%)",
        "color": "#888"
      },
      "data": [
        {
          "name": "Nasdaq 100",
          "value": 39.59
        },
        {
          "name": "Nifty 50",
          "value": 20.77
        },
        {
          "name": "Next 50",
          "value": 9.54
        },
        {
          "name": "Midcap 150",
          "value": 9.46
        },
        {
          "name": "Smallcap 250",
          "value": 4.45
        },
        {
          "name": "Debt",
          "value": 5.85
        },
        {
          "name": "Gold",
          "value": 10.35
        },
        {
          "name": "__placeholder__",
          "value": 100.01,
          "itemStyle": {
            "color": "transparent"
          },
          "label": {
            "show": false
          },
          "tooltip": {
            "show": false
          },
          "labelLine": {
            "show": false
          }
        }
      ]
    }
  ],
  "toolbox": {
    "show": true,
    "feature": {
      "saveAsImage": {
        "title": "Download Chart",
        "show": true
      }
    },
    "iconStyle": {
      "borderColor": "#888"
    }
  }
}
{
  "title": {
    "text": "1 Portfolio Drift",
    "left": "center",
    "top": 0,
    "textStyle": {
      "color": "#888",
      "fontSize": 16,
      "fontWeight": 600
    }
  },
  "tooltip": {
    "trigger": "axis",
    "axisPointer": {
      "type": "shadow"
    }
  },
  "grid": {
    "left": "15%",
    "right": "15%",
    "bottom": "10%",
    "top": "16%",
    "containLabel": true
  },
  "xAxis": {
    "type": "value",
    "name": "Drift %",
    "nameLocation": "middle",
    "nameGap": 30,
    "nameTextStyle": {
      "color": "#888"
    },
    "axisLabel": {
      "color": "#888"
    },
    "splitLine": {
      "lineStyle": {
        "color": "#666"
      }
    }
  },
  "yAxis": {
    "type": "category",
    "data": [
      "Gold",
      "Debt",
      "Smallcap 250",
      "Midcap 150",
      "Next 50",
      "Nifty 50",
      "Nasdaq 100"
    ],
    "axisLabel": {
      "color": "#888"
    }
  },
  "series": [
    {
      "name": "Drift",
      "type": "bar",
      "label": {
        "show": true,
        "formatter": "{c}%",
        "color": "#888"
      },
      "data": [
        {
          "value": 0.35,
          "itemStyle": {
            "color": "#D4AF37"
          },
          "label": {
            "position": "left"
          }
        },
        {
          "value": 0.85,
          "itemStyle": {
            "color": "#64748B"
          },
          "label": {
            "position": "left"
          }
        },
        {
          "value": -0.55,
          "itemStyle": {
            "color": "#047857"
          },
          "label": {
            "position": "right"
          }
        },
        {
          "value": -0.54,
          "itemStyle": {
            "color": "#10B981"
          },
          "label": {
            "position": "right"
          }
        },
        {
          "value": -0.46,
          "itemStyle": {
            "color": "#F59E0B"
          },
          "label": {
            "position": "right"
          }
        },
        {
          "value": 0.77,
          "itemStyle": {
            "color": "#F97316"
          },
          "label": {
            "position": "left"
          }
        },
        {
          "value": -0.41,
          "itemStyle": {
            "color": "#2563EB"
          },
          "label": {
            "position": "right"
          }
        }
      ]
    }
  ],
  "toolbox": {
    "show": true,
    "feature": {
      "saveAsImage": {
        "title": "Download Chart",
        "show": true
      }
    },
    "iconStyle": {
      "borderColor": "#888"
    }
  }
}

Performance & Drift Observations

  • Overall Portfolio: XIRR eased to 14.43% (from 16.92%). Nifty 50 was the only asset class whose XIRR rose, from 0.50% to 1.82%.
  • Nasdaq 100 fell back. Its XIRR fell from 34.38% to 27.95%, and its allocation fell from 41.89% to 39.59%, even though the sleeve is still the largest source of gains.
  • XIRR also fell sharply in the smaller Indian sleeves. Next 50 moved from 11.79% to 5.73%, Midcap 150 from 8.10% to 1.37%, and Smallcap 250 from 27.99% to 14.22%. These sleeves are only 1y 4m old, so their XIRRs swing more than the older ones.
  • Nasdaq 100 and Gold together account for 49.94% of the portfolio’s current allocation, but have contributed 87.97% of its cumulative gains. The Capital-Efficiency Multiple (Growth Share ÷ Allocation) shows Gold at 2.35x and Nasdaq at 1.61x, while Nifty sits at 0.17x.
  • Total Drift Decreases: With the large Nasdaq overweight gone, Total Drift narrowed from 3.30% to 1.97%.

Last month’s investment was planned to leave Nasdaq 100 at +1.15% overweight. A month later it sits at -0.41%, without selling anything. This is why I follow perpetual rebalancing rather than react to a single month’s move.

Drift Correction aka Monthly Investment

The table below consolidates the pre-investment state (Oct 30 EOD prices), the monthly investment allocation, and the planned post-investment state:

Asset ClassCurrentPre DriftNew InvestPost InvestPost DriftTarget
Nasdaq 10039.59%-0.41%42.78%39.63%-0.37%40.00%
Nifty 5020.77%+0.77%0.00%20.49%+0.49%20.00%
Next 509.54%-0.46%16.53%9.63%-0.37%10.00%
Midcap 1509.46%-0.54%22.41%9.63%-0.37%10.00%
Smallcap 2504.45%-0.55%18.27%4.63%-0.37%5.00%
Debt5.85%+0.85%0.00%5.77%+0.77%5.00%
Gold10.35%+0.35%0.00%10.21%+0.21%10.00%
Total100.00%1.97%100.00%100.00%1.47%100.00%

A new allocation of 1.39% of the pre-investment portfolio was planned to result in a drift correction of 0.50% (from 1.97% to 1.47%).

Definitions

  • Asset Class: Underlying asset class part of the 1 Portfolio
  • Current: Portfolio allocation before new investment (as of Oct 30 EOD)
  • Pre Drift: Deviation from target at plan time (sum of positive values = total drift)
  • New Invest: Percentage of this month’s investment directed to each asset class
  • Post Invest: Estimated allocation after the investment
  • Post Drift: Estimated drift after investment
  • Target: Target allocation for the asset class
  • Total Drift: Drift is calculated as the sum of positive deviations from target allocations

This chart shows how this month’s new investment moves each asset’s drift closer to its target line. No asset class moves further away this month.

{
  "height": "700px",
  "title": {
    "text": "Drift Correction aka Monthly Investment",
    "left": "center",
    "textStyle": {
      "color": "#888"
    }
  },
  "tooltip": {
    "trigger": "axis",
    "axisPointer": {
      "type": "shadow"
    }
  },
  "legend": {
    "data": [
      "Pre Drift",
      "Post Drift",
      "Improvement",
      "Improvement (Evaporated)",
      "Worsening",
      "New Water Level"
    ],
    "bottom": 0,
    "textStyle": {
      "color": "#888"
    }
  },
  "toolbox": {
    "show": true,
    "feature": {
      "saveAsImage": {
        "title": "Download Chart",
        "show": true
      }
    },
    "iconStyle": {
      "borderColor": "#888"
    }
  },
  "grid": {
    "left": "3%",
    "right": "4%",
    "bottom": "15%",
    "containLabel": true
  },
  "xAxis": {
    "type": "category",
    "data": [
      "Nasdaq 100",
      "Nifty 50",
      "Next 50",
      "Midcap 150",
      "Smallcap 250",
      "Debt",
      "Gold"
    ],
    "axisLabel": {
      "interval": 0,
      "rotate": 30,
      "color": "#888"
    }
  },
  "yAxis": {
    "type": "value",
    "name": "Drift (%)",
    "min": -1.0,
    "max": 1.0,
    "axisLabel": {
      "formatter": "{value}%",
      "color": "#888"
    },
    "nameTextStyle": {
      "color": "#888"
    },
    "splitLine": {
      "lineStyle": {
        "color": "#666"
      }
    }
  },
  "series": [
    {
      "name": "Pre Drift",
      "type": "bar",
      "data": [],
      "itemStyle": {
        "color": "#3b82f6"
      }
    },
    {
      "name": "Post Drift",
      "type": "bar",
      "data": [],
      "itemStyle": {
        "color": "#1e40af"
      }
    },
    {
      "name": "Improvement",
      "type": "bar",
      "data": [],
      "itemStyle": {
        "color": "#22c55e"
      }
    },
    {
      "name": "Improvement (Evaporated)",
      "type": "bar",
      "data": [],
      "itemStyle": {
        "color": "#22c55e",
        "opacity": 0.4,
        "decal": {
          "symbol": "rect",
          "color": "rgba(0,0,0,0.2)",
          "dashArrayX": [
            1,
            0
          ],
          "dashArrayY": [
            2,
            4
          ],
          "rotation": 0.785
        }
      }
    },
    {
      "name": "Worsening",
      "type": "bar",
      "data": [],
      "itemStyle": {
        "color": "#ef4444",
        "opacity": 0.4,
        "decal": {
          "symbol": "rect",
          "color": "rgba(0,0,0,0.2)",
          "dashArrayX": [
            1,
            0
          ],
          "dashArrayY": [
            2,
            4
          ],
          "rotation": 0.785
        }
      }
    },
    {
      "name": "New Water Level",
      "type": "line",
      "data": [],
      "itemStyle": {
        "color": "#1e40af"
      },
      "lineStyle": {
        "type": "dashed",
        "color": "#1e40af",
        "width": 2
      },
      "markLine": {
        "symbol": "none",
        "silent": true,
        "label": {
          "show": false
        },
        "lineStyle": {
          "type": "dashed",
          "color": "#1e40af",
          "width": 2
        },
        "data": [
          {
            "yAxis": -0.37
          }
        ]
      }
    },
    {
      "name": "Empty",
      "type": "bar",
      "barWidth": "70%",
      "stack": "main",
      "data": [
        -0.37,
        0,
        -0.37,
        -0.37,
        -0.37,
        0,
        0
      ],
      "itemStyle": {
        "color": "transparent"
      },
      "tooltip": {
        "show": false
      }
    },
    {
      "name": "Neg Delta",
      "type": "bar",
      "barWidth": "70%",
      "stack": "main",
      "data": [
        {
          "value": -0.04,
          "itemStyle": {
            "color": "#22c55e"
          }
        },
        0,
        {
          "value": -0.09,
          "itemStyle": {
            "color": "#22c55e"
          }
        },
        {
          "value": -0.17,
          "itemStyle": {
            "color": "#22c55e"
          }
        },
        {
          "value": -0.18,
          "itemStyle": {
            "color": "#22c55e"
          }
        },
        0,
        0
      ],
      "tooltip": {
        "show": false
      }
    },
    {
      "name": "Neg Base",
      "type": "bar",
      "barWidth": "70%",
      "stack": "main",
      "data": [
        {
          "value": -0.59,
          "itemStyle": {
            "color": "#3b82f6"
          }
        },
        {
          "value": -1.0,
          "itemStyle": {
            "color": "#1e40af"
          }
        },
        {
          "value": -0.54,
          "itemStyle": {
            "color": "#3b82f6"
          }
        },
        {
          "value": -0.46,
          "itemStyle": {
            "color": "#3b82f6"
          }
        },
        {
          "value": -0.45,
          "itemStyle": {
            "color": "#3b82f6"
          }
        },
        {
          "value": -1.0,
          "itemStyle": {
            "color": "#1e40af"
          }
        },
        {
          "value": -1.0,
          "itemStyle": {
            "color": "#1e40af"
          }
        }
      ],
      "tooltip": {
        "show": false
      }
    },
    {
      "name": "Pos Base",
      "type": "bar",
      "barWidth": "70%",
      "stack": "main",
      "data": [
        0,
        {
          "value": 0.49,
          "itemStyle": {
            "color": "#1e40af"
          }
        },
        0,
        0,
        0,
        {
          "value": 0.77,
          "itemStyle": {
            "color": "#1e40af"
          }
        },
        {
          "value": 0.21,
          "itemStyle": {
            "color": "#1e40af"
          }
        }
      ],
      "tooltip": {
        "show": false
      }
    },
    {
      "name": "Pos Delta",
      "type": "bar",
      "barWidth": "70%",
      "stack": "main",
      "data": [
        0,
        {
          "value": 0.28,
          "itemStyle": {
            "color": "#22c55e",
            "opacity": 0.4,
            "decal": {
              "symbol": "rect",
              "color": "rgba(0,0,0,0.2)",
              "dashArrayX": [
                1,
                0
              ],
              "dashArrayY": [
                2,
                4
              ],
              "rotation": 0.785
            }
          }
        },
        0,
        0,
        0,
        {
          "value": 0.08,
          "itemStyle": {
            "color": "#22c55e",
            "opacity": 0.4,
            "decal": {
              "symbol": "rect",
              "color": "rgba(0,0,0,0.2)",
              "dashArrayX": [
                1,
                0
              ],
              "dashArrayY": [
                2,
                4
              ],
              "rotation": 0.785
            }
          }
        },
        {
          "value": 0.14,
          "itemStyle": {
            "color": "#22c55e",
            "opacity": 0.4,
            "decal": {
              "symbol": "rect",
              "color": "rgba(0,0,0,0.2)",
              "dashArrayX": [
                1,
                0
              ],
              "dashArrayY": [
                2,
                4
              ],
              "rotation": 0.785
            }
          }
        }
      ],
      "tooltip": {
        "show": false
      }
    },
    {
      "name": "Pre Drift",
      "type": "line",
      "data": [
        -0.41,
        0.77,
        -0.46,
        -0.54,
        -0.55,
        0.85,
        0.35
      ],
      "itemStyle": {
        "color": "#3b82f6"
      },
      "lineStyle": {
        "opacity": 0
      },
      "symbol": "none"
    },
    {
      "name": "Post Drift",
      "type": "line",
      "data": [
        -0.37,
        0.49,
        -0.37,
        -0.37,
        -0.37,
        0.77,
        0.21
      ],
      "itemStyle": {
        "color": "#1e40af"
      },
      "lineStyle": {
        "opacity": 0
      },
      "symbol": "none"
    },
    {
      "name": "Improvement",
      "type": "line",
      "data": [
        0.04,
        "-",
        0.09,
        0.17,
        0.18,
        "-",
        "-"
      ],
      "itemStyle": {
        "color": "#22c55e"
      },
      "lineStyle": {
        "opacity": 0
      },
      "symbol": "none"
    },
    {
      "name": "Worsening",
      "type": "line",
      "data": [
        "-",
        "-",
        "-",
        "-",
        "-",
        "-",
        "-"
      ],
      "itemStyle": {
        "color": "#ef4444"
      },
      "lineStyle": {
        "opacity": 0
      },
      "symbol": "none"
    }
  ]
}
  • Moving towards 0 is improvement and moving away from 0 is worsening.
  • Passive Dilution, for Nifty 50, Debt and Gold, isn’t new capital correcting the overweight — it’s the natural dilution of their share as the rest of the portfolio grows, since they received zero new investment this cycle.

Allocation Key Observations

The four underweight sleeves (Nasdaq 100, Next 50, Midcap 150 and Smallcap 250) all level out at -0.37%. Nifty 50, the fifth equity sleeve, is overweight and received nothing. For comparison, September brought four sleeves to a common level and October brought three.

The new investment was calculated using a Forward Water-Filling approach. Capital is distributed across underweight assets until the remaining underweights converge on a common “water level.”

Nasdaq 100

Nasdaq 100 received the largest share at 42.78%, but its drift only improved from -0.41% to -0.37%. With a 40% target, it needs a large share of new capital just to keep its weight as the portfolio grows.

Next 50 & Midcap 150

Next 50 (16.53%) and Midcap 150 (22.41%) continued to receive capital, moving from -0.46% and -0.54% to the water level.

Smallcap 250

Smallcap 250 received 18.27%, its first new capital since May 2026. It had been closer to target than the water level, and even-drift optimization kept new capital away until the others caught up. At -0.55% it is now the most underweight sleeve.

Nifty 50, Debt & Gold

No allocations were directed here as they are overweight. Their drift eases through passive dilution: Nifty 50 from +0.77% to +0.49%, Debt from +0.85% to +0.77%, and Gold from +0.35% to +0.21%.

Drift Correction History

Last month Nasdaq 100 received nothing and Nifty 50 received over half. This month that reversed. These percentages are not tactical allocation decisions or market forecasts. They are the mechanical output of the rebalancing algorithm after accounting for the portfolio’s current drift and the month’s available capital.

This table traces how the framework has mechanically shifted the flow of new capital month over month to correct portfolio drift.

Asset ClassTargetStart AllocApr 26May 26Jun 26Jul 26Aug 26Sep 26Oct 26Nov 26End Alloc
Nasdaq 10040.00%36.08%65.00%53.79%12.44%59.01%85.02%46.25%0.00%42.78%39.63%
Nifty 5020.00%19.73%10.71%25.76%77.44%8.31%4.87%40.53%54.96%0.00%20.49%
Next 5010.00%9.42%10.71%9.09%6.59%16.34%0.00%9.30%19.84%16.53%9.63%
Midcap 15010.00%9.57%9.29%9.09%3.54%16.34%10.11%3.92%25.20%22.41%9.63%
Smallcap 2505.00%4.80%4.29%2.27%0.00%0.00%0.00%0.00%0.00%18.27%4.63%
Debt5.00%7.05%0.00%0.00%0.00%0.00%0.00%0.00%0.00%0.00%5.77%
Gold10.00%13.36%0.00%0.00%0.00%0.00%0.00%0.00%0.00%0.00%10.21%
Total100.00%100.00%100.00%100.00%100.00%100.00%100.00%100.00%100.00%100.00%100.00%
Total Post Drift5.41%4.89%3.67%2.76%1.60%1.68%1.90%2.27%1.47%
{
  "title": {
    "text": "Historical Capital Allocation & Total Post Drift",
    "left": "center",
    "textStyle": {
      "color": "#888"
    }
  },
  "tooltip": {
    "trigger": "axis",
    "axisPointer": {
      "type": "shadow"
    }
  },
  "legend": {
    "bottom": 0,
    "textStyle": {
      "color": "#888"
    },
    "data": [
      "Nasdaq 100",
      "Nifty 50",
      "Next 50",
      "Midcap 150",
      "Smallcap 250",
      "Debt",
      "Gold",
      "Total Post Drift"
    ]
  },
  "grid": {
    "left": "3%",
    "right": "4%",
    "bottom": "15%",
    "containLabel": true
  },
  "xAxis": {
    "type": "category",
    "axisLabel": {
      "color": "#888"
    },
    "data": [
      "Apr 26",
      "May 26",
      "Jun 26",
      "Jul 26",
      "Aug 26",
      "Sep 26",
      "Oct 26",
      "Nov 26"
    ]
  },
  "yAxis": [
    {
      "type": "value",
      "name": "Allocation %",
      "max": 100,
      "nameTextStyle": {
        "color": "#888"
      },
      "axisLabel": {
        "formatter": "{value}%",
        "color": "#888"
      },
      "splitLine": {
        "lineStyle": {
          "color": "#666"
        }
      }
    },
    {
      "type": "value",
      "name": "Total Drift %",
      "nameTextStyle": {
        "color": "#888"
      },
      "axisLabel": {
        "formatter": "{value}%",
        "color": "#888"
      },
      "splitLine": {
        "show": false
      }
    }
  ],
  "color": [
    "#2563EB",
    "#F97316",
    "#F59E0B",
    "#10B981",
    "#047857",
    "#64748B",
    "#D4AF37",
    "#E11D48"
  ],
  "series": [
    {
      "name": "Nasdaq 100",
      "type": "bar",
      "stack": "total",
      "data": [
        65.0,
        53.79,
        12.44,
        59.01,
        85.02,
        46.25,
        0.0,
        42.78
      ]
    },
    {
      "name": "Nifty 50",
      "type": "bar",
      "stack": "total",
      "data": [
        10.71,
        25.76,
        77.44,
        8.31,
        4.87,
        40.53,
        54.96,
        0.0
      ]
    },
    {
      "name": "Next 50",
      "type": "bar",
      "stack": "total",
      "data": [
        10.71,
        9.09,
        6.59,
        16.34,
        0.0,
        9.3,
        19.84,
        16.53
      ]
    },
    {
      "name": "Midcap 150",
      "type": "bar",
      "stack": "total",
      "data": [
        9.29,
        9.09,
        3.54,
        16.34,
        10.11,
        3.92,
        25.2,
        22.41
      ]
    },
    {
      "name": "Smallcap 250",
      "type": "bar",
      "stack": "total",
      "data": [
        4.29,
        2.27,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        18.27
      ]
    },
    {
      "name": "Debt",
      "type": "bar",
      "stack": "total",
      "data": [
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ]
    },
    {
      "name": "Gold",
      "type": "bar",
      "stack": "total",
      "data": [
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ]
    },
    {
      "name": "Total Post Drift",
      "type": "line",
      "yAxisIndex": 1,
      "lineStyle": {
        "width": 3
      },
      "data": [
        4.89,
        3.67,
        2.76,
        1.6,
        1.68,
        1.9,
        2.27,
        1.47
      ]
    }
  ],
  "toolbox": {
    "show": true,
    "feature": {
      "saveAsImage": {
        "title": "Download Chart",
        "show": true,
        "iconStyle": {
          "borderColor": "#888"
        }
      }
    },
    "iconStyle": {
      "borderColor": "#888"
    }
  }
}

The 1.47% Total Post Drift is the lowest in this series.

Investment Stack

ToolRegionTypePurpose
MF CentralIndiaExecutionExecution of Buy/Sell for Indian Mutual Funds directly with KRA agencies.
CAMS OnlineIndiaReportingGenerating the combined reporting (CAS) which is imported into RealValue Portfolio.
Interactive Brokers (IBKR)InternationalExecution & ReportingExecution and data source for Irish ETF tracking.
BHIM + ICICI BankInternationalExecutionSending money from Indian bank account to US broker account (INR to USD) using FX Retail and Bharat Connect Forex.
RealValue FX EngineInternationalPlanning & TrackingComputing the USD that we can send based on the allocated INR, and the true transaction cost.
RealValue PortfolioAllTrackingTracking goals and asset classes, and computing the portfolio’s XIRR.
RealValue Family SIP AllocatorAllPlanningUsed for dynamic monthly investment planning and drift correction allocation.

Reflections

First Working Day of the Month

The plan, the FX remittance and the ETF purchase all landed on November 2, the first working day of the month. This is the First Working Day of the Next Month policy I moved to last month. The day had four domestic mutual fund transactions and one ANAU purchase that took the whole day from start to finish.

Back to International

Last month’s fully domestic investment was simple. This month brought back the FX remittance, TCS and live-market ETF buying, and the costs below are the price of keeping that exposure.

1. Buying USD (BHIM + ICICI)

Time (Nov 2)SourceUpdate
09:48ICICI SMSOne-time AutoPay mandate created towards Axis Bank for ₹XXXX, RRN XXXX
09:49ICICI SMSMandate of ₹XXXX raised by Axis Bank redeemed, RRN XXXX
09:49Clearcorp SMSFX Retail Trade No. XXXX: bought USD XXXX at a final price of ₹XXXX including bank fee, trade price ₹XXXX
09:49ICICI SMSForex deal Trade No. XXXX available for utilisation
09:53ICICI SMSOTP XXXX for the Money2World request
09:54ICICI SMSOverseas fund transfer request XXXX for USD XXXX received and in process
13:57ICICI SMSAccount XXXX credited ₹XXXX, BBPS remittance XXXX
13:57ICICI SMSAccount XXXX debited ₹XXXX for USD XXXX
15:52ICICI SMSOverseas fund transfer request XXXX for USD XXXX processed
16:23ICICI SMSOverseas fund transfer request XXXX for USD XXXX credited to receiver account XXXX

2. Notify IBKR

Time (Nov 2)SourceUpdate
10:09IBKR noticeIntent to transfer USD XXXX via bank wire to account XXXX, confirmation number XXXX
16:00IBKR noticeUSD XXXX wire deposit for account XXXX received and available

3. Execute Trade on IBKR

Time (Nov 2)SourceUpdate
16:12IBKRBought ANAU with a limit order via SMART, executed on AQXECH

That is about 6 minutes to initiate the transfer, approximately 6 hours for the money to land in IBKR, and another 6 minutes to buy with a limit order. On top of that, probably 15 minutes to update the paperwork for TCS recovery via salary TDS. Compared to all this, buying a mutual fund on MF Central takes about 2 minutes, though I still need to verify the units credit the next day.

Transaction Costs

With Nasdaq 100 back in the plan, this month’s FX remittance and ETF purchase cost 1.05% for this month’s volume, excluding TCS. That is a one-time cost, so here is how it compares with holding the Nasdaq 100 through an Indian mutual fund:

ICICI Prudential NASDAQ 100 Index Fund (Direct Plan)Irish ETF (ANAU)
One-time cost-1.05%
Annual cost (TER)0.53%0.14%

The 0.39% annual TER difference covers the 1.05% in under three years, before counting the lower dividend tax. If my full monthly amount had gone to Nasdaq 100, the cost would have been about 0.72%, assuming the same brokerage.

The comparison assumes the local fund is open for fresh money. 3 Paths to Global Investing for Indians covers why local mutual funds aren’t always available and how Irish ETFs via LRS can substitute for them.

Taxation

ICICI Prudential NASDAQ 100 Index FundIrish ETF (ANAU)
US dividend withholding tax25%15%
LTCG tax (held 2+ years)Up to 14.95% (with surcharge & cess)Up to 14.95% (with surcharge & cess)
STCG tax (held under 2 years)Up to 35.88% (with surcharge & cess)Up to 35.88% (with surcharge & cess)

Both surcharge-inclusive rates assume a 15% surcharge. Capital gains tax doesn’t change the comparison, since the same rules apply to both. Either way, I need to stay invested for at least 2 years to get LTCG treatment, which suits a long-term holding anyway. Dividend tax leakage is covered in What to Buy - Irish ETFs vs US ETFs.

Waiting for Gold and Debt

I am eagerly waiting for Total Drift to go below 1%, and for the day I can resume buying Gold. Gold has received no new capital in this series, and at a planned +0.21% it is now the closest of the overweight sleeves to its target. Debt, at a planned +0.77%, seems likely to take longer unless the equity sleeves rebound across the board.

Building in Public

Software Updates

ProjectDetails
XfinaAdded parsers for public market data, including AMFI NAV history, NSE and NSE Indices, MCX, iShares, Tiingo, WSJ, MSCI and Nasdaq, for the Portfolio Engine to use. The web app also moved to xfina-ui, the theme and components shared across the xfina.dev sites.
Xfina DataPublished monthly central bank policy rates for India and the US, sourced from the BIS, to use as the risk-free rate when computing the Sharpe ratio. data.xfina.dev is now on xfina-ui, with a feedback card on every page and a dataset page that fits a phone.
Xfina LabsThe Portfolio Engine now has a design mock, to understand how a multi-asset portfolio would have behaved historically over a long time, using the available data sources. It is an innovative bring-your-own-data approach: you download the data from its source and import it, and it stays in your browser. Wherever the data can be republished, it has moved into Xfina Data. The figures are illustrative until Xfingine is connected.
SlidetakeA side track to fast-track video publishing: a markdown deck where every slide is a take. The story is in Building Slidetake.
XsteerNot resumed yet.

New Content & Resources

TitleSummary
Building Wealth DigestThe newsletter starts this month, covering this report and the other explorations I have done.
State of the 1 Portfolio (October 2026) - SlidesLast month’s report as a short slide deck, alongside decks for FX Retail via Bharat Connect, Irish vs US ETFs and Selecting the Global Indexes. I am planning to add videos for the book chapters and FX Retail as well.

Work on The Global Indian Investor book is stalled. Content writing is taking a backseat while I build the infrastructure for the personal finance systems I am working on.

Transparency Note

This portfolio reflects my personal investment strategy and risk tolerance. It is not investment advice. All returns, allocations, and XIRR figures — including for international assets like Nasdaq 100 — are tracked and computed in INR, so currency movement is baked into the numbers rather than shown separately.