예제 #1
0
def make_tradeplots_for_files_in_folder(directory):
	import os
	from IO import load_tradeprice_data
	from plotting import make_pretty_tradeprice_plot
	extension = '.npz'
	list_of_files = [file for file in os.listdir(directory) if file.lower().endswith(extension)]
	for file in list_of_files:
		rounds, prices = IO.load_tradeprice_data(directory + file)
		filename = directory + file[:-3] + 'png'
		make_pretty_tradeprice_plot(rounds, prices, filename)
예제 #2
0
def issue_85_tradeplot_and_tex(folder_with_npz_files, figure_name):
	import os
	from plotting import make_pretty_tradeprice_plot
	npzfiles = os.listdir(folder_with_npz_files)
	npzfiles = [folder_with_npz_files + f for f in npzfiles if f.endswith('.npz')]
	print npzfiles
	for npzfile in npzfiles:
		make_pretty_tradeprice_plot(IO.load_tradeprice_data(npzfile))
	
	utils.export_tradeprice_figure_as_tex(npzfiles, figure_name)
예제 #3
0
def issue_113_make_all_tradeprice_plots():
	from plotting import make_pretty_tradeprice_plot
	data_folder = '/Users/halfdan/Dropbox/Waseda/Research/MarketSimulation/Thesis/data_for_tradeprice_plots/'
	mapping = {
			'gen12_1386710381616696.npz' : 'low_stdev_but_not_stable',
			'gen56_1388690478773536.npz' : 'low_stdev_and_stable',
			'gen13_1387568360402236.npz' : 'high_stdev_but_stable'

	}
	figure_folder = make_issue_specific_figure_folder('issue_113_tradeprice_plots', 'all')
	for dataname, plotname in mapping.items():
		rounds, prices = IO.load_tradeprice_data(data_folder + dataname)
		#make_pretty_tradeprice_plot(rounds, prices, figure_folder + plotname, dpi = 200, figsize=tuple(map(lambda x: x*1, [8,4])), format = 'pdf')
		make_pretty_tradeprice_plot(rounds, prices, figure_folder + plotname, dpi = 200, format = 'pdf')
예제 #4
0
	def replot(mask, subfolder_name, f = 0):
		try:
			in_mask = ids[mask]
			has_tuple = in_mask['id'].map(lambda x: isinstance(x, tuple))
			in_mask = in_mask[has_tuple]
		
			indexes = range(len(in_mask))
			np.random.shuffle(indexes)
			
			if n_graphs_to_copy == 'all':
				n_copy = len(indexes) - 1
			else:
				n_copy = n_graphs_to_copy
			names = map(lambda x: x[0], in_mask.iloc[indexes[0:n_copy]]['id'].values)
			#print 'names'
			#print names
			paths = map(lambda x: '%s%s'%(raw_data_path, x), names)
			graph_paths = map(lambda x: '%s.png'%x, paths)
			data_paths = map(lambda x: '%s.npz'%x, paths)
			#all_data = map(lambda x: np.load(x).items()[0][1].item(), data_paths)
			directory = '%s%s%s/'%(graph_save_dir, subfolder_name, f)
			parameters = DataFrame(columns = par.columns)
			if not os.path.exists(directory): os.makedirs(directory)
			for path, data_path, name in zip(paths, data_paths, names):
				data = np.load(data_path).items()[0][1].item()
				rounds = data['rounds']
				prices = data['tradePrice']
				filename = directory + name + '.png'
				parameters = parameters.append(data['parameters'], ignore_index=True)
				print 'Replotting market with pars: %s'%data['parameters']
				make_pretty_tradeprice_plot(rounds, prices, filename)
			return parameters
			
			for path, graph, name in zip(paths, graph_paths, names):
				print 'copy %s to %s'%(graph, directory + name + '.png')
				shutil.copyfile(graph, directory + name + '.png')
		except IndexError:
			pass
예제 #5
0
def __evaluate_simulation_results(parameters, logdata_folder, graph_folder, generation_number, plot_name = None):
	assert logdata_folder, "Please specify where the logdata is located"
	data = empty_data_matrix(1)

	#ob_round_based = np.genfromtxt(logdata_folder + 'columnLog_roundBased_orderbook(0,0).csv', names=True, dtype=int, delimiter=',', usecols=(1,2))
	#stock_round_based = np.genfromtxt(logdata_folder + 'columnLog_roundBased_stock0.csv', names=True, dtype=int, delimiter=',', usecols=(0,1))
	trades = IO.load_trade_log_data(logdata_folder)

	

	
	fas = get_fundamental_after_shock()
	within_margin = get_number_of_rounds_within_stability_margin(trades['price'], trades['round'], fas)
	#data['n_simulation_rounds_within_stability_margin'] = within_margin['total_number_of_rounds']
	#data['n_seperate_intervals_within_stability_margin'] = within_margin['n_intervals']
	if 'longest_interval_within_margin' in data_for_failed_simulation.keys():
		data['longest_interval_within_margin'] = within_margin['longest_interval']
	if 'stdev' in data_for_failed_simulation.keys():
		data['stdev'] = get_tp_std_after_entering_margin(trades['price'], trades['round'])
	if 'overshoot' in data_for_failed_simulation.keys():
		data['overshoot'] = calculate_overshoot(fas, trades['price'], trades['round'])
	if 'time_to_reach_new_fundamental' in data_for_failed_simulation.keys():
		data['time_to_reach_new_fundamental'] = get_first_round_to_reach_new_fundamental(trades['price'], trades['round'])
	if 'round_stable' in data_for_failed_simulation.keys():
		data['round_stable'] = calculate_round_stable(trades['price'], trades['round'], fas)

	if np.random.random() <= PLOT_SAVE_PROB:
		data_id = 'gen%s_%s_%s'%(generation_number, get_epoch_time(), str(abs(hash(np.random.random()))))
		print graph_folder + data_id + '.npz'
		
		IO.save_tradeprice_data(trades['round'], trades['price'], data, parameters, graph_folder + data_id + '.npz')
		plotting.make_pretty_tradeprice_plot(trades['round'], trades['price'], graph_folder + data_id + '.png')
		#plotting.make_tradeprice_plot(trades['round'], trades['price'], data, parameters, graph_folder + data_id + '.png')
	else:
		data_id = None
		
	if not KEEP_SIMULATION_DATA: IO.delete_simulation_data(logdata_folder)
	return data, data_id