排名每日价格变化

时间:2016-10-17 17:13:50

标签: python sorting ranking rank

我正在写一个算法来对每天给定股票列表的价格变化进行排名。现在我正在与两只股票合作: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()))

1 个答案:

答案 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]))