string AsianOption::toStringRates(boost::shared_ptr<RatesEnvironment> re) { stringstream ratesDescriptionStream; ratesDescriptionStream << SingleInstrumentContract::toStringRates(re); validate(); if (SingleOptionContract::isOK()) { vector<double> forwards, fixes; vector<double> sds, vols; getRates((re->getFRS())->getAnchorDate(), fixes, forwards, sds, vols, re); double aveFwd = 0; for (size_t i = 0; i < forwards.size(); ++i) { aveFwd += forwards[i]; } if (forwards.size() > 0) aveFwd /= forwards.size(); double aveRateSet = 0; for (size_t i = 0; i < fixes.size(); ++i) { aveRateSet += fixes[i]; } if (fixes.size() > 0) { aveRateSet /= fixes.size(); } ratesDescriptionStream <<",Fix(Ave)," << fixed << setprecision(4) << aveRateSet; ratesDescriptionStream << ",Fwd(Ave)," << fixed << setprecision(4) << aveFwd; double averageSD = 0, averageVol = 0; for (size_t i = 0; i < sds.size(); ++i) { averageSD += sds[i] * sds[i]; averageVol += vols[i]; } if (sds.size() > 0) { averageSD /= sds.size(); averageVol /= sds.size(); } averageSD = sqrt(averageSD); ratesDescriptionStream << ",Vol(Ave)," << fixed << setprecision(6) << averageVol << ",SD(Ave)," << fixed << setprecision(6) << averageSD; } return ratesDescriptionStream.str(); }
double AsianOption::getOptionValue(boost::shared_ptr<RatesEnvironment> re) { Date onDate = re->getAnchorDate(); if (onDate > getSettlementDate()) { return 0; } vector<double> forwards, fixes, sds, vols; getRates(onDate, fixes, forwards, sds, vols, re); double premium = 0; if (sds.size() != forwards.size()) { return numeric_limits<double>::quiet_NaN(); } double df = (re->getDRS())->getDiscountFactor(getSettlementDate()); if (onDate < maturityDate) { option->setParameters(forwards, fixes, strike, sds, df); premium = option->getPremium(); } else if ((onDate >= maturityDate) && (onDate <= settlementDate)) { double averageFwd = 0; option->setParameters(forwards, fixes, strike, sds, df); if (fixes.size() == 0) { return 0; } for (size_t i = 0; i < fixes.size(); ++i) { averageFwd += fixes[i]; } averageFwd /= fixes.size(); premium = option->getPremiumAfterMaturity(averageFwd, df); } return premium * volume; }
void QueueTuner::contextMenuEvent(QContextMenuEvent* e) { QMenu p(this); p.addAction(i18n("Reset...")); QAction *action = p.exec(e->globalPos()); if (action) { QString question(i18n("This cannot be undone, are you sure you wish to reset to default values?")); int x = KMessageBox::warningContinueCancel( this, question, i18n("Reset Values"), KStandardGuiItem::reset(), KStandardGuiItem::cancel(), QString(), KMessageBox::Dangerous ); if (x == KMessageBox::Continue) { Application::instance()->resetQueueRates(); getRates(); } } e->accept(); }
double RateMeyerHaeseler::optimizeParameters(double epsilon) { assert(phylo_tree); double tree_lh = phylo_tree->computeLikelihood(); DoubleVector prev_rates; getRates(prev_rates); if (empty()) { if (rate_file) { readRateFile(rate_file); phylo_tree->clearAllPartialLH(); return phylo_tree->optimizeAllBranches(); } initializeRates(); } optimizeRates(); phylo_tree->clearAllPartialLH(); stringstream best_tree_string; phylo_tree->printTree(best_tree_string, WT_BR_LEN + WT_TAXON_ID); double new_tree_lh = phylo_tree->optimizeAllBranches(1); //double new_tree_lh = phylo_tree->computeLikelihood(); if (new_tree_lh < tree_lh - 1e-5) { cout << "Worse likelihood (" << new_tree_lh << "), roll back site rates..." << endl; setRates(prev_rates); phylo_tree->rollBack(best_tree_string); //phylo_tree->clearAllPartialLh(); new_tree_lh = phylo_tree->computeLikelihood(); //cout << "Backup log-likelihood: " << new_tree_lh << endl; new_tree_lh = tree_lh; } return new_tree_lh; }
void QueueTuner::setServer(Server* newServer) { bool toShow = false; if (!m_server && newServer) toShow = true; else if (!newServer && m_server) hide(); // since this is tied to the new signal, we assume we're only getting called with a change m_server = newServer; if (toShow) show(); if (m_server) { connect(m_server, SIGNAL(destroyed(QObject*)), SLOT(serverDestroyed(QObject*))); getRates(); } }