Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
kendallrankcorrelation.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2017 Quaternion Risk Management Ltd.
3 All rights reserved.
4
5 This file is part of ORE, a free-software/open-source library
6 for transparent pricing and risk analysis - http://opensourcerisk.org
7
8 ORE is free software: you can redistribute it and/or modify it
9 under the terms of the Modified BSD License. You should have received a
10 copy of the license along with this program.
11 The license is also available online at <http://opensourcerisk.org>
12
13 This program is distributed on the basis that it will form a useful
14 contribution to risk analytics and model standardisation, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
17*/
18
19/*!
20 \file qle/math/kendallrankcorrelation.hpp
21 \brief Kendall's rank correlation coefficient computation
22 */
23
24#pragma once
25
26#include <ql/math/comparison.hpp>
27
28namespace QuantExt {
29
30template <class I1, class I2> Real kendallRankCorrelation(I1 begin1, I1 end1, I2 begin2) {
31 double sum = 0.0, n = static_cast<Real>(end1 - begin1);
32 auto w = begin2;
33 for (auto v = begin1; v != end1; ++v, ++w) {
34 auto w2 = begin2;
35 for (auto v2 = begin1; v2 != v; ++v2, ++w2) {
36 Real t = (*v2 - *v) * (*w2 - *w);
37 if (!QuantLib::close_enough(t, 0.0)) {
38 sum += t > 0.0 ? 1.0 : -1.0;
39 }
40 }
41 }
42 return 2.0 * sum / (n * (n - 1));
43}
44
45} // namespace QuantExt
Real kendallRankCorrelation(I1 begin1, I1 end1, I2 begin2)
Real sum(const Cash &c, const Cash &d)
Definition: bondbasket.cpp:107