σμ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.1·~45 دمبتدئ

صيغة Python وبرنامجك الأول

الموضع في المسارالوحدة 1 من 11 · الموضوع 1 من 33
1.1 صيغة Python وبرنامجك الأول
—درجة المختبر— / 100إجمالي XP—التتابع—

كيف يعمل برنامج Python

برنامج Python هو ملف نصي يتكوّن من عبارات. تقرؤه Python من الأعلى إلى الأسفل وتنفّذ عبارة واحدة في كل مرة دون أي شيفرة إضافية: الملف main.py هو البرنامج. اضغط Run أو اكتب python main.py في الطرفية.

bid = 184.25
ask = 184.50
print(ask - bid)  # 0.25

العبارات والتعبيرات

التعبير ينتج قيمة، مثل ask - bid أو 2 * 3. أما العبارة فتنفّذ شيئًا، مثل bid = 184.25 أو print(bid). تأخذ كل عبارة سطرها الخاص، ونهاية السطر تنهي العبارة دون فاصلة منقوطة. وإذا طالت العبارة فضعها بين قوسين وأكملها في الأسطر التالية.

total_cost = (
    price * quantity
    + commission
    + exchange_fee
)

التعليقات وdocstrings

كل ما يلي # حتى نهاية السطر هو تعليق تتجاهله Python. استخدم التعليقات لتوضيح سبب فعل الشيفرة لشيء ما، لا لتكرار ما تفعله. والنص بين علامات اقتباس ثلاثية في بداية ملف أو دالة هو docstring، أي الوصف الرسمي الذي تعرضه الأدوات وhelp().

# Mid price: the fair value halfway between bid and ask.
mid = (bid + ask) / 2  # average of the two quotes

المسافة البادئة جزء من الصيغة

حيث تستخدم لغات أخرى الأقواس المعقوفة، تستخدم Python المسافة البادئة. السطر الذي ينتهي بنقطتين رأسيتين يفتح كتلة، والكتلة هي الأسطر المزاحة تحته. استخدم أربع مسافات للإزاحة ولا تخلط بين علامات الجدولة والمسافات. والشيفرة الملاصقة للهامش الأيسر هي شيفرة المستوى الأعلى.

def spread(bid, ask):
    # both lines below are the block: indented by four spaces
    width = ask - bid
    return width

print(spread(184.25, 184.50))  # back at the left margin: 0.25
تنبيهينتج عن نقص مسافة أو زيادتها IndentationError، وعن نسيان النقطتين الرأسيتين SyntaxError. تتوقف Python قبل تنفيذ أي شيء، فاقرأ رقم السطر في الرسالة أولًا. اضبط محررك ليُدرج مسافات عند الضغط على Tab.

المتغيرات والإسناد

الاسم = القيمة تربط اسمًا بقيمة. تعني علامة = الإسناد وليس المساواة: تحسب Python الطرف الأيمن أولًا ثم تربط الاسم بالناتج. الأسماء حساسة لحالة الأحرف، ويمكن أن تحتوي على حروف وأرقام وشرطات سفلية، ولا يجوز أن تبدأ برقم أو أن تكون كلمة محجوزة مثل if أو for. وأسلوب Python هو snake_case مثل last_price.

price = 184.25
quantity = 200
notional = price * quantity
price = 185.00      # rebinds price; notional is unchanged
quantity += 50      # shorthand for quantity = quantity + 50
print(notional)     # 36850.0

العمليات الحسابية وأسبقية العوامل

  • + و- و* للجمع والطرح والضرب.
  • / قسمة حقيقية وتعطي دائمًا نتيجة عشرية: 7 / 2 تساوي 3.5.
  • // تقسم وتقرّب للأسفل، و% تعطي الباقي: 7 // 2 تساوي 3 و7 % 2 تساوي 1.
  • ** للرفع إلى قوة: 1.05 ** 10 تركّب 5٪ عشر مرات.

تتبع Python ترتيب العمليات في الرياضيات: ** أولًا ثم * و/ ثم + و-. لذا فإن 2 + 3 * 4 تساوي 14 بينما (2 + 3) * 4 تساوي 20. وعند الشك أضف أقواسًا فهي بلا كلفة وتوضّح القصد. والشرطات السفلية داخل الأرقام مثل 10_000 تُتجاهل وتجعل الأعداد الكبيرة مقروءة.

spread = ask - bid                   # 0.25
mid = (bid + ask) / 2                # 184.375
spread_bps = spread / mid * 10_000   # the spread in basis points

عرض النتائج باستخدام print

تكتب print() القيم في الطرفية مفصولة بمسافات. النص بين علامات الاقتباس هو سلسلة نصية، وستتناول المواضيع التالية السلاسل والأرقام بالتفصيل. حاليًا، print هي وسيلتك للنظر داخل برنامجك: اطبع قيمة وتحقق منها يدويًا ثم تابع.

print("bid", bid, "ask", ask)
print("mid", mid)

في المختبر ستكتب صيغًا صغيرة للأسعار باستخدام ما في هذه الصفحة فقط: الإسناد والعمليات الحسابية والأقواس. والدرس التالي: كيف تخزّن Python الأرقام، ولماذا لا تساوي 0.1 + 0.2 القيمة 0.3 تمامًا.

المختبر: ما الذي يُقيَّم

  • احسب قيمة المركز باستخدام notional25 نقطة
  • أوجد السعر المتوسط باستخدام midpoint25 نقطة
  • قِس فارق العرض والطلب باستخدام spread25 نقطة
  • عبّر عن الفارق بنقاط الأساس باستخدام spread_bps25 نقطة
المستكشف · lab-1-1
▾ lab-1-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-1-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

هل تريد إعادة ضبط هذا الموضوع؟

سيعود كل ما في lab-1-1 إلى الملفات الابتدائية وستُمسح الطرفية. ستفقد حلّك الحالي ولا يمكن التراجع عن ذلك.

سيُعاد ضبطه
  • main.py ← الشيفرة الابتدائية
  • سجل الطرفية ومخرجات الاختبارات
  • التغييرات غير المُرسلة
سيُحتفظ به
  • أفضل درجة في المختبر
  • نقاط XP والتتابع
  • تقدّم المحاضرة والملاحظات

سجّل الدخول لتشغيل الكود الخاص بك.

قراءة كل المحاضرات مجانية. أنشئ حسابًا أو سجّل الدخول لتشغيل الكود وتنفيذ الاختبارات وتسليم هذا المختبر.

  • بيئة تطوير داخل المتصفح مع طرفية bash — لا حاجة لتثبيت أي شيء
  • تصحيح فوري ونقاط خبرة ومكانك في المسار
إنشاء حسابتسجيل الدخول
أو
المتابعة عبر GitHub