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

اشتقاقات القوائم

الموضع في المسارالوحدة 1 من 11 · الموضوع 11 من 33
1.11 اشتقاقات القوائم
—درجة المختبر— / 100إجمالي XP—التتابع—

من حلقة إلى تعبير واحد

تبدأ حلقة شائعة جدًا بقائمة فارغة وتُضيف نتيجة لكل عنصر. تقول اشتقاق القائمة (list comprehension) الشيء نفسه في تعبير واحد بين أقواس مربعة: [ما_يُبنى for item in collection]. اقرأه من اليسار إلى اليمين: «ابنِ هذا، لكل عنصر في ذاك». وهو أقصر ويُظهر بنظرة واحدة أن الكل قائمة جديدة.

prices = [184.0, 185.0, 183.0]

# The loop way
notionals = []
for price in prices:
    notionals.append(price * 100)
print(notionals)  # [18400.0, 18500.0, 18300.0]

# The comprehension way: the same list in one line
notionals = [price * 100 for price in prices]
print(notionals)  # [18400.0, 18500.0, 18300.0]

الاحتفاظ ببعض العناصر فقط: if

أضف if condition في النهاية للاحتفاظ بالعناصر التي تجتاز اختبارًا فقط. هكذا تُرشِّح: العوائد الموجبة، الأوامر فوق حجم معيّن، الرموز المطابقة. العناصر التي لا تجتاز الاختبار تُحذف ببساطة ويُحفظ ترتيب البقية.

# Keep only the items that pass a test
returns = [0.01, -0.02, 0.005, -0.001, 0.03]
gains = [r for r in returns if r > 0]
print(gains)  # [0.01, 0.005, 0.03]

المواضع والأزواج

يعمل جزء for كحلقة عادية: يمكنه المرور على range(...) لاستخدام المواضع، وتسمية نصفي الزوج (for symbol, price in quotes). استخدم المواضع عندما تعتمد كل نتيجة على جار، كعائد من السعر السابق؛ واستخدم الأزواج عندما يحمل كل عنصر عدة حقول.

# Simple returns from a price series, using positions
prices = [100.0, 102.0, 101.0]
returns = [prices[i] / prices[i - 1] - 1 for i in range(1, len(prices))]
print([round(r, 4) for r in returns])  # [0.02, -0.0098]

# Pairs can be unpacked, and the result can be transformed
quotes = [("aapl", 184.5), ("msft", 410.2), ("goog", 171.0)]
above = [symbol.upper() for symbol, price in quotes if price > 180]
print(above)  # ['AAPL', 'MSFT']

if/else تأتي في المقدمة

يحذف if الأخير عناصر. وإذا أردت تغيير كل عنصر بحسب شرط فاستخدم التعبير الشرطي a if condition else b كجزء أول. والخلط بين الاثنين خطأ شائع: if وحدها تأتي بعد for، أما if ... else فتأتي قبلها.

# if/else changes each item; a plain if (at the end) drops items
returns = [0.01, -0.02, 0.005, -0.001, 0.03]
signals = ["long" if r > 0 else "flat" for r in returns]
print(signals)  # ['long', 'flat', 'long', 'flat', 'long']
ابنِ قوائم ولا تنفّذ إجراءاتالاشتقاق لإنتاج قائمة من أخرى. وإذا أردت فقط الطباعة أو إرسال أوامر أو تغيير شيء فاستخدم حلقة for عادية. وإذا طال اشتقاق أو تداخل فقسّمه إلى حلقة أو دالة مساعدة: الوضوح أفضل من الذكاء.
  • [expression for item in items]: نتيجة لكل عنصر.
  • ... if condition في النهاية: الاحتفاظ ببعض العناصر فقط.
  • a if condition else b في المقدمة: تغيير كل عنصر.

التالي: القوائم، المجموعة التي كانت هذه الحلقات والاشتقاقات تعمل عليها: الفهرسة والتقطيع والإضافة والحذف والترتيب.

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

  • احسب قيمة كل صفقة في تعبير واحد باستخدام notionals25 نقطة
  • حوّل الأسعار إلى عوائد باستخدام simple_returns25 نقطة
  • احتفظ بالمكاسب فقط باستخدام positive_returns25 نقطة
  • رشِّح الرموز ونظّفها معًا باستخدام symbols_above25 نقطة
المستكشف · lab-11-1
▾ lab-11-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-11-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

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

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

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

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

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

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