تحقیقات مالی و اقتصادی، حوزه هیجانانگیز و بیپایانی با لحظات کشف و غافلگیری بسیار زیاد است. ما برای سرمایه گذاری بهتر ، همواره به دنبال استراتژی طلایی هستیم که برای تمام شرایط و زمانها کار کند و خیال ما را راحت کند؛ اما اغلب غافلگیر میشویم. این موضوع کاملا عادی است. ما به دنبال سوزن در انبار کاه هستیم. سوزن همان استراتژی مناسب و انبار کاه نیز ایدههای نامحدود است. گاهی اوقات، سادگی کلید موفقیت است. ما به دهها اندیکاتور تکنیکال که سیگنالهای مختلف ارائه میدهند، نیاز نداریم.
دو نکته درباره اندیکاتور های تکنیکال، برای سرمایه گذاری بهتر
- این اندیکاتور ها مبتنی بر قیمت هستند. این موضوع بدان معناست که این اندیکاتور ها قیمت را تجزیه میکنند تا بعضی از مشخصههای مهم را تعیین کنند. بنابراین، اندیکاتور ها شرایط گذشته را مورد بررسی قرار میدهند، نه شرایط آینده را. در نتیجه ما امیدواریم که روابط موجود در گذشته نیز برای شرایط آینده صادق باشند. برای مثال، اگر در RSI شاهد واگرایی باشیم، پیشبینی میکنیم که این موضوع منجر به کاهش قیمت شود، که اغلب اوقات چنین شرایطی رخ میدهد. این واگرایی، آینده را به طور دقیق پیشبینی نمیکند، بلکه صرفا یک مشاهده ریاضیاتی است.
- اندیکاتور ها بعید است که به خودی خود بتوانند استراتژی طلایی و برنده را ارائه دهند. اگر چنین چیزی وجود داشته باشد، پس دیگر چه نیازی به اتکا به شرایط اشباع خرید و فروش در اندیکاتور استوکاستیک (Stochastic) است؟ انجام معاملات پیچیدهتر از این موارد است و به رویکرد جامعتری برای یافتن و دستیابی به معاملات سودآور نیاز دارد.
باید اندیکاتور ها را همانند راهنماییهای کوچکی در نظر بگیریم. برای مثال، هنگامی که اطلاعات کافی برای انجام خرید استقراضی در اختیار داشته باشیم، میتوانیم اندیکاتور های تکنیکال را بررسی کنیم که آیا این اقدام را تایید میکنند یا خیر.
این موضوع بدان معنا است هنگامی که بازار در روند مشخصی قرار دارد، نباید از میانگین بازگشتی (Mean Reversion) استفاده کنیم. نمودار زیر دلیل این موضوع را نشان میدهد. این نمودار، سیگنالهای فروش است که توسط اندیکاتور RSI در روند صعودی بازار ارائه شدهاند. به روند قیمت داخل مستطیل آبی رنگ توجه کنید. کاملا مشخص است که کیفیت این سیگنال خوب نیست.
اکنون میتوانیم یک اندیکاتور ساده از یک ایده بسیار ساده به دست آوریم: هنجارسازی (Normalization). نکته خوب درباره هنجارسازی این است که شرایط خرید و فروش از قبل مشخص شدهاند. در نتیجه، تنها کاری که باید انجام دهیم، یافتن دورهای مناسب نظیر دوره ۱۴ روزه در اندیکاتور RSI است.
مفهوم هنجارسازی
این روش به ما امکان میدهد تا مقادیر را بین صفر الی یک (یا صفر تا صد) قرار دهیم. این مفهوم حول تفریق حداقل مقدار در یک دوره مشخص از مقدار کنونی و تقسیم آن بر حداکثر مقدار در دوره مورد نظر، منهای حداقل مقدار میچرخد.
میتوانیم این فرمول را در پایتون کدنویسی کنیم. تابع زیر، مجموع زمان OHLC را هنجارسازی میکند:
def normalizer(Data, lookback, onwhat, where):
for i in range(len(Data)):
try:
Data[i, where] = (Data[i, onwhat] – min(Data[i – lookback + 1:i + 1, onwhat])) / (max(Data[i – lookback + 1:i + 1, onwhat]) – min(Data[i – lookback + 1:i + 1, onwhat]))
except ValueError:
pass
Data[:, where] = Data[:, where] * 100
return Data
# The onwhat variable is what to normalize and the where variable is where to print the normalized values, i.e. which colum.
اگر این تابع را برای قیمت پایانی جفت ارز EUR/USD در بازه زمانی روزانه با دوره ۵۰ (به معنای این که تابع، ۵۰ مقدار قبلی را بررسی کرده و مقادیر حداکثر و حداقل را از بین این ۵۰ مقدار انتخاب میکند) اعمال کنیم، نمودار زیر را به دست خواهیم آورد.
اکنون اگر استراتژی سادهای را ایجاد کنیم که طی آن، هر زمان که مقدار هنجارسازی شده برابر با صفر باشد اقدام به خرید کنیم و هر زمان که برابر با ۱۰۰ باشد اقدام به فروش کتیم، نمودار زیر حاصل میشود. این سیگنالها به نظر میرسد که چندین قله و دره داشته باشند. این نمودار، شروع خوبی است؛ زیرا انتخاب ۵۰ مقدار قبلی کاملا اختیاری بوده است. برای سادهسازی بیشتر، میتوانیم به مقادیر هنجارسازی شده، شاخص هنجارسازی شده (NI) بگوییم.
هرچند، ما در صدد دستیابی به مقادیر بیشتر از این روش شگفتانگیز هستیم. اما چگونه ممکن است؟ به بیان ایدهای ساده میپردازیم:
ما میخواهیم تا این تعریف که دوره ۲۰ روزه از دوره ۵۰ روزه برای هنجارسازی بهتر است را از بین ببریم و بدین ترتیب میتوانیم شاخص هنجارسازی شده جامع (All-Normalized Index یا ANI) را ایجاد کنیم که از دورههای قبلی ۲ الی ۱۰۰ استفاده میکند و تاثیر آنها را به ترتیب مشخص میکند.
اگر شاخص هنجارسازی شده ۱۰ روزه مقدار ۴۰ را نشان دهد، مقدار واقعی آن بر حسب شاخص هنجارسازی شده جامع برابر با 40 / 100 = 0.40 خواهد بود. بنابراین، شاخصی بین صفر الی صد خواهیم داشت که شامل ۱۰۰ شاخص هنجارسازی شده است.
اگر بخواهیم این موضوع را به زبان پایتون بگوییم، گزاره زیر را برای لوپی (Loop) خواهیم داشت که ANI را ایجاد میکند. به خاطر داشته باشید که هنوز در ساختار اطلاعاتی OHLC قرار داریم:
b = 4
# Looping and adding 1 so that the correct column will be populated
for a in range(2, 102):
Asset1 = normalizer(Asset1, a, 3, b)
b = b + 1
# Formatting
normalized_values = Asset1[:, 4:104]
# Calculating the ANI
all_normalizer = np.sum(normalized_values, axis=1) / 100
# Reshaping
all_normalizer = np.reshape(all_normalizer, (-1, 1))
Asset1 = deleter(Asset1, 4, 110)
# Concatenating the OHLC Data with the ANI
Asset1 = np.concatenate((Asset1, all_normalizer), axis = 1)
Asset1 = adder(Asset1, 10)
Asset1 = Asset1[102:,]
بنابراین، اندیکاتور فوق، میانگین صدها شاخص هنجارسازیشده است و به ما سیگنالهایی میدهد که اندکی بهتر هستند. اکنون به بررسی نمودار زیر میپردازیم.
میتوانیم مواردی را به ANI اضافه کنیم؛ زیرا این سیگنالها نادر هستند. افزودن میانگین متحرک ۸ روزه، به ما سیگنالهایی بر اساس این موضوع ارائه میدهد که چه زمانی میانگین متحرک از ANI عبور کرده است. نمودار زیر، نکته قبلی را نشان میدهد. بنابراین سیگنالهای بیشتری داریم.
نتیجهگیری
کاربرد این اندیکاتور چیست؟ سنجش و اندازهگیری روند، مفهوم کلیدی و مهم در انجام معاملات است و شاخص هنجارسازی شده نیز با استفاده از اطلاعات قیمت پایانی، عملکرد بینقصی دارد. اگر اندیکاتور اسیلاتور استوکاستیک از نسخه کمی تغییر یافته و اصلاحشده هنجارسازی استفاده کند، میتواند به ما کمک کند تا روند قیمت پایانی را بهتر مشاهده کنیم.
اگر مقدار ANI از ۹۵ بیشتر باشد، بیانگر روند صعودی و اگر کمتر از ۵ باشد، بیانگر روند نزولی است. روش دیگری که میتوانیم از ANI استفاده کنیم از طریق تقاطع آن با میانگین متحرک است. البته میانگین متحرک ۸ روزه یک انتخاب دلخواه بود و میتوانید از دورههای دیگر مدنظر خود نیز استفاده کنید.