Da sind noch ein paar mehr Denkfehler drin - vorweg: Du bekommst weiterhin das Problem mit "wert". Also zerlegen wir das mal ...
Denkfehler 1: Wenn kein Radiobutton ausgewählt ist und der Nutzer direkt was in die Input-Box schreibt, fliegt es Dir schon um die Ohren.
Denkfehler 2: Du benötigst die Berechnung der jeweiligen Wege in zwei Richtungen: "top-down" und auch "bottom-up" (eintragen von oben nach unten wie auch unten nach oben; gerade bei Änderungen).
Denkfehler 3: Du wirst mehr Zeilen am Ende haben - womöglich mindestens neun! (damit ändert sich auch die Familie "tipp" je Checkbox [Du hast drei radios je "name"]) ^^
Ich weiß, was Du da machst - ich habe das selbst schon gebastelt.

Also vorweg ...
Verbesserungsvorschlag: Statt "value" für die "mehreren Werte" richtest Du jeweils ein data-* ein! Damit würde Dein Input so aussehen:
Code:
<input type="radio" onchange="getQuote(this)" name="tipp27" data-id="27" data-tendenz="1" data-quote="1.85">
Auf die Felder "id" und das Attribut "autocomplete" habe ich ganz verzichtet (lässt sich via data-* bereitsdarstellen). Zu "autocomplete": Finde ich eigentlich toll (denken auch wenigen dran), aber macht nur bei Texteingabefeldern Sinn. ^^ "name" habe ich - aufgrund "Kritik" vorweg - bereits um die ID erweitert. Das Verhalten ist identisch und die Gruppenzugehörigkeit je Zeile (= Tipp) ist gewahrt.
Du benötigst eigentlich nur EINE Funktion, die aufgerufen wird, wenn sich
a) bei den Radiobuttons was ändert
b) beim Eingabefeld unten was ändert
Demnach müsstest Du eigentlich nur (!) bei jeder Änderung ...
a) alle aktiven Checkboxen mit ihren data-* Attributen einsammeln
b) optional das Eingabefeld berücksichtigen
Das könnte dann z. B. (entschlackt) so aussehen ...
HTML:
<input type="radio" name="tipp27" data-id="27" data-tendenz="1" data-quote="1.85" /> 1.85
<input type="radio" name="tipp27" data-id="27" data-tendenz="0" data-quote="3.30" /> 3.30
<input type="radio" name="tipp27" data-id="27" data-tendenz="2" data-quote="4.00" /> 4.00
<input type="text" class="form-control btn-sm" name="points" id="setpoints_27" placeholder="z. B. 100" />
Code:
$(function()){
$("input[type=radio]").on('click', function(){
moeglicherGewinn(); // den habe ich für das Verständnis absichtlich so gesetzt!
});
$("input[id^='setpoints_']").on('input', function(){
moeglicherGewinn(); // Grund wie oben
});
}
Der HTML-Teil lässt sich auf diese Weise simpel erweitern - jede Zeile ist autark zu einer anderen. Das JavaScript dürfte in der Form alle Erweiterungen bereits abdecken - damit ist Dein Quellcode schon ordentlich "entlastet". Die Schreibweise ist - wie kommentiert - absichtlich so gewählt, um es verständlicher zu machen.
Sooo ... reden wir jetzt noch über die Funktion "moeglicherGewinn":
- diese holt alle aktiven Checkboxen und liest zugehörige data-* Attribute aus (weil für die Berechnung benötigt)
- berücksichtigt u. U. gesetzt Zahlen im jeweiligen Textfeld
Das ist jetzt nicht getestet, könnte aber so funktionieren ...
Code:
function moeglicherGewinn(){
$("input[name^='tipp']").each(function(){
var $obj = $(this),
id = $obj.data('id'), // hier steht jetzt "27" drin
tendenz = $obj.data('tendenz'),
quote = $obj.data('quote'),
setpoints = parseInt($("#setpoints_"+id).val(),10);
// ab hier dann Deine Berechnungen zzgl. Eintrag in das Textfeld, was rausspringt
});
}
Du hast daher immer (!) aktuelle Änderungen drin und keine Hektik mit Übergabewerten - empfinde ich als etwas komfortabler. Aber wie erwähnt - keine Gewähr auf Funktion bei Copy/Paste - das ist jetzt "mal eben" hier drin entstanden.
Quoten addieren sich und werden mit dem Einsatz multipliziert ...

... und der neuste Schrei ist eine "Versicherung" auf Tipps - das nur am Rande.
Viele Grüße und viel Erfolg.