25#ifndef quantlib_garch_volatility_model_hpp
26#define quantlib_garch_volatility_model_hpp
82 const auto values = quoteSeries.
values();
83 calibrate(values.cbegin(), values.cend());
95 const auto values = quoteSeries.
values();
103 const Array& initialGuess) {
104 const auto values = quoteSeries.
values();
105 calibrate(values.cbegin(), values.cend(),
106 method, endCriteria, initialGuess);
109 template <
typename ForwardIterator>
110 void calibrate(ForwardIterator begin, ForwardIterator end) {
111 std::vector<Volatility> r2;
113 ext::shared_ptr<Problem> p =
121 template <
typename ForwardIterator>
122 void calibrate(ForwardIterator begin, ForwardIterator end,
125 std::vector<Volatility> r2;
127 ext::shared_ptr<Problem> p =
136 template <
typename ForwardIterator>
137 void calibrate(ForwardIterator begin, ForwardIterator end,
140 const Array& initialGuess) {
141 std::vector<Volatility> r2;
142 to_r2(begin, end, r2);
143 ext::shared_ptr<Problem> p =
157 template <
typename InputIterator>
158 static Real to_r2(InputIterator begin, InputIterator end,
159 std::vector<Volatility>& r2) {
160 Real u2(0.0), mean_r2(0.0), w(1.0);
161 for (; begin != end; ++begin) {
162 u2 = *begin; u2 *= u2;
163 mean_r2 = (1.0 - w) * mean_r2 + w * u2;
173 const std::vector<Volatility>& r2,
183 const std::vector<Volatility>& r2,
194 const std::vector<Volatility>& r2,
198 const Array& initialGuess,
206 const std::vector<Volatility> &r2,
209 const Array& initialGuess,
217 const std::vector<Volatility>& r2,
222 const Array& initialGuess,
228 const std::vector<Volatility> &r2,
232 const Array& initialGuess,
237 template<
class InputIterator>
241 Real u2(0.0), sigma2(0.0);
243 for (; begin != end; ++begin, ++N) {
245 u2 = *begin; u2 *= u2;
246 retval += std::log(sigma2) + u2 / sigma2;
248 return N > 0 ?
Real(retval / (2*N)) : 0.0;
256 template<
class InputIterator>
1-D array used in linear algebra.
Criteria to end optimization process:
Real costFunction(InputIterator begin, InputIterator end) const
Garch11(const time_series &qs, Mode mode=BestOfTwo)
time_series calculate(const time_series "eSeries) override
static ext::shared_ptr< Problem > calibrate_r2(Mode mode, const std::vector< Volatility > &r2, Real mean_r2, Real &alpha, Real &beta, Real &omega)
Garch11(Real a, Real b, Real vl)
void calibrate(ForwardIterator begin, ForwardIterator end, OptimizationMethod &method, EndCriteria endCriteria)
void calibrate(const time_series "eSeries, OptimizationMethod &method, const EndCriteria &endCriteria, const Array &initialGuess)
Real forecast(Real r, Real sigma2) const
static Real to_r2(InputIterator begin, InputIterator end, std::vector< Volatility > &r2)
void calibrate(const time_series "eSeries, OptimizationMethod &method, const EndCriteria &endCriteria)
static Real costFunction(InputIterator begin, InputIterator end, Real alpha, Real beta, Real omega)
Real logLikelihood() const
TimeSeries< Volatility > time_series
void calibrate(ForwardIterator begin, ForwardIterator end)
void calibrate(ForwardIterator begin, ForwardIterator end, OptimizationMethod &method, EndCriteria endCriteria, const Array &initialGuess)
void calibrate(const time_series "eSeries) override
Abstract class for constrained optimization method.
Container for historical data.
std::vector< T > values() const
returns the historical data
Abstract constraint class.
std::function< Real(Real)> b
std::size_t Size
size of a container
ext::shared_ptr< YieldTermStructure > r
Abstract optimization problem class.
Volatility term structures.