def sharpeAndCml(source, riskFree, symbols): ma = dx.market_environment('ma', dt.date(2010, 1, 1)) ma.add_list('symbols', symbols) ma.add_constant('source', findSource(source)) # ma.add_constant('final date', dt.date(2014, 3, 1)) ma.add_constant('final date', dt.datetime.now()) retVal = '{\n' retVal += '"EfficientPortfolios":' try: port = mvp.MeanVariancePortfolio(source + '_stocks', ma) effFrontier = port.get_efficient_frontier_bl( st.config["efficient_frontier"]["points_number"]) retVal += effFrontier.toJson() retVal += ',\n' try: cpl = port.get_capital_market_line_bl_1(effFrontier.vols, effFrontier.rets, riskless_asset=riskFree) retVal += '"CML":' + cpl.toJson() except Exception, e: retVal += '"CML": {{"error":"{}"}}'.format(str(e)) traceback.print_exc() except Exception, e: retVal += '{{"error":"{}"}}'.format(str(e)) traceback.print_exc()
import matplotlib.pyplot as plt import seaborn as sns; sns.set() import matplotlib matplotlib.rcParams['font.family'] = 'serif' # importing the data h5 = pd.HDFStore('../data/vstoxx_march_2014.h5', 'r') vstoxx_index = h5['vstoxx_index'] vstoxx_futures = h5['vstoxx_futures'] vstoxx_options = h5['vstoxx_options'] h5.close() # collecting the maturity dates third_fridays = sorted(set(vstoxx_futures['MATURITY'])) # instantiation of market environment object with dummy pricing date me_vstoxx = dx.market_environment('me_vstoxx', dt.datetime(2014, 1, 1)) me_vstoxx.add_constant('currency', 'EUR') me_vstoxx.add_constant('frequency', 'W') me_vstoxx.add_constant('paths', 5000) # constant short rate model with somewhat arbitrary rate csr = dx.constant_short_rate('csr', 0.01) me_vstoxx.add_curve('discount_curve', csr) # parameters to be calibrated later, dummies only me_vstoxx.add_constant('kappa', 1.0) me_vstoxx.add_constant('theta', 20) me_vstoxx.add_constant('volatility', 1.0) # payoff function for all European call options payoff_func = 'np.maximum(maturity_value - strike, 0)'
import warnings import dx import datetime as dt import pandas as pd import seaborn as sns sns.set() warnings.simplefilter('ignore') r = dx.constant_short_rate('r', 0.01) me_1 = dx.market_environment('me', dt.datetime(2015, 1, 1)) # starting value of simulated processes me_1.add_constant('initial_value', 100.) # volatiltiy factor me_1.add_constant('volatility', 0.2) # horizon for simulation me_1.add_constant('final_date', dt.datetime(2016, 6, 30)) # currency of instrument me_1.add_constant('currency', 'EUR') # frequency for discretization me_1.add_constant('frequency', 'W') # number of paths me_1.add_constant('paths', 10000) # discount curve me_1.add_curve('discount_curve', r) gbm_1 = dx.geometric_brownian_motion('gbm_1', me_1)
grid = [ startdate.replace(year=int(startdate.year + (i / 2)), month=6) for i in range(10) ] grid[0] = dt.date(year=2013, month=12, day=12) grid[1] = grid[0] fix_rate = 2 * np.exp( oiss[startdate.replace(month=12)][grid[-1]] * 6) / np.sum([ np.exp(oiss[startdate.replace(month=12)][grid[i]] * (i + 1) / 2) for i in range(10) ]) fix_rate /= 100 print('The fixed semiannual swap rate is ' + str(fix_rate)) # market environment me_srd = dx.market_environment('me_srd', dt.datetime(2013, 6, 12)) # square-root diffusion me_srd.add_constant('initial_value', 0.033061571) me_srd.add_constant('kappa', opt[0]) me_srd.add_constant('theta', opt[1]) me_srd.add_constant('volatility', opt[2]) me_srd.add_curve('discount_curve', ois) # OIS discounting object me_srd.add_constant('currency', 'USD') me_srd.add_constant('paths', 10000) me_srd.add_constant('frequency', 'w') me_srd.add_constant('starting_date', me_srd.pricing_date) me_srd.add_constant('final_date', dt.datetime(2018, 6, 12)) srd = dx.square_root_diffusion('srd', me_srd)