sql="""SELECT distinct a.price_date as datetime,a.close as net_worth, a.close as benchmark, a.close as net FROM fund_market_indexes a WHERE a.index_id= '%s' and a.price_date<= '%s' order by a.price_date ASC"""%(fund_id,enddate)
else:
sql="""SELECT distinct a.price_date as datetime,a.cumulative_nav as net_worth,b.close as benchmark, a.nav as net FROM fund_nav a ,fund_market_indexes b WHERE a.price_date=b.price_date and b.index_id= '%s' and a.fund_id= '%s' and a.price_date<= '%s' order by a.price_date ASC"""%(index_code,fund_id,enddate)
sql="update fund_performance set fund_id='%s', end_date='%s', price_date='%s', cumulative_nav='%s', ret_ytd='%s', ret_ytd_bm1='%s' , ret_incep='%s', ret_incep_bm1='%s', ret_incep_a='%s', ret_incep_bm1_a='%s',ret_cum_ytd='%s',ret_cum_ytd_bm1='%s',ret_cum_incep='%s',ret_cum_incep_bm1='%s' where id='%s'"%(str_fund_id,dt_end_date,dt_price_date,dec_cumulative_nav,short_r,b_short_r,long_r,b_long_r,an_long_r,b_an_long_r,short_cum_returns,short_cum_returns_b,long_cum_returns,long_cum_returns_b,str_id)
print(sql)
try:
cur.execute(sql)
conn.commit()
exceptExceptionase:
print(e.message)
#更新日数据和周数据
iffav_freq==1:
sql="update fund_performance set ret_1day='%s', ret_1day_bm1 = '%s', ret_1w='%s', ret_1w_bm1='%s' where id='%s'"%(return_d,b_return_d,return_w,b_return_w,str_id)
print(sql)
cur.execute(sql)
conn.commit()
eliffav_freq==2:
sql="update fund_performance set ret_1w='%s',ret_1w_bm1='%s' where id='%s'"%(return_w,b_return_w,str_id)
print(sql)
cur.execute(sql)
conn.commit()
#处理月份数据
print('开始月份数据处理:',range_return_m,cum_returns_m)
iflen(range_return_m)>=1:
sql="update fund_performance set ret_1m='%s', ret_1m_bm1= '%s',ret_cum_1m ='%s', ret_cum_1m_bm1='%s' where id='%s'"%(range_return_m[0],b_range_return_m[0],cum_returns_m[0],b_cum_returns_m[0],str_id)
print(sql)
cur.execute(sql)
iflen(range_return_m)>=2:
sql="update fund_performance set ret_3m='%s', ret_3m_bm1= '%s' ,ret_cum_3m ='%s', ret_cum_3m_bm1='%s' where id='%s'"%(range_return_m[1],b_range_return_m[1],cum_returns_m[1],b_cum_returns_m[1],str_id)
print(sql)
cur.execute(sql)
iflen(range_return_m)>=3:
sql="update fund_performance set ret_6m=%s, ret_6m_bm1= %s ,ret_cum_6m ='%s', ret_cum_6m_bm1='%s' where id='%s'"%(range_return_m[2],b_range_return_m[2],cum_returns_m[2],b_cum_returns_m[2],str_id)
print(sql)
cur.execute(sql)
#处理年份数据
iflen(date_y)>=1:
sql="update fund_performance set ret_1y='%s', ret_1y_bm1= '%s', ret_cum_1y='%s', ret_cum_1y_bm1='%s' where id='%s'"%(range_return_y[0],b_range_return_y[0],cum_returns_y[0],b_cum_returns_y[0],str_id)
print(sql)
cur.execute(sql)
iflen(date_y)>=2:
sql="update fund_performance set ret_2y='%s', ret_2y_bm1= '%s' , ret_2y_a='%s' , ret_2y_bm1_a= '%s',ret_cum_2y='%s', ret_cum_2y_bm1='%s' where id='%s'"%(range_return_y[1],b_range_return_y[1],annual_return_y[1],b_annual_return_y[1],cum_returns_m[1],b_cum_returns_m[1],str_id)
print(sql)
cur.execute(sql)
iflen(date_y)>=3:
sql="update fund_performance set ret_3y='%s', ret_3y_bm1= '%s' , ret_3y_a='%s' , ret_3y_bm1_a= '%s',ret_cum_3y='%s', ret_cum_3y_bm1='%s' where id='%s'"%(range_return_y[2],b_range_return_y[2],annual_return_y[2],b_annual_return_y[2],cum_returns_m[2],b_cum_returns_m[2],str_id)
print(sql)
cur.execute(sql)
iflen(date_y)>=4:
sql="update fund_performance set ret_4y='%s', ret_4y_bm1= '%s' , ret_4y_a='%s' , ret_4y_bm1_a= '%s',ret_cum_4y='%s', ret_cum_4y_bm1='%s' where id='%s'"%(range_return_y[3],b_range_return_y[3],annual_return_y[3],b_annual_return_y[3],cum_returns_y[3],b_cum_returns_y[3],str_id)
print(sql)
cur.execute(sql)
iflen(date_y)>=5:
sql="update fund_performance set ret_5y='%s', ret_5y_bm1= '%s' , ret_5y_a='%s' , ret_5y_bm1_a= '%s',ret_cum_5y='%s', ret_cum_5y_bm1='%s' where id='%s'"%(range_return_y[4],b_range_return_y[4],annual_return_y[4],b_annual_return_y[4],cum_returns_y[4],b_cum_returns_y[4],str_id)
print(sql)
cur.execute(sql)
conn.commit()
#结果存入fund_risk_stats
print('结果存入fund_risk_stats')
sql="select id from fund_risk_stats where fund_id='%s' and end_date='%s'"%(fund_id,enddate)
sql="update fund_riskadjret_stats set fund_id='%s', end_date='%s' ,sharperatio_incep ='%s' where id='%s'"%(str_fund_id,dt_end_date,long_sharpe,str_id)
print(sql)
try:
cur.execute(sql)
conn.commit()
exceptExceptionase:
print(e.message)
#处理年份数据
iflen(sharpe_y)>=1:
sql="update fund_riskadjret_stats set sharperatio_1y='%s', sortinoratio_1y='%s' , sortinoratio_MAR_1y='%s' where id='%s'"%(sharpe_y[0],sortino_y[0],sortion_ratio_y[0],str_id)
print(sql)
cur.execute(sql)
iflen(sharpe_y)>=2:
sql="update fund_riskadjret_stats set sharperatio_2y='%s' , sortinoratio_2y='%s', sortinoratio_MAR_2y='%s' where id='%s'"%(sharpe_y[1],sortino_y[1],sortion_ratio_y[1],str_id)
print(sql)
cur.execute(sql)
iflen(sharpe_y)>=3:
sql="update fund_riskadjret_stats set sharperatio_3y='%s', sortinoratio_3y='%s' ,sortinoratio_MAR_3y='%s' where id='%s'"%(sharpe_y[2],sortino_y[2],sortion_ratio_y[2],str_id)
print(sql)
cur.execute(sql)
iflen(sharpe_y)>=4:
sql="update fund_riskadjret_stats set sharperatio_4y='%s', sortinoratio_4y='%s', sortinoratio_MAR_4y='%s' where id='%s'"%(sharpe_y[3],sortino_y[3],sortion_ratio_y[3],str_id)
print(sql)
cur.execute(sql)
iflen(sharpe_y)>=5:
sql="update fund_riskadjret_stats set sharperatio_5y='%s', sortinoratio_5y='%s', sortinoratio_MAR_5y='%s' where id='%s'"%(sharpe_y[4],sortino_y[4],sortion_ratio_y[4],str_id)
sql1="UPDATE fund_count fc inner join fund_riskadjret_stats t2 on fc.fund_id=t2.fund_id and fc.end_date=t2.end_date and t2.fund_id='%s' and t2.end_date='%s' SET fc.sharperatio_1y=t2.sharperatio_1y, fc.sharperatio_2y=t2.sharperatio_2y, fc.sharperatio_3y=t2.sharperatio_3y , fc.sharperatio_4y=t2.sharperatio_4y, fc.sharperatio_5y=t2.sharperatio_5y , fc.sharperatio_incep=t2.sharperatio_incep "%(fund_id,enddate)