我正在写一个算法来对每天给定股票列表的价格变化进行排名。现在我正在与两只股票合作:Apple和Amex。我想将它们从价格的最大变化到每日价格的最小变化进行排名。
例如我的数据如下:
第1天:
AAPL = 60.40
AMX = 15.50
第2天:
AAPL = 61.00
AMX = 15.60
我希望结果看起来像这样,最高的积极变化是排名第一。这可能吗?
变化:
AAPLchg = .60 Rank 1
AMXchg = .10 Rank 2
这是我到目前为止所做的:
def handle_data(context, data):
price_history = data.history(context.security_list, "price", bar_count=2, frequency="1d")
for s in context.security_list:
PrevAMX = price_history[sid(679)][-2]
CurrAMX = price_history[sid(679)][1]
PrevAAPL = price_history[sid(24)][-2]
CurrAAPL = price_history[sid(24)][1]
AMXchg = CurrAMX - PrevAMX
AAPLchg = CurrAAPL - PrevAAPL
if AMXchg < AAPLchg:
order(sid(679), 20)
if AAPLchg < AMXchg:
order(sid(24), 20)
price_history = data.history(context.security_list, "price", 20, "1d")
print price_history.mean()
print AMXchg
print AAPLchg
print log.info(str(context.chg_list.sort('adv_rank', descending=True).head()))
答案 0 :(得分:0)
假设您有字典中的价格,那么您可以这样做:
yesterday = {
'AAPL': 60.40,
'AMX': 15.50,
}
today = {
'AAPL': 61.00,
'AMX': 15.60,
}
change = {k: today[k] - yesterday[k] for k in today}
sorted_stocks = sorted(change, key=change.get, reverse=True)
for ss in sorted_stocks:
print('%s: %.2f' % (ss, change[ss]))