UNPKG

trade

Version:

A JavaScript backtesting library to validate trading strategies for stocks, futures, crypto currencies etc. based on historical data.

19 lines (17 loc) 732 B
/** * Returns max drawdown * @param {number[]} data Array of values * @param {bool} relative True to return relative drawdown; false will return absolute * drawdown * @return {number} Max drawdown (e.g. 0.4 for 40% if relative) */ export default (data, relative) => { if (!Array.isArray(data)) { throw new Error(`Expected data to be an array, is ${JSON.stringify(data)} instead.`); } return data.reduce((prev, item) => { const high = Math.max(prev.high, item); const drawdown = Math.max(prev.drawdown, relative ? 1 - (item / high) : high - item); return { high, drawdown }; }, { high: -Infinity, drawdown: 0 }).drawdown; };