Frage

Ich bin sicher, dass es ein offensichtlicher Fehler mit meiner Logik, aber ich kann nicht zu arbeiten scheinen, was ich falsch mache. Ganz einfach habe ich eine Array-Liste von Sicherheitscodes, ich mag die Korrelation zwischen jeder Kombination von Sicherheitscodes berechnen. Mein Code ist wie folgt:

private void crossCorr(ArrayList<String> codes, HashMap<String, Stock> stockMap){

    // iterate through the codes list and get all the cross correlations:

    Iterator<String> itr1 = codes.iterator();
    while(itr1.hasNext()){
        String code1 = itr1.next();
System.out.println("  -----  " +code1);
        Iterator<String> itr2 = codes.iterator();
        ArrayList<Double> corrs = new ArrayList<Double>();
        HashMap<String, Double> codeCorr = new HashMap<String, Double>();
        String code2="";
        double corr=-2;
        while(itr2.hasNext()){
            code2 = itr2.next();
            Maths calcs = new Maths();      
            corr = calcs.getCorrelation(stockMap.get(code1).getRorHistory(), stockMap.get(code2).getRorHistory());
            corrs.add(corr);    // we order this list and then use this ordered list
                                // to find the codes for the stocks with the highest
                                // correlation for any given stock
            codeCorr.put(code2, corr);
            System.out.println(code1+" - "+code2+" - Correlation is "+corr);
        }
        orderCorrs(6, codeCorr, corrs, code1);
    }

}

Der Ausgang I erhalten ist -

----- GOOG
GOOG - GOOG - Korrelation ist 1,0000000000000002
GOOG - YHOO - Korrelation ist ,6986623807707519
GOOG - MSFT - Korrelation ist ,7275411317567286
GOOG - CSCO - Korrelation ist ,8122979333663799
GOOG - AAPL - Korrelation ist ,8217785260604609
GOOG - ADBE - Korrelation ist ,6102679356472099
GOOG - DISH - Korrelation ist ,644852624453125
GOOG - NSOL - Korrelation ist 0,11600387177879072
GOOG - SBUX - Korrelation ist ,6694306410719489
GOOG - PSFT - Korrelation ist -0,09921822861087544
GOOG - XOM - Korrelation ist ,6728272039489009
GOOG - WMT - Korrelation ist ,4004364090315347
GOOG - IBM - Die Korrelation ist ,7559988282095168
GOOG - JPM - Korrelation ist ,7085525367336528
GOOG - DNA - Korrelation ist ,13628949379947575
GOOG - HPQ - Korrelation ist ,7819350018750656
GOOG - KO - Korrelation ist ,5700932682157461
GOOG - VZ - Korrelation ist ,737881573641585
GOOG - INTC - Korrelation ist ,7654127298771953
GOOG - SPY - Korrelation ist ,8042488406758052
GOOG - PEP - Korrelation ist ,6297924741882344
GOOG - WFC - Korrelation ist ,5064491351161948
GOOG - ABT - Korrelation ist ,238752389446595
GOOG - QCOM - Korrelation ist ,726356709262025
GOOG - COP - Korrelation ist ,570604981251932
GOOG - MCD - Korrelation ist ,5434872575410538

Aber ich nie bekommen

YHOO - GOOG -. Die Korrelation ist .... usw. usw.

Ich bin sicher, dass dies ein einfacher Fehler ist und aus irgendeinem Grund bin ich Kommissionierung es nicht auf.

Ich weiß, ich mache zweimal die Korrelationsberechnungen, ich dies ein Mal beheben werde ich diesen Teil bekommen arbeiten, wie beabsichtigt.

Bitte lassen Sie mich wissen, wenn ich weitere Informationen benötigen bieten.

War es hilfreich?

Lösung

Eine schnelle Testanwendung entfernt Verweise auf Code wir nicht wissen, über funktioniert gut für mich.

Ist es möglich, dass etwas eine ungeprüfte Ausnahme zu werfen, die Sie Handhabung nicht? Wenn Sie einen kurzen posten könnte aber vollständig Programm demonstriert das Problem, das wäre immens helfen. Nehmen Sie eine Kopie Ihres vollständigen Projekt, und nur Bits entfernen (beispielsweise Hartcodierung Daten und Rückgabewerte), bis Sie nichts anderes weg, ohne das Problem geht weg nehmen. An diesem Punkt können Sie auch das Problem haben, für sich selbst, natürlich gefunden.

By the way, wenn Sie mit Java 1.5 oder höher, dann ist es einfacher, eine erweiterte for-Schleife zu verwenden, als einen Iterator explizit verwenden. Sie würden tun:

for (String code1 : codes) {
    // ...
    for (String code2 : codes) {
        // ...
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top