DCA vs Lump-Sum
Query
WITH
'2020-01-01' AS start_date,
'2024-12-31' AS end_date,
1000 AS monthly_contribution,
monthly AS (
SELECT toStartOfMonth(toDate(start)) AS month,
argMin(toFloat64(close), start) AS open_price
FROM api.ohlcv(candle_duration_in_minutes = 1440)
WHERE exchange = 'binance'
AND market = 'BTC-USDT'
AND start BETWEEN start_date AND end_date
GROUP BY month
)
SELECT month,
open_price,
sum(monthly_contribution) OVER w AS cumulative_invested,
sum(monthly_contribution / open_price) OVER w AS dca_btc,
sum(monthly_contribution / open_price) OVER w * open_price AS dca_portfolio_value,
sum(monthly_contribution) OVER w / first_value(open_price) OVER w AS lumpsum_btc,
sum(monthly_contribution) OVER w / first_value(open_price) OVER w * open_price AS lumpsum_portfolio_value
FROM monthly
WINDOW w AS (ORDER BY month)
ORDER BY monthOutput (2020 — 2024, 60 monthly rows)
month
open_price
cumulative_invested
dca_btc
dca_portfolio_value
lumpsum_btc
lumpsum_portfolio_value
Final BTC
Final value
Return on $60k
Extending it
Last updated