Hey all,
As many here know, calculating the effective YTM (after taxes) for bonds in Switzerland is non-trivial because of the tax rules for bonds (taxed coupon payments, non-taxed capital gains unless it is a zero coupon bond where they are fully taxed, etc…). Moreover, fees (brokerage fees, stamp duty, etc…) can heavily influence the YTM and the decision to invest in bonds (vs. Kassenobligationen, saving accounts, …).
Unfortunately, there is no good tooling available for Swiss bonds. Even the logic for calculating the YTM (pre-tax) differs by website and some take the ask, mid, bid, or closing price for the calculation.
To address this, I developed a small bond dashboard https://bonds.opencore.ch
It allows you to enter your personal details (relative buying costs such as stamp duty, fixed buying costs such as brokerage fees, your marginal tax rate) and then calculates the effective YTM based on these parameters: For instance, let’s say you pay 0.075% stamp duty when buying bonds, 29 Fr. fixed brokerage fees and want to buy 100,000 Fr. of a Pfandbrief with a duration of 0-10 years. You can enter this data and see the best option based on the current ask prices:
Maybe the tool is helpful for others (of course there is no guarantee for correctness). Some features that I might add when I have time because they would be helpful for me:
- Adding ratings and allowing to filter by them (e.g. to give the best effective YTM for all AAA rated bonds), but not sure if there is a free API for this data
- Incorporating market data to get the average price for large orders (currently, it just assumes that the whole order is fillable at the ask price, which is obviously not true for very large orders), but there is probably also no free API for it available.
All YTM calculations are based on the current ask price (cached for 5 minutes), so the site will be much more useful during trading hours as there are more orders then.