Skip to content

Commit 8d8c819

Browse files
authored
Redesign i-faces + new tests confirming "diff" failure (#49)
1 parent 9db3c68 commit 8d8c819

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1244
-371
lines changed

src/lib-base/src/IHasCandles.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#include "IHasCandles.h"
2+
3+
IHasCandles::IHasCandles()
4+
{
5+
//ctor
6+
}
7+
8+
IHasCandles::~IHasCandles()
9+
{
10+
//dtor
11+
}

src/lib-base/src/IHasCandles.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef IHASCANDLES_H
2+
#define IHASCANDLES_H
3+
4+
class Candle;
5+
6+
class IHasCandles
7+
{
8+
public:
9+
IHasCandles();
10+
virtual ~IHasCandles();
11+
12+
virtual Candle GetCandle(int idx, int shift = 0) const = 0;
13+
virtual unsigned Len() const = 0;
14+
15+
protected:
16+
17+
private:
18+
};
19+
20+
#endif // IHASCANDLE_H

src/lib-base/src/IPredictor.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,31 @@
22

33
using namespace EnjoLib;
44

5+
const double IPredictor::ERROR = 0; // Try for example -10000 as well, or a boolean EnjoLib::Result
6+
57
IPredictor::IPredictor(){}
68
IPredictor::~IPredictor(){}
79

8-
double IPredictor::PredictNext(const EnjoLib::VecD & data, size_t idx) const
10+
/*
11+
double IPredictor::PredictNext(const EnjoLib::VecD & orig, const EnjoLib::VecD & data, size_t idx) const
912
{
1013
if (idx >= data.size())
1114
{
1215
return 0;
1316
}
14-
const VecD & ret = Predict(data, idx, 1);
17+
const VecD & ret = Predict(orig, data, idx, 1);
1518
return ret.at(0);
1619
}
17-
18-
EnjoLib::VecD IPredictor::PredictNextVec(const EnjoLib::VecD & data) const
20+
*/
21+
/*
22+
EnjoLib::VecD IPredictor::PredictNextVec(const EnjoLib::VecD & orig, const EnjoLib::VecD & data) const
1923
{
2024
VecD ret;
2125
for (size_t i = 0; i < data.size(); ++i)
2226
{
23-
const double pred = PredictNext(data, i);
27+
const double pred = PredictNext(orig, data, i);
2428
ret.Add(pred);
2529
}
2630
return ret;
2731
}
32+
*/

src/lib-base/src/IPredictor.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@
33

44
#include <Util/VecD.hpp>
55

6+
class ITSFun;
7+
68
class IPredictor
79
{
810
public:
911
IPredictor();
1012
virtual ~IPredictor();
13+
14+
//double PredictNext(const EnjoLib::VecD & orig, const EnjoLib::VecD & data, size_t idx) const;
15+
virtual EnjoLib::VecD Predict(const EnjoLib::VecD & data) const = 0;
16+
virtual unsigned GetLags() const = 0;
17+
//virtual EnjoLib::VecD Predict(const EnjoLib::VecD & orig, const EnjoLib::VecD & data, int horizon) const = 0;
1118

12-
double PredictNext(const EnjoLib::VecD & data, size_t idx) const;
13-
EnjoLib::VecD PredictNextVec(const EnjoLib::VecD & data) const;
14-
virtual EnjoLib::VecD Predict(const EnjoLib::VecD & data, size_t idx, int horizon) const = 0;
19+
static const double ERROR;
1520

1621
protected:
1722

src/lib-base/src/ITSFun.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "ITSFun.h"
2+
#include "TSRes.h"
23

34
ITSFun::ITSFun()
45
{
@@ -9,3 +10,15 @@ ITSFun::~ITSFun()
910
{
1011
//dtor
1112
}
13+
14+
15+
EnjoLib::VecD ITSFun::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const
16+
{
17+
EnjoLib::VecD reconstr;
18+
for (int i = 0; i < int(input.size()); ++i)
19+
{
20+
const TSRes rec = Reconstruct(i, input, lost.at(i));
21+
reconstr.Add(rec.val);
22+
}
23+
return reconstr;
24+
}

src/lib-base/src/ITSFun.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
#ifndef ITSFUN_H
22
#define ITSFUN_H
33

4+
#include "IHasCandles.h"
45
#include <Util/VecD.hpp>
6+
#include <Statistical/Matrix.hpp>
57

68
class TSRes;
7-
class ITSFun
9+
class ITSFun : public IHasCandles
810
{
911
public:
1012
ITSFun();
1113
virtual ~ITSFun();
1214

1315
virtual TSRes OnDataPoint(int idx) const = 0;
14-
virtual TSRes Reconstruct(int idx, const EnjoLib::VecD & input, double prev) const = 0;
15-
virtual unsigned Len() const = 0;
16+
virtual TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const = 0;
17+
EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const;
1618
virtual const char * GetName() const = 0;
1719

1820
protected:

src/lib-base/src/PredictorAR.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include "PredictorAR.h"
2+
#include "PredictorUtil.h"
3+
#include "ITSFun.h"
4+
5+
//#include <Util/CoutBuf.hpp>
6+
7+
using namespace EnjoLib;
8+
9+
PredictorAR::PredictorAR(){}
10+
PredictorAR::~PredictorAR(){}
11+
12+
EnjoLib::VecD PredictorAR::Predict(const EnjoLib::VecD & data) const
13+
{
14+
const int numSamples = GetLags();
15+
const EnjoLib::VecD & predAR = PredictorUtil().Regression(numSamples, data, false);
16+
return predAR;
17+
}
18+
19+
unsigned PredictorAR::GetLags() const
20+
{
21+
return 10;
22+
}

src/lib-base/src/PredictorAR.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef PREDICTORAR_H
2+
#define PREDICTORAR_H
3+
4+
#include "IPredictor.h"
5+
6+
7+
class PredictorAR : public IPredictor
8+
{
9+
public:
10+
PredictorAR();
11+
virtual ~PredictorAR();
12+
13+
EnjoLib::VecD Predict(const EnjoLib::VecD & data) const override;
14+
unsigned GetLags() const override;
15+
16+
protected:
17+
18+
private:
19+
};
20+
21+
#endif // PREDICTORAR_H

src/lib-base/src/PredictorARMA.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include "PredictorARMA.h"
2+
3+
#include "PredictorAR.h"
4+
#include "PredictorUtil.h"
5+
#include "ITSFun.h"
6+
7+
#include <Util/CoutBuf.hpp>
8+
9+
using namespace EnjoLib;
10+
11+
PredictorARMA::PredictorARMA(){}
12+
PredictorARMA::~PredictorARMA(){}
13+
14+
EnjoLib::VecD PredictorARMA::Predict(const EnjoLib::VecD & data) const
15+
{
16+
const int numSamplesMA = GetLags(); // ParQ
17+
const PredictorUtil util;
18+
const EnjoLib::VecD & predAR = PredictorAR().Predict(data);
19+
const EnjoLib::VecD & errors = util.GetErrorsCorrected(predAR, data);
20+
const EnjoLib::VecD & predMA = util.Regression(numSamplesMA, errors);
21+
const EnjoLib::VecD & predARMA = predAR + predMA;
22+
23+
return predARMA;
24+
}
25+
26+
unsigned PredictorARMA::GetLags() const
27+
{
28+
return 10;
29+
}

src/lib-base/src/PredictorARMA.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef PREDICTORARMA_H
2+
#define PREDICTORARMA_H
3+
4+
#include "IPredictor.h"
5+
6+
7+
class PredictorARMA : public IPredictor
8+
{
9+
public:
10+
PredictorARMA();
11+
virtual ~PredictorARMA();
12+
13+
EnjoLib::VecD Predict(const EnjoLib::VecD & data) const override;
14+
unsigned GetLags() const override;
15+
16+
protected:
17+
18+
private:
19+
};
20+
21+
#endif // PREDICTORARMA_H

0 commit comments

Comments
 (0)