Ծրագրավորում

Օգտագործելով Stocktwits-ը՝ ներդրողների տրամադրությունների չափանիշ ստեղծելու համար

Ներածություն

Stocktwits-ը գովազդվում է որպես սոցիալական մեդիա ալիք թրեյդերների համար: Նրանց վեբկայքում դուք կարող եք որոնել ըստ տողերի՝ տեսնելու տարբեր հաշիվների մեկնաբանությունները՝ կապված բուլղարական, արջի կամ չեզոք ուղղության հետ: Յուրաքանչյուր գծապատկերի վերևում դրված է տրամադրության արժեք, որը վերցնում է օրական աճող և անկումային հաղորդագրությունների կամ «թվիթների» քանակը և դրանք միավորում է մեկ չափման մեջ:

Այս չափման հետ կապված որոշ խնդիրներ կան: Հիմնականն այն է, որ հաշվի չի առնվում, թե ով է օգտատերը: Յուրաքանչյուր ոք կարող է հաշիվ բացել Stocktwits-ում և կարծիքներ հրապարակել այն ամենի վերաբերյալ, ինչ ցանկանում է: Դա չի նշանակում, որ նրանք անպայման սխալ կլինեն, բայց կարող են լինել որոշ օգտվողների կարծիքներ, որոնց դուք կցանկանայիք ավելի մեծ նշանակություն տալ, քան մյուսները:

Դրա լուծումը ձեր սեփական չափանիշը նախագծելն է: Այս հոդվածում շարադրվածը պարզ է, և այն մի փոքր սահմանափակ է իր կարողությամբ, քանի որ Stocktwits API-ն թույլ է տալիս ինձ գրավել միայն 30 ամենավերջին հաղորդագրությունները, բայց սա մի շրջանակ է, որը հեշտությամբ կարող է չափվել ավելի շատ տվյալների հետ: և ունի ներուժ՝ տրամադրելու մեզ ավելի պարզ պատկերացում, քան տրամադրում է Stocktwits-ի չափանիշը:

Մեթոդաբանությունը

Այսպիսով, ինչպե՞ս կարող ենք ստեղծել չափիչ, որը վարկ է տալիս մեր կարծիքով առավել «տեղեկացված» առևտրականներին: Ամենահեշտ մեթոդը յուրաքանչյուր հաղորդագրություն կշռելն է՝ ըստ օգտվողի հետևորդների քանակի: Մենք ենթադրում ենք, որ իրենց կարծիքներով հաջող պատմություն ունեցող օգտատերը կհավաքի հետևորդներ, քանի որ մյուս օգտատերերը կնկատեն դա և կպատասխանեն՝ հետևելով իրենց հաշվին: Քանի որ օգտվողը շարունակում է ավելի օգտակար պատկերացումներ տրամադրել, մենք ակնկալում ենք, որ նրա հետևորդները կաճեն և, հետևաբար, նրանց կարևորությունը մեր ալգորիթմում կաճի:

Stocktwits API-ն անվճար է և չի պահանջում որևէ նույնականացում: Այն թույլ է տալիս մուտք գործել օգտվողների ամենավերջին 30 հաղորդագրությունները՝ կապված մեր տրամադրած խորհրդանիշի հետ: Իմ կոդի առաջին բաժինը ներգրավում է EURUSD հաղորդագրությունները և շրջում է վերադարձված JSON ֆայլի միջով, որպեսզի մեզ ներկայացնի տվյալների շրջանակ, որը պարունակում է 3 սյունակ, հաղորդագրության ամսաթիվը, օգտվողի հետևորդների թիվը և օգտատիրոջ կողմից նշանակված զգացմունքային արժեքը (բիլիշ, արջային կամ չեզոք):

Հաջորդ քայլը մեր չափման հաշվարկն է: Մենք փոխակերպել ենք տրամադրությունը թվային թվերի՝ որոշելու համար, թե ինչպես են դրանք ազդում մեր արժեքի վրա, այնպես որ անկումային տրամադրությանը վերագրվելու է -1, աճող տրամադրությանը վերագրվելու է +1, իսկ չեզոքին՝ 0: Մեր չափանիշը կվերադարձնի արժեք՝ 1 և 1 և հաշվարկվում է հետևորդների սյունակը բազմապատկելով զգացմունքների սյունակով և այն բաժանելով այն հետևորդների սյունակի գումարի վրա:

Շատ արագ նկատվեց, որ «չեզոք» հաղորդագրությունների առատությունը խիստ թուլացնում էր իմ տրամադրությունների չափումը: Ընդամենը պետք է, որ ամենաշատ հետևորդներ ունեցող օգտատերը չեզոք լինի, և մեր ցուցանիշը շատ մոտ կլինի 0-ին և մեզ լավ տրամադրություն չի տա: Լուծումը չեզոք հաղորդագրություններն ընդհանրապես հեռացնելն էր։ Սա այն նույն ռազմավարությունն է, որն օգտագործում են իրենք՝ Stocktwits-ը՝ անտեսելով ցանկացած չեզոք հաղորդագրություն և համախմբելով զուտ աճող և արջառային հաղորդագրությունները:

Այս չափման կամընտիր փոփոխություն կա, որը ես նույնպես գտա, որ բավականին օգտակար է: Չեզոք հաղորդագրությունների հետ կապված հարցի նման, մեր տրամադրությունների չափման վրա կարող է մեծ ազդեցություն ունենալ մեկ օգտվող, եթե նրա հետևորդների թիվը զգալիորեն ավելի մեծ է, քան մյուսները: Իդեալում մենք չենք ցանկանում, որ դա տեղի ունենա, շատ հետևող օգտվողը պետք է կշռվի որպես այդպիսին, բայց ոչ այնքան, որ նրանք կազմեն մեր ամբողջ չափման 90%-ը:

Լուծումը կայանում է նրանում, որ մեր հետևորդներին հատկացնենք երեք խմբերից մեկին, որոնցից յուրաքանչյուրը ներկայացնում է օգտվողի 33% հատվածն ամենաշատ հետևորդներով: Այնուհետև մենք օգտագործում ենք հետևորդների խումբը որպես մեր կշիռ՝ ի տարբերություն օգտվողի հետևորդների իրական թվի:

Այս մոդելի վրա կարելի է բազմաթիվ հետևանքներ ունենալ: Թեև API-ն բավականին սահմանափակ է, կա ավելի շատ տվյալներ ստանալու հնարավորություն, եթե մենք կառուցենք քերիչ՝ տեղեկատվությունը անմիջապես Stocktwits կայքից վերցնելու համար: Նմանատիպ գործընթաց կարող է իրականացվել Twitter-ի միջոցով, որտեղ մենք որոնում ենք հեշթեգներով և օգտագործում բնական լեզվի մշակման ինչ-որ ձև՝ թվիթերի զգացողությունը և հետևորդների կշիռը չափելու համար: Այնուամենայնիվ, Twitter-ի հետ մեր առջև ծառացած պոտենցիալ խնդիրն այն է, որ դրա նպատակը շատ ավելին է, քան պարզապես առևտրային գաղափարներ տեղադրելը, և որպես այդպիսին, մեր հետևորդների թիվը կարող է շեղվել: Պատահական թրեյդերը կարող է ունենալ հազարավոր հետևորդներ՝ իրենց տրամադրած այլ բովանդակության պատճառով, և, հետևաբար, մեր մոդելում նրանց բարձր կշիռ տալը սխալ կլինի:

Ստորև բերված է զգալի ակտիվների հավաքածուի համար Stocktwits-ի տրամադրությունների աղյուսակը, որը գործարկվել է մարտի 26-ի երեկոյան ժամը 21:00 GMT-ին, որպես արդյունքի օրինակ:

Շնորհակալություն այս հոդվածը կարդալու համար ժամանակ հատկացնելու համար: Եթե ​​ձեզ դուր եկավ այս բովանդակությունը, ես սկսում եմ նոր ալգորիթմական ֆինանսական տեղեկագիր, որը կոչվում է Algo Fin, որը կարող է ձեզ հետաքրքրել: Այս տեղեկագիրը կուսումնասիրի կապը տվյալների գիտության և ֆինանսների միջև՝ սկզբնական ուշադրություն դարձնելով արժութային շուկաներին, բայց ես հուսով եմ ապագայում կառուցել ավելի շատ ճանապարհներ: Այս պահին տեղեկագրին միանալն անվճար է, քանի որ ես դեռևս ծրագրում եմ գործարկում վճարովի բաժանորդների համար, այնպես որ, եթե սա ձեզ հետաքրքրում է մի բան, անպայման արժե ստուգել այստեղ: