Exemplo n.º 1
0
def actions(ticker, components):
	# Splits are quoted as decimals - convert to fraction ('7 for 1' vs .142857)
	def split_ratio(dec): 
		frac = Fraction.from_float(dec).limit_denominator(10)
		num, denom = frac.numerator, frac.denominator 
		return "{} for {}".format(denom, num)
	try: 
		actions = data.get_data_yahoo_actions(ticker)
	except Exception: 
		return {"message": Response.data_notfound(ticker)}
	if len(actions)==0: 
		return {"message": Response.no_actions(ticker)}
	actions.ix[actions.action=="SPLIT", 'value'] = actions.value.map(lambda x: split_ratio(x))
	actions['action'] = actions.action.map(lambda x: x.lower())
	actions.index = actions.index.map(lambda x: datetime.date(x.year, x.month, x.day).strftime('%Y-%m-%d'))
	actions.iloc[::-1]

	# Build message from DataFrame
	message = Response.list_actions(ticker)
	for date, action, value in zip(actions.index, actions.action, actions.value):
		message += ("\n{} - {} `{}`".format(date, action, value))
	return {"message": message}