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))
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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))
Beispiel #5
0
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()
Beispiel #6
0
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)