Program for calculating and ranking scores
Good things

I like the functional approach taken with this code, and that some ecmascript-6 features like arrow functions are used.

Suggestions

const vs let

It would be wise to default to using const for any variable that doesn't need to be re-assigned. If you later determine a value should be re-assigned then switch it to using let. This helps prevent accidental re-assignment in the future.

Use consistent indentation

Some lines appear to be indented with two spaces, while others are indented with four. It is wise to use uniform indentation throughout the code.

Use consistent line terminators

Many lines are terminated with a semi-colon but some are not. Unless you completely understand rules of Automatic semicolon insertion or are using a compiler/module bundler it is best to include line terminators. 

multiple calls to Object.keys() in loop

Let us take a look at the following block:


for (let i = 1; i &lt; Object.keys(scoreSeries).length; i++) {
  if (scoreSeries[Object.keys(scoreSeries)[i]] &gt; scoreSeries[key]) {
    rank++
  }
} 



For each iteration of the loop, Object.keys() is called twice. That function could be called once if the result is stored in a variable. 

const scoreKeys = Object.keys(scoreSeries)
for (let i = 1; i &lt; scoreKeys.length; i++) {
  if (scoreSeries[scoreKeys[i]] &gt; scoreSeries[key]) {
    rank++
  }
} 


The syntax could be simplified using a for...of loop:

const scoreKeys = Object.keys(scoreSeries)
for (const scoreKey of scoreKeys) {
  if (scoreSeries[scoreKey] &gt; scoreSeries[key]) {
    rank++
  }
} 


The whole function could be simplified with a more function approach using .filter():

//to calculate the ranking of each source
function calculateSourceRank(scoreSeries, key) {
    const scoreKeys = Object.keys(scoreSeries)
    return 1 + scoreKeys.filter(scoreKey =&gt; scoreSeries[scoreKey] &gt; scoreSeries[key]).length
}


A similar approach could be applied to calculateFinalRank()