最大回撤计算MATLAB实现

by faruto

一个简单的计算资金流 Equity 的最大回撤的函数,高手绕行。

最大回撤的定义:

资金流 Equity,在索引 index 处,找出之前的资金流最大值 max,

如果该索引处的资金就为最大值,则其最大回撤为 0。

否则,最大回撤为 (Equity(index)-max)/max;

cnq.net

最大回撤计算 MATLAB 实现源代码:

function RetraceRatio = RetraceRatio(Equity)

% 计算最大回撤比例

% by liyang 2011/12/13

% farutoliyang@gmail.com

%% 输入参数检查

error(nargchk(1, 1, nargin));


%% 初始化

len = numel(Equity);

RetraceRatio = zeros(len, 1);

%% 计算最大回撤比例

for i = 2:len

    C = max(Equity(1:i));

    if C == Equity(i)

        RetraceRatio(i) = 0;

    else

        RetraceRatio(i) = (Equity(i)-C)/C;

    end

end

%% 

if nargout == 0

    figure;


    subplot(2,1,1);

    plot(Equity);

    title('资金权益');

    grid on;

    axis tight;

   
    subplot(2,1,2);

    plot(RetraceRatio);

    title('最大回撤比例');

    grid on;

%     axis([0 len -0.5 0.3]);

    axis tight;

end