total_yield suppose to be a sum of dividend_yield and buyback yield.
The total yield that shareholders can expect, by summing Dividend Yield and Buyback Yield.
I did a query where I fetched dividend_yield, buyback_yield and total_yield. In addition I fetched dividend_yield + buyback yield as shareholder_yield that should be equal to total_yield:
fundamental_df = get_fundamentals(
query(
(fundamentals.valuation_ratios.buy_back_yield + fundamentals.valuation_ratios.dividend_yield).label('shareholders_yield'),
fundamentals.valuation_ratios.total_yield,
fundamentals.valuation_ratios.dividend_yield,
fundamentals.valuation_ratios.buy_back_yield
)
.filter(fundamentals.valuation.market_cap > context.minimum_market_cap)
.filter((fundamentals.valuation_ratios.dividend_yield + fundamentals.valuation_ratios.buy_back_yield) > 0.1)
.order_by((fundamentals.valuation_ratios.dividend_yield + fundamentals.valuation_ratios.buy_back_yield).desc())
.limit(context.num_stocks)
)
print fundamental_df.head(5)
The results show that total_yield is never the sum of dividend_yield and buyback_yield. It is quite randomly equal to either dividend_yield or buyback_yield:
2011-01-04PRINTsecurity Equity(20462 [BLT]) Equity(7761 [UIS]) \
shareholders_yield 1.5410 0.6785
total_yield 0.0052 0.0118
dividend_yield 0.0052 0.6667
buy_back_yield 1.5358 0.0118
security Equity(12821 [PMI]) Equity(21417 [NDZ]) \
shareholders_yield 0.5940 0.5889
total_yield 0.0012 0.5872
dividend_yield 0.0012 0.0017
buy_back_yield 0.5928 0.5872
security Equity(15814 [HMY]) Equity(7496 [TCH]) \
shareholders_yield 0.4276 0.415
total_yield 0.0062 0.000
dividend_yield 0.0062 0.415
buy_back_yield 0.4214 0.000
try it out by yourself: