def findPattern(commodity, crypto, start, end, interval): dfweekly = arrano.correlations(commodity, crypto, start, end, interval)[1] dfData = arrano.correlations(commodity, crypto, start, end, interval)[0] count = 0 avg_skips = [] index_high = [] for i in range(0,dfweekly.shape[0]-1): if dfweekly.iloc[i]['weekframe'] >= 0.5: while dfweekly.iloc[i+count+1]['weekframe'] <= 0.5 and i+count+1<dfweekly.shape[0]-1: #Loop runs till the final entry only count = count +1 avg_skips.append(count) index_high.append(i) count = 0 trippledays = [] weekframe = [] for i in index_high: trippledays.append(dfData.iloc[i*3]['trippledays']) weekframe.append(dfweekly.iloc[i]['weekframe']) df = pd.DataFrame().assign(tripple = trippledays, week = weekframe) array =[] for i in range(0, df.shape[0]): if df.iloc[i]['tripple'] == 1: array.append(df.iloc[i]['week']) #print(df) #print (sum(array)/len(array)) #print(sum(avg_skips)/len(avg_skips)) #print(weekframe) return(sum(avg_skips)/len(avg_skips))
def rawData(): commodity = request.form['comname'] crypto = request.form['cryname'] start = request.form['startday'] end = request.form['endday'] interval = request.form['interval'] cor_type = request.form['cor_type'] arrano.correlations(commodity, crypto, start, end, interval, cor_type).savefig('static/price.png') arrano.returns_graph(commodity, crypto, start, end, interval, cor_type).savefig('static/returns.png') return render_template("kviewData.html", column_names=df_commodity.columns.values, column_names_1=df_crypto.columns.values, row_data=list(df_commodity.values.tolist()), row_data_1=list(df_crypto.values.tolist()), zip = zip)
def inputting(commodity, crypto, start, end, interval): dfCorr = arrano.correlations(commodity, crypto, start, end, interval) dfChanges = helper(commodity, crypto, start, end, interval) dfCorr = dfCorr.drop(dfCorr.index[-1:]) dfavgPrice_change = avgPrices(commodity, crypto, start, end, interval) dfavgPrice_change = dfavgPrice_change.drop(dfavgPrice_change.index[-1:]) dfHighLow = getBestTrades(commodity, crypto, start, end, interval) dfHighLow = dfHighLow.drop(dfHighLow.index[-1:]) data = pd.concat([dfCorr, dfChanges, dfavgPrice_change, dfHighLow], axis = 1) print(data) indexes = [] data = data[(data['weekly']>=0.5) | (data['weekly']<=-0.5)] data = data[(data['biweekly']>=0.5) | (data['biweekly']<=-0.5)] positive_to_positive = [] positive_to_negative = [] negative_to_positive = [] negative_to_negative = [] for index, row in data.iterrows(): if 0.5<row['weekly'] and 0.5<row['biweekly']: positive_to_positive.append(index) elif row['weekly']<-0.5 and row['biweekly']<-0.5: positive_to_negative.append(index) elif row['weekly']<-0.5 and row['biweekly']>0.5: negative_to_positive.append(index) else: negative_to_negative.append(index) #print(data.iloc[i]['weekly']) print(negative_to_negative) print(negative_to_positive) print(positive_to_negative) print(positive_to_positive)
def correlations_analysis(commodity, crypto, start, end, interval): corr = arrano.correlations(commodity, crypto, start, end, interval) positive_relation_consecutive = [] negative_relation_consecutive = [] relations_change_inverse = [] no_imp_change = [] for i in range(0,len(corr)-1): if corr[i]>0.5: c = 1 while corr[i+c]>0.5: c = c +1 positive_relation_consecutive.append(c) c = 1 elif corr[i]<-0.5: c = 1 while corr[i+c]<-0.5: c = c+1 negative_relation_consecutive.append(c) c = 1 print(sum(positive_relation_consecutive)/len(corr)) print(negative_relation_consecutive) print(no_imp_change) print(len(corr))
def final(commodity, crypto, start, end, interval): skips = arrano_new.findPattern(commodity, crypto, start, end, interval) #Returns the average skips before prices highly correlated. skips = round(skips) dfData = arrano.correlations(commodity, crypto, start, end, interval)[0] # Gives 9 day correlation and 3 day correlations df1 = arrano.crypto_p(crypto, start, end) # Rteurns a dataframe of OHLC values of crypto df2 = arrano.yahoo_fina(commodity, start, end, interval) # Rteurns a dataframe of OHLC values of crypto df3 = avgCrypto(commodity, crypto, start, end, interval) # Rteurns a dataframe of average prices of crypto for a 9 day range df4 = trader.getBestTrades(commodity, crypto, start, end, interval) # Returns a data frame of High and Low prices of crypto for a 9 day range. cryArrayT = [] comArrayT = [] index_date = [] """ Running a loop on the dataset using the average skips to find trading weeks. """ for i in range(9, df1.shape[0] - df1.shape[0]%(9*skips), skips*9): #Running loop till values divisible by 9 and skips. cryArrayT.append((df1.iloc[i +2]['closePriceUsd']-df1.iloc[i]['closePriceUsd'])/df1.iloc[i+2]['closePriceUsd']) comArrayT.append((df2.iloc[i +2]['close']-df2.iloc[i]['close'])/df2.iloc[i +2]['close']) df = pd.DataFrame().assign(cryT = cryArrayT, comT = comArrayT, tripplesCorr = dfData[['trippledays']]) semiPredict = [] """ Finding the change percentage by multiplying correlation value and change in price in the 3 day time frame. """ for i in range(0, df.shape[0]): if df.iloc[i]['tripplesCorr'] > 0 and df.iloc[i]['cryT']>0: trade = df.iloc[i]['cryT']*df.iloc[i]['tripplesCorr'] semiPredict.append(trade) index_date.append(i) print(len(semiPredict)) final = [] c = 0 """ Using the index of trading week, find the previous week average and predict deviated prices based on the calculated changes. """ for i in index_date: trades = (df3.iloc[(i-1)*skips]['crypto']*semiPredict[c]) + df3.iloc[(i-1)*skips]['crypto'] final.append(trades) c = c+1 lowCry = [] highCry = [] """ Getting trading week high and low prices to understand whether prediction lies in range. """ for i in index_date: lowCry.append(df4.iloc[i*skips]['lowCrypto']) highCry.append(df4.iloc[i*skips]['highCrypto']) dataFrame = pd.DataFrame().assign(tradesFinal = final, lowWeek = lowCry, highWeek = highCry) fig, ax = plt.subplots() ax.set_xlabel('Date') ax.set_ylabel('Prices') ax.plot(dataFrame['lowWeek'], label = 'low') ax.plot(dataFrame['highWeek'], label = 'high') ax.plot(dataFrame['tradesFinal'], label = 'predicted') plt.legend(loc="upper left") plt.show()
def dualdayCorr(commodity, crypto, start, end, interval): df1 = avgPrices(commodity, crypto, start, end, interval) df2 = arrano.correlations(commodity, crypto, start, end, interval) data = pd.concat([df1, df2], axis = 1, sort = False) print(data)