PYTHON4FINANCE Telegram 1087
یک مثال ساده برای آشنایی با ماژول Alphalens

در مثال این پست خروجی‌های Alphalens کمک می کند تا عملکرد فاکتور تفاوت میانگین متحرک کوتاه‌مدت و بلندمدت را از جنبه‌های مختلف ارزیابی کنیم.
قبل از اجرای برنامه مطمئن شوید تمامی ماژول های نصب شده اند یا آنها را از این طریق تصب کنید:

pip install yfinance alphalens-reloaded pandas numpy matplotlib

سورس برنامه
#code by @python4finance
import yfinance as yf
import pandas as pd
import numpy as np
from alphalens.utils import get_clean_factor_and_forward_returns
from alphalens.tears import create_full_tear_sheet
import warnings
warnings.filterwarnings("ignore")

# ---------------------------------------------
# 1. دریافت داده‌های تاریخی از Yahoo Finance
# ---------------------------------------------
tickers = ["AAPL", "MSFT", "GOOG", "AMZN", "META"] # مثال: ۵ سهم بزرگ فناوری
start_date = "2020-01-01"
end_date = "2023-01-01"

# دریافت داده‌های قیمتی
data = yf.download(tickers, start=start_date, end=end_date)
prices = data["Adj Close"] # استفاده از قیمت تعدیل‌شده

# تبدیل ایندکس به DateTimeIndex و تنظیم فرکانس
prices = prices.asfreq('B').ffill() # تبدیل به فرکانس روزانه و پر کردن مقادیر خالی

# ---------------------------------------------
# 2. محاسبه فاکتور (مثال: Moving Average Crossover)
# ---------------------------------------------
def calculate_factor(prices, short_window=10, long_window=50):
"""
محاسبه فاکتور تفاوت میانگین متحرک کوتاه‌مدت و بلندمدت
"""
short_ma = prices.rolling(window=short_window).mean()
long_ma = prices.rolling(window=long_window).mean()
factor = short_ma - long_ma
return factor

factor = calculate_factor(prices)

# ---------------------------------------------
# 3. آماده‌سازی داده‌ها برای Alphalens
# ---------------------------------------------
# تبدیل فاکتور به فرمت MultiIndex (Date, Asset)
factor = factor.stack().reset_index()
factor.columns = ['date', 'asset', 'factor']
factor = factor.set_index(['date', 'asset'])['factor']

# اطمینان از هماهنگی ایندکس قیمت و فاکتور
common_index = prices.index.intersection(factor.index.get_level_values(0).unique())
prices = prices.loc[common_index]
factor = factor.loc[common_index]

# ---------------------------------------------
# 4. تحلیل عملکرد فاکتور با Alphalens
# ---------------------------------------------
# محاسبه بازده‌های آینده و پاک‌سازی داده‌ها
factor_data = get_clean_factor_and_forward_returns(
factor,
prices,
quantiles=5, # تقسیم داده به ۵ کوانتایل
periods=(1, 5, 10) # بازه‌های بازدهی (1 روز، 5 روز، 10 روز)
)

# ایجاد گزارش کامل
create_full_tear_sheet(factor_data)


#پایتون_مالی
#معاملات_الگوریتمی
#بک_تست

#Algorithmic_Trading
#Back_Test
#Alphalens

پایتون برای مالی


🆔 www.tgoop.com/python4finance
🆔 ble.ir/python4finance
23



tgoop.com/python4finance/1087
Create:
Last Update:

یک مثال ساده برای آشنایی با ماژول Alphalens

در مثال این پست خروجی‌های Alphalens کمک می کند تا عملکرد فاکتور تفاوت میانگین متحرک کوتاه‌مدت و بلندمدت را از جنبه‌های مختلف ارزیابی کنیم.
قبل از اجرای برنامه مطمئن شوید تمامی ماژول های نصب شده اند یا آنها را از این طریق تصب کنید:

pip install yfinance alphalens-reloaded pandas numpy matplotlib

سورس برنامه
#code by @python4finance
import yfinance as yf
import pandas as pd
import numpy as np
from alphalens.utils import get_clean_factor_and_forward_returns
from alphalens.tears import create_full_tear_sheet
import warnings
warnings.filterwarnings("ignore")

# ---------------------------------------------
# 1. دریافت داده‌های تاریخی از Yahoo Finance
# ---------------------------------------------
tickers = ["AAPL", "MSFT", "GOOG", "AMZN", "META"] # مثال: ۵ سهم بزرگ فناوری
start_date = "2020-01-01"
end_date = "2023-01-01"

# دریافت داده‌های قیمتی
data = yf.download(tickers, start=start_date, end=end_date)
prices = data["Adj Close"] # استفاده از قیمت تعدیل‌شده

# تبدیل ایندکس به DateTimeIndex و تنظیم فرکانس
prices = prices.asfreq('B').ffill() # تبدیل به فرکانس روزانه و پر کردن مقادیر خالی

# ---------------------------------------------
# 2. محاسبه فاکتور (مثال: Moving Average Crossover)
# ---------------------------------------------
def calculate_factor(prices, short_window=10, long_window=50):
"""
محاسبه فاکتور تفاوت میانگین متحرک کوتاه‌مدت و بلندمدت
"""
short_ma = prices.rolling(window=short_window).mean()
long_ma = prices.rolling(window=long_window).mean()
factor = short_ma - long_ma
return factor

factor = calculate_factor(prices)

# ---------------------------------------------
# 3. آماده‌سازی داده‌ها برای Alphalens
# ---------------------------------------------
# تبدیل فاکتور به فرمت MultiIndex (Date, Asset)
factor = factor.stack().reset_index()
factor.columns = ['date', 'asset', 'factor']
factor = factor.set_index(['date', 'asset'])['factor']

# اطمینان از هماهنگی ایندکس قیمت و فاکتور
common_index = prices.index.intersection(factor.index.get_level_values(0).unique())
prices = prices.loc[common_index]
factor = factor.loc[common_index]

# ---------------------------------------------
# 4. تحلیل عملکرد فاکتور با Alphalens
# ---------------------------------------------
# محاسبه بازده‌های آینده و پاک‌سازی داده‌ها
factor_data = get_clean_factor_and_forward_returns(
factor,
prices,
quantiles=5, # تقسیم داده به ۵ کوانتایل
periods=(1, 5, 10) # بازه‌های بازدهی (1 روز، 5 روز، 10 روز)
)

# ایجاد گزارش کامل
create_full_tear_sheet(factor_data)


#پایتون_مالی
#معاملات_الگوریتمی
#بک_تست

#Algorithmic_Trading
#Back_Test
#Alphalens

پایتون برای مالی


🆔 www.tgoop.com/python4finance
🆔 ble.ir/python4finance

BY Python4Finance


Share with your friend now:
tgoop.com/python4finance/1087

View MORE
Open in Telegram


Telegram News

Date: |

Matt Hussey, editorial director at NEAR Protocol also responded to this news with “#meIRL”. Just as you search “Bear Market Screaming” in Telegram, you will see a Pepe frog yelling as the group’s featured image. Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. Telegram is a leading cloud-based instant messages platform. It became popular in recent years for its privacy, speed, voice and video quality, and other unmatched features over its main competitor Whatsapp. More>> 6How to manage your Telegram channel?
from us


Telegram Python4Finance
FROM American