私は最近、一見本物の株価データのように見えるグラフを表示したかったので、ランダムな偽の株価データを生成する Javascript コードをいくつか書きました。これが「適切に」行われる方法を説明するリソースがあるかどうか、つまり、実際の株式データで見られるのと同じパターンを持つ現実的な外観のデータが得られるかどうか疑問に思っていましたか?
11 に答える
単純なアルゴリズムは、特定の期間 (たとえば、1 日) 内に株式がどれだけ変化できるかを制限する単純なボラティリティ数値を使用することです。数値が高いほど不安定です。したがって、毎日次のように新しい価格を計算できます。
rnd = Random_Float(); // generate number, 0 <= x < 1.0
change_percent = 2 * volatility * rnd;
if (change_percent > volatility)
change_percent -= (2 * volatility);
change_amount = old_price * change_percent;
new_price = old_price + change_amount;
安定した株式のボラティリティはおそらく 2% です。10% のボラティリティは、かなり大きなスイングを示します。
完璧ではありませんが、かなりリアルに見えるかもしれません。
サンプル
私はFractal Market Analysis (つい最近手放したばかり) という本を持っていて、株価の統計的性質について述べていました。投資にはあまり役に立ちませんが、役に立ったかもしれません。
望ましい統計的特性を持つランダムなプロセスをモデル化するものが必要になります。ランダム プロセスの 2 つの例は、ガウス ホワイト ノイズとウィーナー プロセスです(後者はブラウン運動をモデル化し、小さなステップでのランダム ウォークの極限でもあります)。
フラクタル市場分析の本に記憶が正しければ、株価の対数はいわゆる「1/fノイズ」や「ピンクノイズ」に似た性質を持つという主張があったので、ピンクノイズの記事を探してみてください。ソフトウェアでの生成。(そして、結果を取り、それらを e^x にプラグインします) (編集: おっと、記憶違いでした。分数ブラウン運動のように見えます)
(これは、フラクタル ランダム プロセスの研究の背後にある歴史、およびナイル川の氾濫が株式市場とどのように関係しているかについて語っている読みやすいエッセイです。残念ながら、技術的なデータには触れていませんが、検索用語があるかもしれません。あなたを始めることができるハースト指数のように。)
複数の一連の在庫データが必要な場合、問題はさらに難しくなります。(この場合、国の経済、産業の種類など、さまざまな共通要因に依存する株式間に相関関係があります) どのようにそれを行うことができるかわかりませんが、最初に 1 つのランダムなプロセスから始めます。
# The following is an adaptation from a program shown at page 140 in
# "Stochastic Simulations and Applications in Finance",
# a book written by Huynh, Lai and Soumaré.
# That program was written in MatLab and this one was written in R by me.
# That program produced many price paths and this one produces one.
# The latter is also somewhat simpler and faster.
# Y is the time period in years, for instance 1 (year)
# NbSteps is the number of steps in the simulation,
# for instance 250 (trading days in a year).
# DeltaY is the resulting time step.
# The computations shown implement the exact solution
# to the stochastic differential equation for
# the geometric Brownian motion modelling stock prices,
# with mean mu and volatility sigma, thus generating a stochastic price path
# such as that exhibited by stock prices when price jumps are rare.
PricePath <- function(Y,NbSteps,mu,sigma,InitPrice) {
DeltaY <- Y/NbSteps; SqrtDeltaY <- sqrt(DeltaY)
DeltaW <- SqrtDeltaY * rnorm(NbSteps)
Increments <- (mu-sigma*sigma/2)*DeltaY + sigma*DeltaW
ExpIncr <- exp(Increments)
PricePath <- cumprod(c(InitPrice,ExpIncr))
return(PricePath)
}
yahoo ファイナンスを見てみましょう。証券取引所とチャートからの無料の遅延データを提供しています。
フィードの使用に関する記事は次のとおりです: http://www.codeproject.com/KB/aspnet/StockQuote.aspx
JQuery が必要になるか、XMLHttpRequest を使用してサービスを利用できます。参考までに、CSV を処理するための JQuery 用のプラグインがあります: http://code.google.com/p/js-tables/
double price=2000;
while (true) {
double min = (price*-.02);
double max = (price*.02);
double randomNum = ThreadLocalRandom.current().nextDouble(min, max+1);
price=price+randomNum;
System.out.println(price);
}
それはジャバにあります。グラフを表示するには、結果を Excel 列にプロットするだけです。大量の値を使用して、Excel にプロットします。それが実際の株式データとどれほど似ているかを見るのは興味深いことです。