#!/bin/bash
## This file provides the submissions for implementing the k-NN algorithm 
# to acquire the refined furfine output and conduct the testing procedures on the


echo "Running other refinements script for testing the various other refinements of the Furfine Algorithm as presented in Rempel (2016), 'Improving Overnight Loan Identification in Payment Systems'";
echo "To be run only after master_command_file has been applied";
echo "Authored by Mark Rempel";


set -e

PATH=$PWD/bin:$PATH


# 1) Apply Furfine Algorithm various refienements

echo "----";
echo "Payments Data presumed available";

Matcall_serial FurfineControlScript 'Inputs/paymentsdata.csv' RoundIntParameters.txt 'FurfineOutput/RoundIntFurfineOutputDummyData';
echo "Rounded interest refinement - Loan Identification complete";

Matcall_serial FurfineControlScript 'Inputs/paymentsdata.csv' ExactIntParameters.txt 'FurfineOutput/ExactIntFurfineOutputDummyData';
echo "Exact rounded interest refinement - Loan Identification complete";
Matcall_serial FurfineControlScript 'Inputs/paymentsdata.csv' EndOfDayParameters.txt 'FurfineOutput/EndOfDayFurfineOutputDummyData';
echo "End of Day refinement - Loan Identification complete";

# convert each to  
echo "furfdat <- read.csv('FurfineOutput/RoundIntFurfineOutputDummyData.csv', header=F); names(furfdat) <- c('date', 'time', 'value', 'sender', 'receiver', 'FXrate', 'ONrate', 'FXind','ONind', 'transnum', 'date_r', 'time_r', 'value_r', 'sender_r', 'receiver_r', 'FXrate_r', 'ONrate_r', 'FXind_r', 'ONind_r', 'transnum_r', 'furf_rate', 'mltpl'); save(furfdat, file='FurfineOutput/RoundIntFurfineOutputDummyData.RData');" > convertcsvToRData.R

echo "convert csv to RData";

Rcall_serial convertcsvToRData.R

echo "furfdat <- read.csv('FurfineOutput/ExactIntFurfineOutputDummyData.csv', header=F); names(furfdat) <- c('date', 'time', 'value', 'sender', 'receiver', 'FXrate', 'ONrate', 'FXind','ONind', 'transnum', 'date_r', 'time_r', 'value_r', 'sender_r', 'receiver_r', 'FXrate_r', 'ONrate_r', 'FXind_r', 'ONind_r', 'transnum_r', 'furf_rate', 'mltpl'); save(furfdat, file='FurfineOutput/ExactIntFurfineOutputDummyData.RData');" > convertcsvToRData.R


echo "convert csv to RData for Exact Int refinement";


Rcall_serial convertcsvToRData.R

echo "furfdat <- read.csv('FurfineOutput/EndOfDayFurfineOutputDummyData.csv', header=F); names(furfdat) <- c('date', 'time', 'value', 'sender', 'receiver', 'FXrate', 'ONrate', 'FXind','ONind', 'transnum', 'date_r', 'time_r', 'value_r', 'sender_r', 'receiver_r', 'FXrate_r', 'ONrate_r', 'FXind_r', 'ONind_r', 'transnum_r', 'furf_rate', 'mltpl'); save(furfdat, file='FurfineOutput/EndOfDayFurfineOutputDummyData.RData');" > convertcsvToRData.R


echo "convert csv to RData for End of day refinement";

Rcall_serial convertcsvToRData.R


echo "Csv files of refinement output converted to RData";

# Testing


Rmatlab_call RempelBootstrapTest.R "BootData/ResampledPayments_NumLendDays_1NumReturnDays_5_Numboots_15_1.RData RoundIntPermutationTestOutputDummyDataNumLend15_1.RData Hendry 0 1 60000 1000000 0.5 0.5 IntRound" 

echo "Interest Round Refinement testing complete";

Rmatlab_call RempelBootstrapTest.R "BootData/ResampledPayments_NumLendDays_1NumReturnDays_5_Numboots_15_1.RData ExactIntPermutationTestOutputDummyDataNumLend15_1.RData Hendry 0 1 60000 1000000 0.5 0.5 IntRoundExact"  

echo "Exact Interest Round Refinement testing complete";

Rmatlab_call RempelBootstrapTest.R "BootData/ResampledPayments_NumLendDays_1NumReturnDays_5_Numboots_15_1.RData EndOfDayPermutationTestOutputDummyDataNumLend15_1.RData Hendry 0 1 60000 1000000 0.5 0.5 EndOfDay"  

echo "End of day refinement testing complete";

# 5) Summarize Results - Generate fdr statistics
Rcall_serial SummarizeTestResults_Wrapper.R "Results/RoundIntPermutationTestOutputDummyDataNumLend15_1.RData BootData/ResampledPayments_NumLendDays_1NumReturnDays_5_Numboots_15_1.RData FurfineOutput/RoundIntFurfineOutputDummyData.RData RoundIntTypeI 1 Inputs/paymentsdata_rlvts.RData"

echo "---";
echo "Summarized Rounded interest";

Rcall_serial SummarizeTestResults_Wrapper.R "Results/ExactIntPermutationTestOutputDummyDataNumLend15_1.RData BootData/ResampledPayments_NumLendDays_1NumReturnDays_5_Numboots_15_1.RData FurfineOutput/ExactIntFurfineOutputDummyData.RData ExactIntTypeI 1 Inputs/paymentsdata_rlvts.RData"

echo "---";
echo "Summarized Exact Rounded interest";



Rcall_serial SummarizeTestResults_Wrapper.R "Results/EndOfDayPermutationTestOutputDummyDataNumLend15_1.RData BootData/ResampledPayments_NumLendDays_1NumReturnDays_5_Numboots_15_1.RData FurfineOutput/EndOfDayFurfineOutputDummyData.RData EndOfDayTypeI 1 Inputs/paymentsdata_rlvts.RData"

echo "---";
echo "Summarized End of Day";


echo "Summaries of the testing of refinements is complete";

exit 0

