Rate CreditDefaultSwap::impliedHazardRate( Real targetNPV, const Handle<YieldTermStructure>& discountCurve, const DayCounter& dayCounter, Real recoveryRate, Real accuracy) const { boost::shared_ptr<SimpleQuote> flatRate(new SimpleQuote(0.0)); Handle<DefaultProbabilityTermStructure> probability( boost::shared_ptr<DefaultProbabilityTermStructure>(new FlatHazardRate(0, WeekendsOnly(), Handle<Quote>(flatRate), dayCounter))); MidPointCdsEngine engine(probability, recoveryRate, discountCurve); setupArguments(engine.getArguments()); const CreditDefaultSwap::results* results = dynamic_cast<const CreditDefaultSwap::results*>( engine.getResults()); ObjectiveFunction f(targetNPV, *flatRate, engine, results); Rate guess = 0.001; Rate step = guess*0.1; return Brent().solve(f, accuracy, guess, step); }
Disposable<std::vector<boost::shared_ptr<CalibrationHelper> > > FloatFloatSwaption::calibrationBasket( boost::shared_ptr<SwapIndex> standardSwapBase, boost::shared_ptr<SwaptionVolatilityStructure> swaptionVolatility, const BasketGeneratingEngine::CalibrationBasketType basketType) const { boost::shared_ptr<BasketGeneratingEngine> engine = boost::dynamic_pointer_cast<BasketGeneratingEngine>(engine_); QL_REQUIRE(engine, "engine is not a basket generating engine"); engine_->reset(); setupArguments(engine_->getArguments()); engine_->getArguments()->validate(); return engine->calibrationBasket(exercise_, standardSwapBase, swaptionVolatility, basketType); }
Rate CreditDefaultSwap::conventionalSpread( Real conventionalRecovery, const Handle<YieldTermStructure>& discountCurve, const DayCounter& dayCounter) const { Rate flatHazardRate = impliedHazardRate(0.0, discountCurve, dayCounter, conventionalRecovery); Handle<DefaultProbabilityTermStructure> probability( boost::shared_ptr<DefaultProbabilityTermStructure>( new FlatHazardRate(0, WeekendsOnly(), flatHazardRate, dayCounter))); MidPointCdsEngine engine(probability, conventionalRecovery, discountCurve, true); setupArguments(engine.getArguments()); engine.calculate(); const CreditDefaultSwap::results* results = dynamic_cast<const CreditDefaultSwap::results*>( engine.getResults()); return results->fairSpread; }
void FDEuropeanEngine<Scheme>::calculate() const { setupArguments(&arguments_); setGridLimits(); initializeInitialCondition(); initializeOperator(); initializeBoundaryConditions(); FiniteDifferenceModel<Scheme<TridiagonalOperator> > model( finiteDifferenceOperator_, BCs_); prices_ = intrinsicValues_; model.rollback(prices_.values(), getResidualTime(), 0, timeSteps_); results_.value = prices_.valueAtCenter(); results_.delta = prices_.firstDerivativeAtCenter(); results_.gamma = prices_.secondDerivativeAtCenter(); results_.theta = blackScholesTheta(process_, results_.value, results_.delta, results_.gamma); results_.additionalResults["priceCurve"] = prices_; }
int main(int argc, const char **argv) #endif { bContext *C = CTX_create(); SYS_SystemHandle syshandle; #ifndef WITH_PYTHON_MODULE bArgs *ba; #endif #ifdef WIN32 wchar_t **argv_16 = CommandLineToArgvW(GetCommandLineW(), &argc); int argci = 0; char **argv = MEM_mallocN(argc * sizeof(char *), "argv array"); for (argci = 0; argci < argc; argci++) { argv[argci] = alloc_utf_8_from_16(argv_16[argci], 0); } LocalFree(argv_16); #endif #ifdef WITH_PYTHON_MODULE #ifdef __APPLE__ environ = *_NSGetEnviron(); #endif #undef main evil_C = C; #endif #ifdef WITH_BINRELOC br_init(NULL); #endif #ifdef WITH_LIBMV libmv_initLogging(argv[0]); #endif setCallbacks(); #if defined(__APPLE__) && !defined(WITH_PYTHON_MODULE) /* patch to ignore argument finder gives us (pid?) */ if (argc == 2 && strncmp(argv[1], "-psn_", 5) == 0) { extern int GHOST_HACK_getFirstFile(char buf[]); static char firstfilebuf[512]; argc = 1; if (GHOST_HACK_getFirstFile(firstfilebuf)) { argc = 2; argv[1] = firstfilebuf; } } #endif #ifdef __FreeBSD__ fpsetmask(0); #endif /* initialize path to executable */ BLI_init_program_path(argv[0]); BLI_threadapi_init(); initglobals(); /* blender.c */ IMB_init(); BKE_images_init(); BKE_brush_system_init(); BLI_callback_global_init(); #ifdef WITH_GAMEENGINE syshandle = SYS_GetSystem(); #else syshandle = 0; #endif /* first test for background */ #ifndef WITH_PYTHON_MODULE ba = BLI_argsInit(argc, (const char **)argv); /* skip binary path */ setupArguments(C, ba, &syshandle); BLI_argsParse(ba, 1, NULL, NULL); if (use_crash_handler) { /* after parsing args */ signal(SIGSEGV, blender_crash_handler); } #else G.factory_startup = true; /* using preferences or user startup makes no sense for py-as-module */ (void)syshandle; #endif #ifdef WITH_FFMPEG IMB_ffmpeg_init(); #endif /* after level 1 args, this is so playanim skips RNA init */ RNA_init(); RE_engines_init(); init_nodesystem(); /* end second init */ #if defined(WITH_PYTHON_MODULE) || defined(WITH_HEADLESS) G.background = true; /* python module mode ALWAYS runs in background mode (for now) */ #else /* for all platforms, even windos has it! */ if (G.background) { signal(SIGINT, blender_esc); /* ctrl c out bg render */ } #endif /* background render uses this font too */ BKE_vfont_builtin_register(datatoc_bfont_pfb, datatoc_bfont_pfb_size); /* Initialize ffmpeg if built in, also needed for bg mode if videos are * rendered via ffmpeg */ sound_init_once(); init_def_material(); if (G.background == 0) { #ifndef WITH_PYTHON_MODULE BLI_argsParse(ba, 2, NULL, NULL); BLI_argsParse(ba, 3, NULL, NULL); #endif WM_init(C, argc, (const char **)argv); /* this is properly initialized with user defs, but this is default */ /* call after loading the startup.blend so we can read U.tempdir */ BLI_init_temporary_dir(U.tempdir); #ifdef WITH_SDL BLI_setenv("SDL_VIDEODRIVER", "dummy"); #endif } else { #ifndef WITH_PYTHON_MODULE BLI_argsParse(ba, 3, NULL, NULL); #endif WM_init(C, argc, (const char **)argv); /* don't use user preferences temp dir */ BLI_init_temporary_dir(NULL); } #ifdef WITH_PYTHON /** * NOTE: the U.pythondir string is NULL until WM_init() is executed, * so we provide the BPY_ function below to append the user defined * python-dir to Python's sys.path at this point. Simply putting * WM_init() before #BPY_python_start() crashes Blender at startup. */ /* TODO - U.pythondir */ #else printf("\n* WARNING * - Blender compiled without Python!\nthis is not intended for typical usage\n\n"); #endif CTX_py_init_set(C, 1); WM_keymap_init(C); #ifdef WITH_FREESTYLE /* initialize Freestyle */ FRS_initialize(); FRS_set_context(C); #endif /* OK we are ready for it */ #ifndef WITH_PYTHON_MODULE BLI_argsParse(ba, 4, load_file, C); if (G.background == 0) { if (!G.file_loaded) if (U.uiflag2 & USER_KEEP_SESSION) WM_recover_last_session(C, NULL); } #endif #ifndef WITH_PYTHON_MODULE BLI_argsFree(ba); #endif #ifdef WIN32 while (argci) { free(argv[--argci]); } MEM_freeN(argv); argv = NULL; #endif #ifdef WITH_PYTHON_MODULE return 0; /* keep blender in background mode running */ #endif if (G.background) { /* actually incorrect, but works for now (ton) */ WM_exit(C); } else { if (G.fileflags & G_FILE_AUTOPLAY) { if (G.f & G_SCRIPT_AUTOEXEC) { if (WM_init_game(C)) { return 0; } } else { if (!(G.f & G_SCRIPT_AUTOEXEC_FAIL_QUIET)) { G.f |= G_SCRIPT_AUTOEXEC_FAIL; BLI_snprintf(G.autoexec_fail, sizeof(G.autoexec_fail), "Game AutoStart"); } } } if (!G.file_loaded) { WM_init_splash(C); } } WM_main(C); return 0; } /* end of int main(argc, argv) */