聚宽复现果仁网的波动率实现

def get_volatility(security_list, day):
    price_df = get_price(security_list, end_date=(datetime.datetime.now() + datetime.timedelta(days = -1)).strftime("%Y-%m-%d"), frequency='daily', fields=None, skip_paused=False, fq='pre', count=day, panel=False, fill_paused=False)
    ret_array = []
    for security in security_list:
        close = price_df.loc[price_df["code"] == security]["close"]
        check_day = 1
        ret = np.std((np.array(close[check_day:]) - np.array(close[:-check_day]))/ np.array(close[:-check_day]) * 100) * math.sqrt(day)
        ret_array.append(ret)
    
    #print(ret_array)
    a = pd.DataFrame({'volatility':ret_array})
    a.index = security_list
    if hasattr(a, 'sort'):
        a = a.sort(['volatility'],ascending = False)
    else:
        a = a.sort_values(['volatility'],ascending = False)
    a["volatility_score"] = range(1, len(security_list) + 1) 
    
#     a["volatility"] = ret_array
    return a
5475

Leave a Reply

Name and Email Address are required fields.
Your email will not be published or shared with third parties.