{"slug":"leaps-vs-margin-loan-financing-cost","qid":"implied_financing_rate","label":"implied_financing_rate","post_title":"leaps-vs-margin-loan-financing-cost","post_url":"/blog/leaps-vs-margin-loan-financing-cost#q-implied_financing_rate","columns":["strike","parity_rate_pct","dividend_adjusted_pct","treasury_1y_pct","dividend_adjustment_bps"],"rows":[{"strike":"$250","parity_rate_pct":4.38,"dividend_adjusted_pct":4.74,"treasury_1y_pct":4.49,"dividend_adjustment_bps":36},{"strike":"$300","parity_rate_pct":4.62,"dividend_adjusted_pct":4.93,"treasury_1y_pct":4.49,"dividend_adjustment_bps":30},{"strike":"$310","parity_rate_pct":4.83,"dividend_adjusted_pct":5.12,"treasury_1y_pct":4.49,"dividend_adjustment_bps":29},{"strike":"$320","parity_rate_pct":4.34,"dividend_adjusted_pct":4.63,"treasury_1y_pct":4.49,"dividend_adjustment_bps":28}],"shape":"table","sql":"WITH\n    (\n        SELECT round(toFloat64(yield_1_year), 2)\n        FROM global_markets.treasury_yields\n        WHERE date <= (\n                SELECT max(date)\n                FROM global_markets.options_greeks\n                WHERE underlying_symbol = 'AAPL'\n        )\n        ORDER BY date DESC\n        LIMIT 1\n    ) AS treasury_1y,\n    (\n        SELECT round(sum(paid), 4)\n        FROM\n        (\n            SELECT max(toFloat64(cash_amount)) AS paid\n            FROM global_markets.stocks_dividends\n            WHERE ticker = 'AAPL'\n              AND ex_dividend_date <= (\n                    SELECT max(date)\n                    FROM global_markets.options_greeks\n                    WHERE underlying_symbol = 'AAPL'\n              )\n              AND ex_dividend_date > subtractDays(\n                  (\n                    SELECT max(date)\n                    FROM global_markets.options_greeks\n                    WHERE underlying_symbol = 'AAPL'\n                  ), 365)\n            GROUP BY ex_dividend_date\n        )\n    ) AS trailing_dividends\nSELECT\n    strike,\n    round(100 * log(strike_k / financed) / term_years, 2)                          AS parity_rate_pct,\n    round(100 * log(strike_k / (financed - trailing_dividends)) / term_years, 2)   AS dividend_adjusted_pct,\n    treasury_1y                                                                    AS treasury_1y_pct,\n    round(10000 * (log(strike_k / (financed - trailing_dividends))\n                 - log(strike_k / financed)) / term_years, 0)                      AS dividend_adjustment_bps\nFROM\n(\n    SELECT\n        concat('$', toString(toUInt32(strike_price)))                 AS strike,\n        toUInt32(strike_price)                                        AS strike_sort,\n        toFloat64(strike_price)                                       AS strike_k,\n        avg(toFloat64(underlying_close))\n          - avgIf(toFloat64(option_close), leg = 'call')\n          + avgIf(toFloat64(option_close), leg = 'put')               AS financed,\n        max(days_to_expiry) / 365.0                                   AS term_years\n    FROM\n    (\n        SELECT\n            strike_price,\n            underlying_close,\n            option_close,\n            days_to_expiry,\n            if(lower(toString(option_type)) LIKE 'c%', 'call', 'put') AS leg\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'AAPL'\n          AND date = (\n                SELECT max(date)\n                FROM global_markets.options_greeks\n                WHERE underlying_symbol = 'AAPL'\n          )\n          AND expiration_date = (\n                SELECT expiration_date\n                FROM global_markets.options_greeks\n                WHERE underlying_symbol = 'AAPL'\n                  AND date = (\n                        SELECT max(date)\n                        FROM global_markets.options_greeks\n                        WHERE underlying_symbol = 'AAPL'\n                  )\n                  AND days_to_expiry >= 200\n                  AND toDayOfWeek(expiration_date) = 5\n                GROUP BY expiration_date\n                ORDER BY abs(toInt32(max(days_to_expiry)) - 450) ASC\n                LIMIT 1\n          )\n          AND toFloat64(option_close) > 0\n          AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 0.50 AND 0.95\n          AND modulo(toUInt32(strike_price), 10) = 0\n    )\n    GROUP BY strike_price\n    HAVING countIf(leg = 'call') > 0\n       AND countIf(leg = 'put') > 0\n    ORDER BY strike_price\n    LIMIT 12\n)\nORDER BY strike_sort","computed_at":"2026-09-25T15:04:25.557686+00:00","elapsed":0.008198821}