Fiquei cético acerca do emprego do OptionalDouble para a conversão numérica para double:
this.avaliacao = OptionalDouble.of(Double.valueOf(dadosSerie.avaliacao())).orElse(0);
Para comprovar, testei no jshell e obtive as seguintes saídas:
jshell> java.util.OptionalDouble.of(Double.valueOf("N/A")).orElse(0);
| Exception java.lang.NumberFormatException: For input string: "N/A"
| at FloatingDecimal.readJavaFormatString (FloatingDecimal.java:2054)
| at FloatingDecimal.parseDouble (FloatingDecimal.java:110)
| at Double.parseDouble (Double.java:651)
| at Double.valueOf (Double.java:614)
| at (#1:1)
jshell> java.util.OptionalDouble.of(Double.valueOf(null)).orElse(0);
| Exception java.lang.NullPointerException: Cannot invoke "String.trim()" because "in" is null
| at FloatingDecimal.readJavaFormatString (FloatingDecimal.java:1838)
| at FloatingDecimal.parseDouble (FloatingDecimal.java:110)
| at Double.parseDouble (Double.java:651)
| at Double.valueOf (Double.java:614)
| at (#2:1)
Aparentemente o emprego do OptionalDouble não substitui o da tratativa de exceções.