σμ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.4·~30 分初級

真偽値と比較

ロードマップ上の位置モジュール 1/11 · トピック 4/33
1.4 真偽値と比較
—ラボスコア— / 100合計XP—連続日数—

TrueとFalse

真偽値(bool)の値は True と False のちょうど2つで、先頭は大文字です。トレードルールはどれも最後はこの値になります。「板は交差しているか」「この注文を出せるか」といった具合です。2つの値を比較すると真偽値が得られます。つまり ask > bid はまだ決定ではなく、保存・表示・組み合わせができる「値」です。

bid, ask = 184.25, 184.5
print(ask > bid)        # True
print(type(ask > bid))  # <class 'bool'>

比較演算子

Pythonでは ==(等しい)、!=(等しくない)、<、<=、>、>= で比較します。= 1つは代入であって比較ではありません。price = 5 は値を保存し、price == 5 は問いかけです。比較は連結でき、low <= price <= high は数学の書き方のまま両側を一度に確認します。

# Comparison operators give True or False
price = 184.4
print(price == 184.4)         # True
print(price != 184.25)        # True
print(184.25 <= price < 185)  # True (chained)

条件を組み合わせる:and、or、not

a and b は両方が真のときだけ True です。a or b は少なくとも一方が真なら True です。not a は値を反転します。組み合わせれば「市場が開いていて、銘柄が取引停止ではなく、資金がある」といった実際のルールを書けます。

# Combine conditions with and, or, not
market_open, halted, cash = True, False, 500.0
can_buy = market_open and not halted and cash >= 184.5
print(can_buy)               # True
print(halted or cash < 100)  # False

and と or は短絡評価を行います。答えが決まった時点でPythonは止まり、残りを評価しません。これはガードとして便利で、安全な確認を先に置けば、危険な確認は許される場合にしか実行されません。

# Short-circuit: the division never runs when quantity is 0
quantity = 0
print(quantity > 0 and 100 / quantity > 1)  # False

真偽の判定

どんな値も条件として使えます。0、0.0、空文字列 ""、None は偽として扱われ、ほぼそれ以外はすべて真です。bool(value) でPythonがどう解釈するかを確認できます。注意:quantity and price > 0 は False ではなく 0 を返すことがあるので、本物の bool が必要なときは比較を完全に書きましょう。

# Zero, empty text and None count as False
print(bool(0), bool(0.0), bool(""), bool(None))  # False False False False
print(bool(200), bool("AAPL"))                    # True True
条件そのものを返す比較はそれ自体が True か False です。True を返す if と False を返す別の分岐ではなく、return quantity > 0 と書きましょう。短くなり、食い違いも起きません。

floatの比較とNone

float同士の == は丸め誤差のため危険です(整数と浮動小数点数を参照)。「十分に等しい」には math.isclose を使いましょう。== は値を比べ、is は2つの名前がまったく同じオブジェクトを指すかを問います。is が必要なのは x is None、つまり「値がない」ことの確認だけです。

# Floats need a tolerance; None is tested with "is"
import math

print(0.1 + 0.2 == 0.3)              # False
print(math.isclose(0.1 + 0.2, 0.3))  # True
fill_price = None
print(fill_price is None)            # True

次は条件分岐です。真偽値によって、どのコードを実行するかを決めます(if、elif、else)。

ラボ:採点される内容

  • is_crossed で板の交差を検出する25点
  • within_band で価格が許容帯に入っているか確認する25点
  • can_trade で取引条件を組み合わせる25点
  • is_valid_order で注文を検証する25点
エクスプローラー · lab-4-1
▾ lab-4-1
…
bash · ブラウザ内
learner@quantcraft:~/lab-4-1$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

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

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

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

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

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

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