Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/lib-base/src/IHasCandles.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ class IHasCandles
IHasCandles();
virtual ~IHasCandles();

virtual Candle GetCandle(int idx, int shift = 0) const = 0;
virtual Candle GetCandle0Based(int idx) const = 0;
virtual Candle GetCandleTS(int idx, int shift = 0) const = 0;
virtual unsigned Len() const = 0;

protected:
Expand Down
5 changes: 3 additions & 2 deletions src/lib-base/src/ITSFun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ITSFun::~ITSFun()
//dtor
}


/*
EnjoLib::VecD ITSFun::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const
{
EnjoLib::VecD reconstr;
Expand All @@ -21,4 +21,5 @@ EnjoLib::VecD ITSFun::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib:
reconstr.Add(rec.val);
}
return reconstr;
}
}
*/
4 changes: 2 additions & 2 deletions src/lib-base/src/ITSFun.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ class ITSFun : public IHasCandles, public IOptimizable
virtual ~ITSFun();

virtual TSRes OnDataPoint(int idx) const = 0;
virtual TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const = 0;
EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const;
//virtual TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const = 0;
virtual EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const = 0;
virtual const char * GetName() const = 0;
virtual void SetSilent() = 0;

Expand Down
3 changes: 2 additions & 1 deletion src/lib-base/src/PredictorTrue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ PredictorTrue::PredictorTrue(const IDataProvider & dat)
{}
PredictorTrue::~PredictorTrue(){}

/*
EnjoLib::VecD PredictorTrue::PredictVec(const EnjoLib::VecD & data) const
{
EnjoLib::VecD ret;
//ret.reserve(horizon);
//ret.Add(data.at(idx));
return data;
}

*/
double PredictorTrue::PredictNext(const BufferDouble & datExpanding) const
{
return datExpanding[0];
Expand Down
2 changes: 1 addition & 1 deletion src/lib-base/src/PredictorTrue.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class PredictorTrue : public PredictorBase
PredictorTrue(const IDataProvider & dat);
virtual ~PredictorTrue();

EnjoLib::VecD PredictVec(const EnjoLib::VecD & data) const override;
//EnjoLib::VecD PredictVec(const EnjoLib::VecD & data) const override;
double PredictNext(const BufferDouble & datExpanding) const override;
unsigned GetLags() const override;

Expand Down
7 changes: 6 additions & 1 deletion src/lib-base/src/TSFunBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,16 @@ const IBufferCandles & TSFunBase::GetCandles() const
return m_bufCan;
}

Candle TSFunBase::GetCandle(int idx, int shift) const
Candle TSFunBase::GetCandleTS(int idx, int shift) const
{
return m_bufCan[idx + shift];
}

Candle TSFunBase::GetCandle0Based(int idx) const
{
return m_bufCan.GetDataVec()[idx];
}

unsigned TSFunBase::Len() const
{
return LenProt();
Expand Down
3 changes: 2 additions & 1 deletion src/lib-base/src/TSFunBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ class TSFunBase : public ITSFun
const IPeriod & GetPer() const;
const IDataProvider & GetData() const;
const IBufferCandles & GetCandles() const;
Candle GetCandle(int idx, int shift = 0) const override; // IHasCandles
Candle GetCandleTS(int idx, int shift = 0) const override; // IHasCandles
Candle GetCandle0Based(int idx) const override; // IHasCandles /// TODO: decide what kind of index to use
OptiVarVec GetOptiFloat() override; // IOptimizable

protected:
Expand Down
1 change: 1 addition & 0 deletions src/qt-lib/src/PlotElements.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ void PlotElements::SetupReconstruction(QCustomPlot * p, const ISimulatorTS & sim
const ConfigTS & confTS = *gcfgMan.cfgTS;
Util::AddMA(d.GetTime(), Util::stdVectToQVectF(simTS.GetOutputSeries(PredictorOutputType::RECONSTRUCTION).Data()), p, Qt::blue);
Util::AddMA(d.GetTime(), Util::stdVectToQVectF(simTS.GetOutputSeries(PredictorOutputType::RECONSTRUCTION_PRED).Data()), p, Qt::green);
//Util::AddMA(d.GetTime(), Util::stdVectToQVectF(simTS.GetOutputSeries(PredictorOutputType::PREDICTION).Data()), p, Qt::yellow);
if (confTS.PLOT_BASELINE)
{
Util::AddMA(d.GetTime(), Util::stdVectToQVectF(simTS.GetOutputSeries(PredictorOutputType::RECONSTRUCTION_PRED_BASELINE).Data()), p, Qt::gray);
Expand Down
4 changes: 3 additions & 1 deletion src/tsqsim-lib/src/ITSXform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@
ITSXform::ITSXform(){}
ITSXform::~ITSXform(){}

const double ITSXform::DATA_INITIAL = -100000;

unsigned ITSXform::MaxShift() const
{
return 0;
}

double ITSXform::GetVal(const IHasCandles & input, const PriceType & priceType, int idx) const
{
const Candle & can = input.GetCandle(idx);
const Candle & can = input.GetCandle0Based(idx);
return can.GetPriceByType(priceType); /// TODO: Return a common value
}
2 changes: 2 additions & 0 deletions src/tsqsim-lib/src/ITSXform.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ struct ITSXform
virtual unsigned MaxShift() const;

double GetVal(const IHasCandles & input, const PriceType & priceType, int idx) const;

static const double DATA_INITIAL;
};

#endif // ITSXFORM_H
60 changes: 22 additions & 38 deletions src/tsqsim-lib/src/SimulatorTS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,12 @@ void SimulatorTS::RunRaw(const StartEnd & startEndFrame)
idxFinish = startEndFrame.end;
}
const int len = idxFinish - idxStart;

const SimulatorTSReports reps;

std::vector<Inp> input;
VecD original;
const double initial = m_per.GetCandles().GetDataIter().at(idxStart).GetPriceByType(m_cfgTS.GetPriceType());
//const double initial = m_per.GetCandles().GetDataIter().at(idxStart).GetHigh();
//const double initial = m_per.GetCandles().GetDataIter().at(idxStart).GetPriceByType(m_cfgTS.GetPriceType());
input.reserve(idxFinish - idxStart);
{
//LOGL << "Collecting input...\n";
Expand Down Expand Up @@ -170,18 +169,18 @@ EnjoLib::VecD SimulatorTS::PredAlgo(const IPredictor & predAlgo) const
//const int horizon = 1;
const EnjoLib::VecD & preds = PredCommon(predAlgo, m_dataMan.converted);

//LOGL << "Preds = " << preds.Print() << Nl;

const std::vector<TSRes> & rec = GetReconstruction(&m_fun, preds, m_dataMan.convertedLost);
return GetReconstructionFiltered(rec);
const EnjoLib::VecD & recV = GetReconstructionFiltered(rec);
//LOGL << "Preds = " << preds.Print() << Nl << "Reconstr = " << recV.Print()<< Nl;
return recV;
}

EnjoLib::VecD SimulatorTS::PredCommon(const IPredictor & predAlgo, const EnjoLib::VecD & data) const
{
if (m_cfgTS.USE_VECTOR_PRED)
{
const EnjoLib::VecD & predVec = predAlgo.PredictVec(data);

// Assertion, checking if just some of the returned values are the same as predAlgo.Predict(data);
BufferDouble buf(data);
const double predLast = predAlgo.PredictNext(buf);
Expand Down Expand Up @@ -227,37 +226,28 @@ std::vector<TSRes> SimulatorTS::GetRets(const std::vector<Inp> & input) const
}
}

std::vector<TSRes> SimulatorTS::GetReconstruction(const ITSFun * fun, const EnjoLib::VecD & input, const EnjoLib::Matrix & lostMat, bool additive) const
std::vector<TSRes> SimulatorTS::GetReconstruction(const ITSFun * fun, const EnjoLib::VecD & input, const EnjoLib::Matrix & lostMat) const
{ /// TODO: the double "initial" should probably be a vector of initial conditions, built from the 1st diffs (len = 1), 2nd diffs (len = 2), and so on.
/// TODO: extract "lost information" from each transformation and apply here
std::vector<TSRes> ret;
//double prev = additive ? initial : 0;
double prev = 0;
//TSRes r1st(true);
//r1st.val = prev;
//ret.push_back(r1st);
const size_t startIdx = 0; // Subject to transformation limits
for (size_t i = startIdx; i < input.size(); ++i)
const VecD & reconstr = fun->ReconstructVec(input, lostMat);
//LOGL << "Reconstr = " << reconstr.Print() << Nl;
for (int i = 0; i < reconstr.size(); ++i)
{
//if (inp.valid)
TSRes res;
res.val = reconstr.at(i);
if (reconstr.at(i) == 0)
{
const VecD & lost = lostMat.at(i);
TSRes res = fun->Reconstruct(i, input, lost);
//LOGL << "OUT = " << res.val << " " << res.valid << Nl;
//if (res.val != 0 && prev == 0 && i > 0)
if (res.val == 0)
if (i == 0)
{
res.val = m_original.at(0);
}
else
{
if (i == 0)
{
res.val = m_original.at(0);
}
else
{
res.val = m_original.at(i-1); // Simulate baseline
}
res.val = m_original.at(i-1); // Simulate baseline
}
ret.push_back(res);
}
ret.push_back(res);
}
return ret;
}
Expand All @@ -268,18 +258,12 @@ TSRes SimulatorTS::IterBet(const Inp & ele)
const ITSFun * fun = Get<1>(ele);
const int i = Get<2>(ele);

const unsigned sti = data->GetCandles().ConvertIndex(i);
const TSRes & res = fun->OnDataPoint(sti);
//const unsigned sti = data->GetCandles().ConvertIndex(i);
const TSRes & res = fun->OnDataPoint(i);
return res;
//LOGL << "i = " << i << ", res = " << res << Nl;
}

/*
void SimulatorTS::ReinitOptiVars(const EnjoLib::IIterable<OptiVarF *> & optiVars)
{
m_ppred->UpdateOptiVars(optiVars);
}
*/
void SimulatorTS::ReinitOptiVars(const EnjoLib::VecD & optiVars)
{
m_ppred->UpdateOptiVars(optiVars);
Expand Down
2 changes: 1 addition & 1 deletion src/tsqsim-lib/src/SimulatorTS.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class SimulatorTS : public ISimulatorTS

STDFWD::vector<TSRes> GetRets(const STDFWD::vector<Inp> & inp) const;
TSXformDataMan GetRetsFiltered(const STDFWD::vector<Inp> & inp) const;
STDFWD::vector<TSRes> GetReconstruction(const ITSFun * fun, const EnjoLib::VecD & inp, const EnjoLib::Matrix & lost, bool additive = true) const;
STDFWD::vector<TSRes> GetReconstruction(const ITSFun * fun, const EnjoLib::VecD & inp, const EnjoLib::Matrix & lost) const;
EnjoLib::VecD GetReconstructionFiltered(const STDFWD::vector<TSRes> & input) const;

TSRes Reconstr(const ITSFun * fun, const double val) const;
Expand Down
5 changes: 4 additions & 1 deletion src/tsqsim-lib/src/SimulatorTSReports.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ SimulatorTSReports::SimulatorTSReports()

EnjoLib::VecD SimulatorTSReports::PrepPredsPlot(const EnjoLib::VecD & orig, const EnjoLib::VecD & predBaseline, const EnjoLib::VecD & pred) const
{
const VecD & diff = (predBaseline - orig) - (pred - orig); /// TODO: this could make more sense using squares?
//const VecD & diff = (predBaseline - orig) - (pred - orig); /// TODO: this could make more sense using squares?
//const VecD & diff = (predBaseline - orig);// - (pred - orig);
const VecD & diff = (pred - orig);// - (predBaseline - orig);
//const VecD & diff = (predBaseline - orig) / (pred - orig); /// TODO: this could make more sense using squares?
return Statistical().CumSum(diff);
}

Expand Down
12 changes: 9 additions & 3 deletions src/tsqsim-lib/src/TSFunLua.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ TSRes TSFunLua::OnDataPointProt(int idx) const
{
const GMat gmat;

const Candle & canCurr = GetCandle(idx);
const Candle & canPrev = GetCandle(idx, 1);
const Candle & canCurr = GetCandle0Based(idx);
const Candle & canPrev = GetCandle0Based(idx - 1);


const double ret = gmat.Fabs(canCurr.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()) - canPrev.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()));
Expand All @@ -77,9 +77,15 @@ TSRes TSFunLua::OnDataPointProt(int idx) const
return res;
}

EnjoLib::VecD TSFunLua::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const
{
return EnjoLib::VecD();
}

/*
TSRes TSFunLua::Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const
{
TSRes res(true);
return res;
}

*/
3 changes: 2 additions & 1 deletion src/tsqsim-lib/src/TSFunLua.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ class TSFunLua : public TSFunBase

protected:
TSRes OnDataPointProt(int idx) const override;
TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
//TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const override;

private:
// create new Lua state
Expand Down
6 changes: 6 additions & 0 deletions src/tsqsim-lib/src/TSFunPrintAll.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,14 @@ TSRes TSFunPrintAll::OnDataPointProt(int idx) const
return res;
}

EnjoLib::VecD TSFunPrintAll::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const
{
return EnjoLib::VecD();
}
/*
TSRes TSFunPrintAll::Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const
{
TSRes res(true);
return res;
}
*/
3 changes: 2 additions & 1 deletion src/tsqsim-lib/src/TSFunPrintAll.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ class TSFunPrintAll : public TSFunBase

protected:
TSRes OnDataPointProt(int idx) const override;
TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
//TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const override;

private:
};
Expand Down
13 changes: 10 additions & 3 deletions src/tsqsim-lib/src/TSFunPrintCumul.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ TSRes TSFunPrintCumul::OnDataPointProt(int idx) const
{
const GMat gmat;

const Candle & canCurr = GetCandle(idx);
const Candle & canPrev = GetCandle(idx, 1);
const Candle & canCurr = GetCandle0Based(idx);
const Candle & canPrev = GetCandle0Based(idx - 1);

const double ret = gmat.Sqrt(gmat.Fabs(canCurr.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()) - canPrev.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType())));// - 0.035;

Expand All @@ -34,9 +34,16 @@ TSRes TSFunPrintCumul::OnDataPointProt(int idx) const
return res;
}


EnjoLib::VecD TSFunPrintCumul::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const
{
return EnjoLib::VecD();
}

/*
TSRes TSFunPrintCumul::Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const
{
TSRes res(true);
return res;
}

*/
3 changes: 2 additions & 1 deletion src/tsqsim-lib/src/TSFunPrintCumul.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ class TSFunPrintCumul : public TSFunBase

protected:
TSRes OnDataPointProt(int idx) const override;
TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
//TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const override;

private:
};
Expand Down
4 changes: 2 additions & 2 deletions src/tsqsim-lib/src/TSFunTxt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ TSRes TSFunTxt::OnDataPointProt(int idx) const
return m_xformMan.OnDataPointProt(*this, idx);
}

TSRes TSFunTxt::Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const
VecD TSFunTxt::ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const
{
return m_xformMan.Reconstruct(input.at(idx), lost);
return m_xformMan.ReconstructVec(input, lost);
}

unsigned TSFunTxt::LenProt() const
Expand Down
2 changes: 1 addition & 1 deletion src/tsqsim-lib/src/TSFunTxt.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class TSFunTxt : public TSFunBase

protected:
TSRes OnDataPointProt(int idx) const override;
TSRes Reconstruct(int idx, const EnjoLib::VecD & input, const EnjoLib::VecD & lost) const override;
EnjoLib::VecD ReconstructVec(const EnjoLib::VecD & input, const EnjoLib::Matrix & lost) const override;

unsigned LenProt() const override;

Expand Down
Loading