σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップ
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップ
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Python ロードマップ›モジュール 1 · クオンツのためのPython基礎›トピック 1.3·~30 分初級

文字列とf文字列

ロードマップ上の位置モジュール 1/11 · トピック 3/33
1.3 文字列とf文字列
—ラボスコア— / 100合計XP—連続日数—

文字は文字列

文字列(str)はテキストです。シングルクォートまたはダブルクォートで囲みます。意味は同じなので、どちらかに統一しましょう。バックスラッシュはエスケープの始まりで、\n は改行を表します。len() は文字数を数えます。文字列は変更できません(イミュータブル)。その場で書き換えるのではなく、新しい文字列を作ります。

symbol = "AAPL"
note = 'bid and ask'
print(symbol, len(symbol))  # AAPL 4
print(note)                 # bid and ask

インデックスとスライス

各文字には0から数えた位置があります。text[0] は先頭、text[-1] は末尾の文字です。スライス text[start:stop] は start から stop の手前までを取り出します。片側を空にすると、その端まで続きます。

# Indexing starts at 0; a slice stops before its end index
ticker = "AAPL.US"
print(ticker[0], ticker[-1])   # A S
print(ticker[:4], ticker[5:])  # AAPL US

テキストを整える・分割するメソッド

メソッドは値に結び付いた関数で、ドットを付けて呼び出します。元の文字列は変えず、新しい文字列を返します。strip() は前後の空白と改行を取り除き、upper() と lower() は大文字・小文字を変え、replace(old, new) は文字を置き換え、split(",") は行をカンマごとに区切ってリストにします。データフィードにはこうした行があふれています。

# Clean up a raw line from a data feed
raw = "  aapl,184.25,200 \n"
parts = raw.strip().split(",")
print(parts)             # ['aapl', '184.25', '200']
print(parts[0].upper())  # AAPL
print(float(parts[1]))   # 184.25
# join is the opposite of split; in tests for a piece of text
print("-".join(["AAPL", "MSFT"]))  # AAPL-MSFT
print("AAPL" in "AAPL,MSFT")       # True

f文字列で値を文章に埋め込む

開始のクォートの前に f を付け、{ と } の間に好きな式を書くと、Pythonが評価して結果を文字として埋め込みます。+ で文字をつなぎ、数値を手作業で変換する書き方に代わるものです。波かっこの中には、計算も含めて有効な式なら何でも書けます。

# f-strings put values straight into text
symbol, bid, ask = "AAPL", 184.25, 184.5
print(f"{symbol} {bid} x {ask}")       # AAPL 184.25 x 184.5
print(f"{symbol} spread {ask - bid}")  # AAPL spread 0.25

書式指定

波かっこの中のコロンの後ろに書く書式指定で、値の見た目を決めます。.2f は小数2桁、, は3桁区切り、+ は常に符号を表示、>8 は幅8で右寄せ、.1% は小数をパーセントで表示します。組み合わせも可能で、+,.2f は符号付き・区切り付き・小数2桁の金額になります。

# After the colon, a format spec controls the look
price, pnl, quantity = 184.5, 1234.5, 200
print(f"{price:.2f}")       # 184.50
print(f"{pnl:+,.2f}")       # +1,234.50
print(f"{quantity:>8d}|")   # "     200|"
print(f"{0.0123:.1%}")      # 1.2%
書式設定は表示のためだけに書式を適用した値は文字であり、もう数値ではありません。計算は数値のまま行い(整数と浮動小数点数を参照)、表示や保存で文字にする時点でだけ整形しましょう。

次は真偽値と比較です。トレードルールの判断はすべて、True と False の値で組み立てられます。

ラボ:採点される内容

  • quote_line で気配値を文字にする25点
  • signed_pnl で損益を符号付きで表示する25点
  • normalize_symbol でティッカーシンボルを整える25点
  • parse_fill でフィードの約定行を読み取る25点
エクスプローラー · lab-3-1
▾ lab-3-1
…
bash · ブラウザ内
learner@quantcraft:~/lab-3-1$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

このトピックをリセットしますか?

lab-3-1 の内容はすべてスターターファイルに戻り、ターミナルも消去されます。現在の解答は失われ、元に戻せません。

リセットされるもの
  • main.py → スターターコード
  • ターミナル履歴とテスト出力
  • 未提出の変更
保持されるもの
  • ラボの最高スコア
  • XPと連続日数
  • 講義の進捗とメモ

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、ロードマップでの現在地
アカウントを作成ログイン
または
GitHubで続ける