تفاوت روشهای مبنای هزینه در معاملات سهام
روشهای مبنای هزینه مانند FIFO و شناسایی اختصاصی تعیین میکنند کدام سهام در اولویت فروش قرار گیرند. انتخاب این روش بر سود محققشده معامله و میزان مالیات اثرگذار است.
روشهای تعیین «مبنای هزینه» (Cost Basis) مشخص میکنند که هنگام فروش بخشی از یک موقعیت معاملاتی، کدامیک از سهام شما از حساب خارج شود. کارگزاران آمریکایی معمولاً به شما اجازه میدهند یکی از چهار روش FIFO، LIFO، HIFO یا شناسایی اختصاصی (Specific Identification) را انتخاب کنید. این روش، اندازه و ماهیت سود گزارششده در آن معامله خاص را تغییر میدهد، اما هزینه کل موقعیت در طول عمر آن را تغییر نمیدهد؛ زیرا مبنایی که امروز استفاده نمیکنید، برای فروشهای بعدی در دفاتر باقی میماند.
روش مبنای هزینه چیست؟
هر «لات» (Lot) یک خرید واحد است: مقداری سهام که در یک قیمت مشخص و در یک تاریخ معاملاتی معین خریداری شده است. اگر یک سهم را چهار بار بخرید، چهار لات دارید که هر کدام مبنای هزینه و زمان نگهداری (Holding Period) مختص به خود را دارند. اگر تعداد سهامی کمتر از موجودی کل خود بفروشید، باید مشخص شود که کدام لاتها از حساب خارج شدهاند. این تصمیم همان روش مبنای هزینه است.
- FIFO (اولین ورودی، اولین خروجی): قدیمیترین لات را ابتدا میفروشد. این روش پیشفرض تقریباً تمام کارگزاران آمریکایی است و در صورت عدم انتخاب، اعمال میشود.
- LIFO (آخرین ورودی، اولین خروجی): جدیدترین لات را ابتدا میفروشد.
- HIFO (بالاترین هزینه، اولین خروجی): لاتی را که بیشترین هزینه را داشته، صرفنظر از تاریخ خرید، ابتدا میفروشد.
- شناسایی اختصاصی (Specific Identification): به شما اجازه میدهد لاتها و مقادیر دقیق را خودتان و در هر ترکیبی انتخاب کنید.
از این تعاریف دو نتیجه حاصل میشود: FIFO سهامی را خارج میکند که احتمالاً از مرز یکساله عبور کردهاند، بنابراین سودهای آن به سمت بلندمدت متمایل است. HIFO سهامی را خارج میکند که بیشترین مبنای هزینه را دارند، بنابراین کمترین سود ممکن را برای آن فروش گزارش میکند و ماهیت آن سود به زمان خرید آن لات گرانقیمت بستگی دارد.
آیا این روش میزان مالیات پرداختی را تغییر میدهد؟
در طول عمر موقعیت، خیر. مبنای هزینه حفظ میشود: هر دلاری که به فروش امروز اختصاص یابد، دلاری است که برای فروش آینده در دسترس نخواهد بود و مجموع سودهای تحققیافته از اولین خرید تا آخرین سهم، تحت هر چهار روش یکسان است. آنچه تغییر میکند، زمانبندی (اینکه سود در کدام سال مالیاتی قرار میگیرد) و ماهیت آن (کوتاهمدت یا بلندمدت) است. لاتی که یک سال یا کمتر نگهداری شده، سود کوتاهمدت ایجاد میکند که با نرخ درآمد عادی مشمول مالیات است. لاتی که بیش از یک سال نگهداری شده، سود بلندمدت ایجاد میکند که با نرخهای پایینتر بلندمدت مشمول مالیات میشود.
محاسبات آن به اندازهای ساده است که میتوان آن را در اینجا اجرا کرد. سناریوی زیر شامل چهار لات فرضی و یک فروش 150 سهمی است و نتیجه تحققیافته تحت هر روش را به تفکیک کوتاهمدت و بلندمدت نشان میدهد. این محاسبات تنها از کتابخانه استاندارد پایتون استفاده میکند.
python3 <<'PY'
from datetime import date
# Four hypothetical purchase lots, oldest first, then one sale of 150 shares.
lots = [
{'bought': date(2023, 3, 15), 'qty': 100, 'price': 20.00},
{'bought': date(2024, 2, 20), 'qty': 100, 'price': 45.00},
{'bought': date(2024, 11, 1), 'qty': 100, 'price': 60.00},
{'bought': date(2025, 1, 15), 'qty': 100, 'price': 35.00},
]
sale_date = date(2025, 6, 2)
sale_qty = 150
sale_price = 50.00
def realize(order):
left, short, long_, basis_used = sale_qty, 0.0, 0.0, 0.0
for lot in order:
if left <= 0:
break
take = min(left, lot['qty'])
gain = take * (sale_price - lot['price'])
if (sale_date - lot['bought']).days > 365:
long_ += gain
else:
short += gain
basis_used += take * lot['price']
left -= take
return short, long_, basis_used
methods = {
'FIFO': sorted(lots, key=lambda l: l['bought']),
'LIFO': sorted(lots, key=lambda l: l['bought'], reverse=True),
'HIFO': sorted(lots, key=lambda l: l['price'], reverse=True),
'SpecID': [lots[2], lots[3], lots[0], lots[1]],
}
total_basis = sum(l['qty'] * l['price'] for l in lots)
print('%-8s %11s %10s %9s %11s' % ('method', 'short-term', 'long-term', 'realized', 'basis left'))
for name, order in methods.items():
short, long_, basis_used = realize(order)
print('%-8s %11.2f %10.2f %9.2f %11.2f' % (name, short, long_, short + long_, total_basis - basis_used))
PY
در این دفتر کل فرضی، چهار ردیف تفاوت قابلتوجهی دارند. FIFO دو لات قدیمیتر را مصرف کرده و 3,250.00 سود گزارش میکند که تماماً بلندمدت است. LIFO دو لات جدیدتر را برداشته و 1,000.00 سود گزارش میکند که تماماً کوتاهمدت است. HIFO با لات 60.00 دلاری شروع کرده و 750.00 دلار زیان گزارش میکند. روش شناسایی اختصاصیِ دستی نیز به 250.00 دلار زیان میرسد. اکنون ستون آخر را بخوانید، یعنی مبنای هزینهای که برای 250 سهم فروشنرفته باقی مانده است: روشی که امروز کمترین سود را گزارش میکند، کمترین مبنای هزینه را برای فردا باقی میگذارد. این همان مفهوم حفظ مبنای هزینه است.
فاصله لاتها در قیمتهای واقعی چقدر است؟
انتخاب روش تنها تا حدی اهمیت دارد که لاتها با هم تفاوت داشته باشند. اگر همیشه با قیمت تقریباً یکسانی خرید کنید، هر روش نتیجه تقریباً یکسانی خواهد داشت. پنل زیر تاریخچه قیمت واقعی AAPL در اولین جلسه معاملاتی هر ماه سال 2024 را به عنوان نمونهای از برنامه سرمایهگذاری خودکار نشان میدهد.
کد دقیق SQL پشت هر عدد
SELECT
formatDateTime(toStartOfMonth(date), '%Y-%m') AS month,
formatDateTime(min(date), '%b %e, %Y') AS lot_label,
round(toFloat64(argMin(close, date)), 2) AS lot_price
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2024-01-01'
AND date < '2025-01-01'
GROUP BY toStartOfMonth(date)
ORDER BY toStartOfMonth(date)این شامل 12 لات است، از $185.64 در Jan 2, 2024 تا $239.59 در Dec 2, 2024. فاصله بین ارزانترین و گرانترین آنها، فضای مانوری است که یک روش انتخاب لات برای این موقعیت در اختیار دارد.
FIFO کدام لات را میفروشد و HIFO کدام را؟
با ثابت فرض کردن یک فروش، تفاوت هر لات به منحنیای تبدیل میشود که با یک نگاه قابل خواندن است. پنل زیر قیمت فروش را در سطح قیمت بسته شدن AAPL در اولین جلسه ژوئن 2025 ثابت نگه میدارد و گزارش میدهد که هر لات سال 2024 در آن روز چه سودی به ازای هر سهم محقق میکند و آیا آن لات از مرز یکساله عبور کرده است یا خیر.
کد دقیق SQL پشت هر عدد
WITH
(
SELECT toFloat64(argMin(close, date))
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2025-06-02'
AND date < '2025-06-07'
) AS sale_price,
toDate('2025-06-02') AS sale_date
SELECT
formatDateTime(toStartOfMonth(date), '%Y-%m') AS month,
round(sale_price - toFloat64(argMin(close, date)), 2) AS gain_per_share,
if(dateDiff('day', min(date), sale_date) > 365, 'long-term', 'short-term') AS holding_term
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2024-01-01'
AND date < '2025-01-01'
GROUP BY toStartOfMonth(date)
ORDER BY toStartOfMonth(date)FIFO به سراغ نقطه سمت چپ میرود: لات Jan 2, 2024، به ارزش $16.06 به ازای هر سهم، که در آن تاریخ فروش، long-term علامتگذاری شده است. لات دسامبر در انتهای دیگر منحنی، -37.89 به ازای هر سهم در برابر همان قیمت فروش ثبت میکند و پنل آن را short-term علامتگذاری میکند. یک سهم، یک فروش، یک روز. ردیفی که روش انتخاب میکند، عددی است که به اظهارنامه مالیاتی میرسد و ستون دوره نگهداری نشان میدهد که خط یکساله کجا از سال عبور میکند.
آیا این انتخاب در هر موقعیتی اهمیت دارد؟
نه به یک اندازه. شکاف بین ارزانترین و گرانترین لات، تمام کاری را که انتخاب روش میتواند انجام دهد محدود میکند و این شکاف بسته به نام سهم متفاوت است. این پنل همان برنامه خرید ماهانه را برای 5 تیکر خانگی در طول سال 2024 اجرا میکند.
کد دقیق SQL پشت هر عدد
SELECT
ticker AS symbol,
concat('$', toString(round(min(lot_price), 2)),
' to $', toString(round(max(lot_price), 2))) AS lot_price_band,
round(100 * (max(lot_price) / min(lot_price) - 1), 1) AS spread_pct
FROM
(
SELECT
ticker,
toStartOfMonth(date) AS month,
toFloat64(argMin(close, date)) AS lot_price
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'SPY', 'KO', 'JNJ')
AND date >= '2024-01-01'
AND date < '2025-01-01'
GROUP BY ticker, month
)
GROUP BY ticker
ORDER BY spread_pct DESCگستردهترین دامنه متعلق به AAPL است که لاتهای ماهانه آن $169.3 to $239.59 را پوشش میدهند، یعنی فاصلهای به اندازه 41.5% از پایین تا بالا. کمترین دامنه، JNJ، شامل 14.1% است. جایی که هر لات در چند درصد از بقیه قرار دارد، انتخاب روش بیشتر به حسابداری شبیه است. جایی که دامنه 41.5% گسترده است، همان فروش میتواند بسته به لاتی که سیستم مصرف کرده، سود یا زیان باشد.
چه زمانی روش را انتخاب میکنید و چه کسی آن را گزارش میدهد؟
انتخاب باید در زمان یا پیش از تسویه فروش انجام شود. سهام ایالات متحده تحت سیستم T+1 یک روز کاری پس از تاریخ معامله تسویه میشوند که پنجره محدودی برای شناسایی لاتها پس از تکمیل سفارش باقی میگذارد. اکثر کارگزاران انتخاب در لحظه ثبت سفارش را آسانتر میکنند و اکثر آنها به شما اجازه میدهند یک پیشفرض دائمی برای حساب تعیین کنید که تا زمان تغییر، برای هر فروشی اعمال شود.
پس از تسویه، شناسایی برای آن فروش قفل میشود. کارگزار شما مبنای هزینه اوراق بهادار تحت پوشش (Covered Securities) را طبق روش جاری در فرم 1099-B به IRS گزارش میدهد و این ارقام همانهایی هستند که با اظهارنامه مالیاتی مطابقت داده میشوند. اوراق بهادار تحت پوشش، اوراقی هستند که پس از اجرایی شدن قوانین گزارشدهی خریداری شدهاند: از سال 2011 برای اکثر سهام شرکتها و از سال 2012 برای سهام صندوقهای سرمایهگذاری مشترک و طرحهای بازسرمایهگذاری سود سهام، و ابزارهای سادهتر و بدهی در سال 2014. مبنای هزینه برای هر چیزی قدیمیتر، غیرتحتپوشش (Noncovered) است و در سوابق خودتان نگهداری میشود.
HIFO شایسته یک یادداشت جداگانه است. این روش بهندرت یک دستهبندی نظارتی جداگانه است. کارگزاران آن را به عنوان شناسایی اختصاصی خودکار پیادهسازی میکنند: سیستم بالاترین هزینه لات را انتخاب کرده و یک دستورالعمل لات خاص ثبت میکند و فرم 1099-B دقیقاً مشابه حالتی است که شما لاتها را به صورت دستی نام برده باشید. به همین دلیل است که کارگزاری که شناسایی اختصاصی ارائه میدهد، معمولاً میتواند HIFO را نیز ارائه دهد، در حالی که کارگزاری که هیچکدام را ارائه نمیدهد، شما را با FIFO تنها میگذارد. سهام صندوقها گزینه دیگری دارند که سهام عادی ندارند: هزینه میانگین (Average Cost) که تمام سهام یک صندوق را در یک مبنای هزینه واحد به ازای هر سهم ادغام میکند. یادداشت ما در مورد فروش صندوقهای سرمایهگذاری مشترک با زیان پیچیدگیهای ناشی از این ادغام را پوشش میدهد.
دو قانونی که در کنار انتخاب روش قرار دارند
قانون «فروش شستوشو» (Wash Sale) زمانی که سهام اساساً یکسان در 30 روز قبل یا 30 روز بعد از فروشی که منجر به زیان شده خریداری شوند، آن زیان را غیرقابلقبول میداند. زیان غیرقابلقبول منتقل میشود: به مبنای هزینه سهام جایگزین اضافه شده و لات جدیدی با مبنای هزینه تورمیافته و دوره نگهداری تعدیلشده ایجاد میکند. برداشت زیان از طریق HIFO در موقعیتی که هنوز هر ماه در حال خرید آن هستید، مستقیماً با این قانون برخورد میکند.
دوره نگهداری سود سهام واجد شرایط (Qualified Dividend)، ساعت دوم روی همان سهام است که به جای تاریخ معامله، در یک پنجره 121 روزه حول تاریخ بدون سود (ex-dividend date) محاسبه میشود. فروش یک لات خاص میتواند آن ساعت را برای سهام فروختهشده متوقف کند در حالی که برای سهام نگهداریشده همچنان در حال کار است؛ قوانین شمارش در راهنمای دوره نگهداری سود سهام واجد شرایط موجود است.
محاسبات تقسیم سهام (Split) خارج از همه اینهاست. تقسیم سهام، تعداد سهام هر لات موجود را ضرب و مبنای هزینه هر سهم آن را تقسیم میکند، بدون اینکه مبنای هزینه کل لات یا تاریخ معامله آن تغییر کند. هیچ انتخاب لاتی در اینجا دخیل نیست. برای اطلاع از تأثیر تقسیم سهام بر سری قیمتها، به تاریخچه قیمت تعدیلشده با تقسیم مراجعه کنید. اختیار معاملههای شاخص (Index Options) حتی فراتر از این هستند و دارای رفتار مالیاتی 60/40 هستند که توسط قانون تعیین شده است، نه دوره نگهداری.
پرسشهای متداول
روش پیشفرض مبنای هزینه چیست؟
برای سهام انفرادی در تقریباً تمام کارگزاران آمریکایی، FIFO است. در صورت عدم انتخاب در حساب یا در لحظه ثبت سفارش، قدیمیترین لات ابتدا فروخته میشود و فرم 1099-B به همین صورت گزارش میدهد. موقعیتهای صندوقهای سرمایهگذاری مشترک ممکن است بسته به صندوق و کارگزار، به جای آن از هزینه میانگین استفاده کنند.
آیا میتوانم روش مبنای هزینه خود را پس از فروش تغییر دهم؟
برای آن فروش خاص، فقط تا زمان تسویه امکانپذیر است که تحت سیستم T+1، یک روز کاری پس از معامله است. پس از تسویه، لاتهای شناساییشده همان لاتهای فروختهشده هستند. پیشفرض دائمی حساب را میتوان در هر زمانی برای فروشهای آینده تغییر داد.
آیا HIFO مجاز است؟
بله، به عنوان شکلی از شناسایی اختصاصی و نه به عنوان یک روش نامگذاریشده جداگانه. کارگزار انتخاب لات با بالاترین هزینه را خودکار کرده و آن را به عنوان دستورالعمل لات خاص ثبت میکند که همان مسیر گزارشدهیِ نامگذاری دستی لاتهاست.
آیا روش مبنای هزینه، کل قبض مالیاتی من را تغییر میدهد؟
در طول عمر یک موقعیت، خیر. این روش سود را بین سالهای مالیاتی و بین رفتار کوتاهمدت و بلندمدت جابهجا میکند. مبنای هزینهای که در یک فروش استفاده نشده، نزد سهام باقیمانده میماند که ستون آخر سناریوی بالا مستقیماً آن را نشان میدهد.
اوراق بهادار تحت پوشش در فرم 1099-B چیست؟
اوراقی که کارگزار شما موظف است مبنای هزینه آنها را به IRS گزارش دهد، که بر اساس زمان خرید تعیین میشود: از سال 2011 برای اکثر سهام شرکتها و از سال 2012 برای سهام صندوقهای سرمایهگذاری مشترک و طرحهای بازسرمایهگذاری سود سهام، و ابزارهای سادهتر و بدهی در سال 2014. لاتهای غیرتحتپوشش، کادر مبنای هزینه را خالی میگذارند و رقم آن از سوابق خودتان به دست میآید.
نحوه تنظیم این پنلها
هر سه پنل از بازههای زمانی ثابت 2024 و 2025 استفاده میکنند تا اعداد در اجرای بعدی تغییر نکنند. هر لات ماهانه، قیمت بسته شدن اولین جلسه معاملاتی عادی آن ماه است که نزدیکترین تطابق با برنامهای است که در اولین روز کاری تأمین مالی میشود. هیچکدام از پنج تیکر در این بازه دچار تقسیم سهام نشدهاند، بنابراین هیچ تعدیل تقسیمی در سری قیمتها ترکیب نشده است. قیمت فروش در پنل دوم، قیمت بسته شدن اولین جلسه ژوئن 2025 است که در تمام 12 لات ثابت نگه داشته شده است.
این یک توضیح فنی است، نه مشاوره مالیاتی، و رفتار فدرال ایالات متحده در یک حساب مشمول مالیات را توصیف میکند. در یک حساب با مالیات معوق، چیزی برای انتخاب وجود ندارد، زیرا فروش یک رویداد مشمول مالیات نیست.
هر پنل در بالا شامل کد SQL دقیقی است که آن را تولید کرده است؛ یکی را باز کنید تا ببینید قیمت لات چگونه استخراج شده است. برای تطبیق تاریخهای خرید خود با قیمت فروش بعدی، سؤال خود را به زبان ساده در ترمینال Strasmore بپرسید.