国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

0 前言

?? 優(yōu)質(zhì)競(jìng)賽項(xiàng)目系列,今天要分享的是

?? 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng)

該項(xiàng)目較為新穎,適合作為競(jìng)賽課題方向,學(xué)長(zhǎng)非常推薦!

??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分)

  • 難度系數(shù):3分
  • 工作量:3分
  • 創(chuàng)新點(diǎn):4分

?? 更多資料, 項(xiàng)目分享:

https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-789233.html

1 課題背景

基于大數(shù)據(jù)的股票可視化分析平臺(tái)設(shè)計(jì),對(duì)股票數(shù)據(jù)進(jìn)行預(yù)處理,清洗以及可視化分析,同時(shí)設(shè)計(jì)了軟件界面。

2 實(shí)現(xiàn)效果

價(jià)格可視化
互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java
魔梯訪問與指標(biāo)計(jì)算

互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java
聚類分析
互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java

3 設(shè)計(jì)原理

QTCharts

簡(jiǎn)介

QtCharts是Qt自帶的組件庫(kù),其中包含折線、曲線、餅圖、棒圖、散點(diǎn)圖、雷達(dá)圖等各種常用的圖表。而在地面站開發(fā)過程中,使用折線圖可以對(duì)無人機(jī)的一些狀態(tài)數(shù)據(jù)進(jìn)行監(jiān)測(cè),更是可以使用散點(diǎn)圖來模擬飛機(jī)所在位置,實(shí)現(xiàn)平面地圖的感覺。

使用Qt
Charts繪制,大概可以分為四個(gè)部分:數(shù)據(jù)(QXYSeries)、圖表(QChart)、坐標(biāo)軸(QAbstractAXis)和視圖(QChartView)。這里就不一一給大家介紹了,下面給大家說一下QtCharts的配置安裝。

QtCharts模塊的C++類

互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java

arma模型預(yù)測(cè)

簡(jiǎn)介

ARMA模型,又稱為ARMA
(p,q)模型。其核心思想就是當(dāng)前正如名字所顯示的,整個(gè)模型的核心就是要確定p和q這兩個(gè)參數(shù)。其中,p決定了我們要用幾個(gè)滯后時(shí)期的價(jià)格數(shù)據(jù),而q決定了我們要用幾個(gè)滯后時(shí)期的預(yù)測(cè)誤差。

互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java

簡(jiǎn)單來說,ARMA模型做了兩件事。一是基于趨勢(shì)理論,用歷史數(shù)據(jù)來回歸出一個(gè)當(dāng)前的價(jià)格預(yù)測(cè),這個(gè)預(yù)測(cè)反映了自回歸的思想。但是這個(gè)預(yù)測(cè)必然是有差異的,所以ARMA模型根據(jù)歷史的預(yù)測(cè)誤差也回歸出一個(gè)當(dāng)前的誤差預(yù)測(cè),這個(gè)預(yù)測(cè)反映了加權(quán)平均的思想。用價(jià)格預(yù)測(cè)加上誤差預(yù)測(cè)修正,才最終得到一個(gè)理論上更加精確的最終價(jià)格預(yù)測(cè)。

比起簡(jiǎn)單的自回歸模型或者以時(shí)間為基礎(chǔ)的簡(jiǎn)單趨勢(shì)預(yù)測(cè)模型,ARMA模型最大的優(yōu)勢(shì),在于綜合了趨勢(shì)理論和均值回歸理論,理論上的精確度會(huì)比較高。

    

    '''
        自回歸滑動(dòng)平均模型
    '''
    from statsmodels.tsa.arima_model import ARMA
    from itertools import product


?     

```
def myARMA(data):
    p = range(0, 9)
    q = range(0, 9)
    parameters = list(product(p, q))  # 生成(p,q)從(0,0)到(9,9)的枚舉
    best_aic = float('inf')
    result = None
    for param in parameters:
        try:
            model = ARMA(endog=data, order=(param[0], param[1])).fit()
        except ValueError:
            print("參數(shù)錯(cuò)誤:", param)
            continue
        aic = model.aic
        if aic < best_aic:  # 選取最優(yōu)的aic
            best_aic = model.aic
            result = (model, param)
    return result
```


K-means聚類算法

基本原理

k-Means算法是一種使用最普遍的聚類算法,它是一種無監(jiān)督學(xué)習(xí)算法,目的是將相似的對(duì)象歸到同一個(gè)簇中。簇內(nèi)的對(duì)象越相似,聚類的效果就越好。該算法不適合處理離散型屬性,但對(duì)于連續(xù)型屬性具有較好的聚類效果。

聚類效果判定標(biāo)準(zhǔn)

使各個(gè)樣本點(diǎn)與所在簇的質(zhì)心的誤差平方和達(dá)到最小,這是評(píng)價(jià)k-means算法最后聚類效果的評(píng)價(jià)標(biāo)準(zhǔn)。

互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java

算法實(shí)現(xiàn)步驟

1)選定k值

2)創(chuàng)建k個(gè)點(diǎn)作為k個(gè)簇的起始質(zhì)心。

3)分別計(jì)算剩下的元素到k個(gè)簇的質(zhì)心的距離,將這些元素分別劃歸到距離最小的簇。

4)根據(jù)聚類結(jié)果,重新計(jì)算k個(gè)簇各自的新的質(zhì)心,即取簇中全部元素各自維度下的算術(shù)平均值。

5)將全部元素按照新的質(zhì)心重新聚類。

6)重復(fù)第5步,直到聚類結(jié)果不再變化。

7)最后,輸出聚類結(jié)果。

算法缺點(diǎn)

雖然K-Means算法原理簡(jiǎn)單,但是有自身的缺陷:

1)聚類的簇?cái)?shù)k值需在聚類前給出,但在很多時(shí)候中k值的選定是十分難以估計(jì)的,很多情況我們聚類前并不清楚給出的數(shù)據(jù)集應(yīng)當(dāng)分成多少類才最恰當(dāng)。

2)k-means需要人為地確定初始質(zhì)心,不一樣的初始質(zhì)心可能會(huì)得出差別很大的聚類結(jié)果,無法保證k-means算法收斂于全局最優(yōu)解。

3)對(duì)離群點(diǎn)敏感。

4)結(jié)果不穩(wěn)定(受輸入順序影響)。

5)時(shí)間復(fù)雜度高O(nkt),其中n是對(duì)象總數(shù),k是簇?cái)?shù),t是迭代次數(shù)。

算法實(shí)現(xiàn)關(guān)鍵問題說明

K值的選定說明

根據(jù)聚類原則:組內(nèi)差距要小,組間差距要大。我們先算出不同k值下各個(gè)SSE(Sum of
squared
errors)值,然后繪制出折線圖來比較,從中選定最優(yōu)解。從圖中,我們可以看出k值到達(dá)5以后,SSE變化趨于平緩,所以我們選定5作為k值。

互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng),python,java

初始的K個(gè)質(zhì)心選定說明

初始的k個(gè)質(zhì)心選定是采用的隨機(jī)法。從各列數(shù)值最大值和最小值中間按正太分布隨機(jī)選取k個(gè)質(zhì)心。

關(guān)于離群點(diǎn)

離群點(diǎn)就是遠(yuǎn)離整體的,非常異常、非常特殊的數(shù)據(jù)點(diǎn)。因?yàn)閗-
means算法對(duì)離群點(diǎn)十分敏感,所以在聚類之前應(yīng)該將這些“極大”、“極小”之類的離群數(shù)據(jù)都去掉,否則會(huì)對(duì)于聚類的結(jié)果有影響。離群點(diǎn)的判定標(biāo)準(zhǔn)是根據(jù)前面數(shù)據(jù)可視化分析過程的散點(diǎn)圖和箱線圖進(jìn)行判定。

4 部分核心代碼

?

#include "kmeans.h"
#include "ui_kmeans.h"

kmeans::kmeans(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::kmeans)
{
    this->setWindowFlags(Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
    ui->setupUi(this);
}

kmeans::~kmeans()
{
    delete ui;
}

void kmeans::closeEvent(QCloseEvent *)
{
    end_flag=true;
}

void kmeans::on_pushButton_clicked()
{
    end_flag=false;
    //讀取數(shù)據(jù)
    QFile sharpe("sharpe.txt");
    sharpe.open(QIODevice::ReadOnly|QIODevice::Text);
    std::vector<std::array<double,2>> data;
    while(!sharpe.atEnd())
    {
        QStringList linels=QString(sharpe.readLine()).split(',');
        qreal mean=linels[3].toDouble();
        qreal sd=linels[4].toDouble();
        if(mean>-0.06&&mean<0.06&&sd<0.12)data.push_back({mean,sd});
    }
    std::random_shuffle(data.begin(),data.end());
    sharpe.close();
    //聚類
    ui->pushButton->setText("聚類中...");
    QApplication::processEvents();
    auto labels=std::get<1>(dkm::kmeans_lloyd(data,9));
    ui->pushButton->setText("開始");
    QApplication::processEvents();
    //作圖
    QChart *chart = new QChart();
    //chart->setAnimationOptions(QChart::SeriesAnimations);
    //chart->legend()->setVisible(false);

    QList<QScatterSeries*> serieses;
    QList<QColor> colors{
        QColor(Qt::black),
                QColor(Qt::cyan),
                QColor(Qt::red),
                QColor(Qt::green),
                QColor(Qt::magenta),
                QColor(Qt::yellow),
                QColor(Qt::gray),
                QColor(Qt::blue),
                QColor("#A27E36")
    };
    for(int i=0;i<9;i++){
        QScatterSeries *temp = new QScatterSeries();
        temp->setName(QString::number(i));
        temp->setColor(colors[i]);
        temp->setMarkerSize(10.0);
        serieses.append(temp);
        chart->addSeries(temp);
    }
    chart->createDefaultAxes();

    /*
                             v4
-------------------------------------------------------------
      Percentiles      Smallest
 1%     -.023384        -.35985
 5%    -.0115851       -.349373
10%    -.0078976       -.325249       Obs             613,849
25%    -.0037067       -.324942       Sum of Wgt.     613,849

50%     .0000567                      Mean           .0004866
                        Largest       Std. Dev.      .0130231
75%     .0041332        1.28376
90%     .0091571        1.52169       Variance       .0001696
95%     .0132541        2.73128       Skewness       95.21884
99%     .0273964        4.56203       Kurtosis       28540.15

                             v5
-------------------------------------------------------------
      Percentiles      Smallest
 1%     .0073016       4.68e-07
 5%     .0112397       7.22e-07
10%     .0135353       7.84e-07       Obs             613,849
25%     .0180452       8.21e-07       Sum of Wgt.     613,849

50%     .0248626                      Mean           .0282546
                        Largest       Std. Dev.      .0213631
75%     .0343356         3.2273
90%     .0458472        3.32199       Variance       .0004564
95%     .0549695        4.61189       Skewness       68.11651
99%     .0837288        4.75981       Kurtosis       11569.69

     */

    QValueAxis *axisX = qobject_cast<QValueAxis *>(chart->axes(Qt::Horizontal).at(0));
    axisX->setRange(-0.06,0.06);
    axisX->setTitleText("平均值");
    axisX->setLabelFormat("%.2f");

    QValueAxis *axisY = qobject_cast<QValueAxis *>(chart->axes(Qt::Vertical).at(0));
    axisY->setRange(0,0.12);
    axisY->setTitleText("標(biāo)準(zhǔn)差");
    axisY->setLabelFormat("%.2f");

    ui->widget->setRenderHint(QPainter::Antialiasing);
    ui->widget->setChart(chart);

    int i=0;
    auto labelsiter=labels.begin();
    for(auto &&point : data){
        if(end_flag)return;
        serieses[*labelsiter]->append(QPointF(point[0],point[1]));
        i++;
        labelsiter++;
        if(i%1000==0){
            QApplication::processEvents();
        }
    }
}

void kmeans::on_pushButton_2_clicked()
{
    end_flag=true;
}

5 最后

?? 更多資料, 項(xiàng)目分享:

https://gitee.com/dancheng-senior/postgraduate

到了這里,關(guān)于互聯(lián)網(wǎng)加競(jìng)賽 基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包