From 4157bacef61a896de03b6b868429d3691cf7c2a2 Mon Sep 17 00:00:00 2001 From: pratik-urkude-algobulls Date: Tue, 9 Apr 2024 11:45:25 +0530 Subject: [PATCH] Deployed 612f263 with MkDocs version: 1.5.3 --- .../python-build-view-results/index.html | 10 -- brokers/connecting_alpaca/index.html | 4 +- .../imgs_v2/pyBuild_broking_details.png | Bin 36323 -> 66446 bytes .../imgs_v2/pyBuild_broking_details_1.png | Bin 37051 -> 0 bytes .../imgs_v2/python_build_Oauth_successful.png | Bin 42311 -> 45852 bytes .../python_build_cumulative_return_plot.png | Bin 31256 -> 48675 bytes .../imgs_v2/python_build_daily_returns.png | Bin 32660 -> 42465 bytes .../imgs_v2/python_build_eoy_returns.png | Bin 9536 -> 16861 bytes .../python_build_monthly_returns_heatmap.png | Bin 12148 -> 34562 bytes ...python_build_monthly_returns_histogram.png | Bin 9428 -> 19064 bytes .../imgs_v2/python_build_order_history.png | Bin 58554 -> 70876 bytes python_build/imgs_v2/python_build_plans.png | Bin 37856 -> 63639 bytes .../imgs_v2/python_build_pnl_bar_chart.png | Bin 33549 -> 53188 bytes .../imgs_v2/python_build_pnl_table_1.png | Bin 155444 -> 0 bytes ...python_build_roi_volume_trades_heatmap.png | Bin 33369 -> 59832 bytes python_build/imgs_v2/python_build_stats.png | Bin 53489 -> 68046 bytes .../python_build_underwater_drawdown.png | Bin 30568 -> 54719 bytes .../imgs_v2/python_build_user_logs.png | Bin 198102 -> 94989 bytes .../python-build-getstarted/index.html | 2 +- .../python-build-view-results/index.html | 17 --- search/search_index.json | 2 +- sitemap.xml | 118 +++++++++--------- sitemap.xml.gz | Bin 738 -> 737 bytes 23 files changed, 63 insertions(+), 90 deletions(-) delete mode 100644 python_build/imgs_v2/pyBuild_broking_details_1.png delete mode 100644 python_build/imgs_v2/python_build_pnl_table_1.png diff --git a/analytics/python-build-view-results/index.html b/analytics/python-build-view-results/index.html index 5d8a93e9..33b1ede6 100644 --- a/analytics/python-build-view-results/index.html +++ b/analytics/python-build-view-results/index.html @@ -1684,13 +1684,6 @@ Order History - - -
  • - - P&L Table - -
  • @@ -1749,9 +1742,6 @@

    User LogOrder History

    View the order state transition for every order placed by your strategy in-depth. Order History

    -

    P&L Table

    -

    View comprehensive trade-by-trade report in a user-friendly tabular format. This table provides details on entry and exit trades, prices, timestamps, transaction types, and trade-by-trade profit and loss. You can display these figures in either percentages or dollars. -P&L table


    diff --git a/brokers/connecting_alpaca/index.html b/brokers/connecting_alpaca/index.html index f31a7329..526ea918 100644 --- a/brokers/connecting_alpaca/index.html +++ b/brokers/connecting_alpaca/index.html @@ -1760,7 +1760,7 @@

    An overviewNavigate to the Broking Detailspage on the AlgoBulls platform.
  • Here you will see all the brokers you have connected and their current statuses.
  • -

    pythonbuild

    +

    pythonbuild

    How to set up Alpaca for trading in AlgoBulls with OAuth?


    Before this step, please make sure you have an Alpaca account. Click here to visit the Alpaca site for creating your account.

    @@ -1803,7 +1803,7 @@

    Provide Permission2024-03-14 + 2023-12-11 diff --git a/python_build/imgs_v2/pyBuild_broking_details.png b/python_build/imgs_v2/pyBuild_broking_details.png index 2c8122e29b14fa1165d4c83595a292f4cc59e19f..c5a5c4912da236e50099f1ae0f27d44ff62da01c 100644 GIT binary patch literal 66446 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%0DML)2)^4_}avRtKXi*v0=0glsWN} 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 diff --git a/python_build/imgs_v2/pyBuild_broking_details_1.png b/python_build/imgs_v2/pyBuild_broking_details_1.png deleted file mode 100644 index 50fc85455db05e9f09788318405a059b211cd72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37051 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 U6d3w(v|#)(r=t~rId}O#0X3|OBLDyZ literal 42311 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 diff --git a/python_build/imgs_v2/python_build_cumulative_return_plot.png b/python_build/imgs_v2/python_build_cumulative_return_plot.png index fdd4ca8d044409ed0f88cf999a96dfe8a174f1e4..c61f5c3fcb3159530b1cc16c824d0722544ca108 100644 GIT binary patch literal 48675 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%0D$nfaGpAWPs2`Y84hMja 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 Rh-R2eU)T6_{;!vB{s+L}VIBYg diff --git a/python_build/imgs_v2/python_build_daily_returns.png b/python_build/imgs_v2/python_build_daily_returns.png index 5b40daae1fb305c22029c770920642ebae3ed965..31807f3293fc152d00936001f5e357b8dd02ce6e 100644 GIT binary patch literal 42465 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

    )3DmTj5j*VE9r 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 literal 9536 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 S)MEcUrTkkJ>54Zd!T$?~aG!4g literal 12148 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 diff --git a/python_build/imgs_v2/python_build_monthly_returns_histogram.png b/python_build/imgs_v2/python_build_monthly_returns_histogram.png index 67f0f2cbf0b5407a69f7cf5568434fbeaf19ac6f..c0df7b7f95a4ef53f56e4d3763cdf00f82fa3c58 100644 GIT binary patch literal 19064 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 literal 9428 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 literal 58554 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 I&B*)z15@we)c^nh diff --git a/python_build/imgs_v2/python_build_plans.png b/python_build/imgs_v2/python_build_plans.png index 13789e364ea523b47d42868e9b78996223cd1a1a..d594c53823227191d0af049c9ac4c82a4ca2977d 100644 GIT binary patch literal 63639 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 literal 37856 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 diff --git a/python_build/imgs_v2/python_build_pnl_bar_chart.png b/python_build/imgs_v2/python_build_pnl_bar_chart.png index 40d21c9f9fa50c9d260b1f5af097abf867f60135..62e6355007b971aa89c8c5f36cd78a178ba84146 100644 GIT binary patch literal 53188 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%0D7yMTu$B6q7_a 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�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 literal 33549 zcmeFZcT|&2-!2;agNmrAJfMO~lO{?PX?6%z0qI4N-lYc!K~%7Uh8n6;LIb>+h=|I?6b~V-#>e=owby8C-*%w_sp-)bGGziq|3MV{cxJ;6}p8+(53I3NT$^wYJh473P=UcX`yKDIc4h_Va2N9Bgu)}45? zPp{YY@JGp_0{Ksw>lm3T`@vaSx()9_O0*0p+CgpO!} zb9R1^&ZRkh9V(6SAQd{8V&&Lq#CwC7>VEiAkhCG!Ne%bydfRsJ)%*0UtgaV^KRjjI zJx3pRKI87;-S=d6`Upo?GM6*bQrnU{lqvm<*J}Cg0NGsy z%FlHLxlSkFN?bki=iz(K*328jrWE=-tf;^-p!5LL{m7g~(5HT-VS!u2J-l{e7)l>f zDMH8`1<~8D7}2C$ac|$#9+VY1E_(G$N-U=y_tlf{yyc@=o61f=Zg|OO9l$ zBBO1$gbC9Zj+bVxr=;F)*eJOzR;29u>5Zgdh7VNnmgHq^y*k`REK`fuSDU@;uD7v9 z0kTif+&5ing$B9vTY+XN8AbEUD$sn9A~P;p4fS>{wt1;(fn@2=$Ls0hQ7ea#;ROr3 z(V#e4RU^TUB$d;bQ)10Sl$+-#*G`~jVRN<2SAX7rf6J{TyKeSXDXx~es?)?aagkT0 zVQvp>OBzWuTlP8L2=4B7w2sQMo|+cQt-{dp1<@vgne)c>w`8=mi-xI(c^$glbq>h* ze!YrW)>CJydU0M8~c<>qaI2a?6_`0CR1F7wWJG~`SZ{^deEhsuBbov z{GA+|WWi^sYc(_bvGDlx$Vtf-n*dqu)a|@=hsay@TP?nxG40uJm7~ZpYBBYFb(8); zRy)uiC>jJ}c%@lZy>nfXZ8W=KSQt5!Q_>||{G&Kx{b1Igr$c>}-jx`qv{~#mK0Qo2 z5r%X#UM}4s*v^}%Hs{cKS@F0uj?;uz)g=||(Z5lOM6P_eZc9T~p&t=qvew2*WeiAfZ2lvO= zyl1^t#J-1I!=G_}B7ft|Aq}|`jnd78EGh^rQRPv0o-gF|X;@nOC zSl*kS-*;@plXFH0x!NyZ{_{(WS&PPT11FHcK3)T`@8ZmD51?S-sT(F_7l{&Iyx@ft2H_�whyy0 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 diff --git a/python_build/imgs_v2/python_build_pnl_table_1.png b/python_build/imgs_v2/python_build_pnl_table_1.png deleted file mode 100644 index 3d29e36831376c5e78c5f745e26b630a1751b42b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155444 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%0AG5p$#A*aSnkj?p{FeQ8_oB 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

    Q7-}Qr=IMyzA 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 literal 33369 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 z zv73~>v~IiyHRpkS(f}(c5i)i8IAM$^qpTry*b(nKBCvm#+O;-s$Decr&l)b3hIV-( z)?dHR&-*BDq>Ldgx%X?oP6OQY6(!#zMm1PCX_oTa-KEO>0WB!g)E2ECoF$o)Yc@|z zB74Z35{Bs-vfEv!pyon713hOl;9T1knJ0 zTsv^_v?B+}9fjSL)Zc8y&6U{;pDou(WJmGus6Cz!7ZyG5a;;Xnc$l!9ZEMey8N&0K zyyyGGd?)!t0B=bMX1DbN#eVaRXTW7K#czD+;SBA1`eMRLh%3%yivy_2d|d(m0@NXi zR%gV-HsrQS`lp?GlVvc8x#OBPE=Xj{*_4}qQD*t`+!8*2RAE`yfM>cWqJfh(RS^~F zb#MD*x6`~&?S8wN>|zaH#BmlmjBh+3iw&X1!^tmIFCl@E53EqVv_Bk=$5N}4jqv0H z;txZPzE#<)dlyfzy3!LRzdegSfQ;Jl+kg<>?JlC5Dh=`bvt=ETWo4Zx8-A{h+;@tu zTJCkX2}p{vY-N@V7!r41g(>uNV4?S& z8B`*_PoVHCcJ%6L363T`e*$!EFr*mzFUQ|1v|;NR2J<$ul=q^fGkMJ z9aFF``~48<(hU3gg{A+y&Vv1M46+l`cv*8T5yJ4g#t zsDxDPl`-sDNS`S)OfKXIEYVkvmPOoN=5b#lKr9k4)lGvnVWMNe%Q+{JO`WKDzg@9S zJx_eH4Z=2taHSVge=sr_uu2sW5YW{CbQC#?ZRxjovxjXv!gFNkG4!tnKHCnAf7?A& z{HfP%xVMAozfnj+JGAy4p{v$*hQz7gR66Z}Dhw>W_1&|%pE2`+Kl|zmxnX;vmyiBc zhI(=-#AP$_yJ~Z15=%0wWyB}I$4AeP)HFxDC8A^tZx40~m20XUuhJ@RqLS&&G~#cl z#Iz9g&yof`K{e-Od*LCc^fTNZPfI6>dcZ*(+F?vvbve^b&hDj>3!h%IdvhYbp4a^Q z>B=!swiV;`4W3zU&Vhzf0+{uA{aC{CG}5xp+4c2afBC{lpbJmixJm00f&Ov%zQ{A0 zKoG%&A``tl#P9+)Qcfv%TY&8uT{s=b*vH@n=X6KR5?#Cb3(i>%e!-P0Vk;I?Nr*51 zB9~??DdyBuCO_}#w*$nB3CrQV+4*IOe#gcv0^IM3X$h+sr>x%pE|==u>BDm6y_{{!~dTsI^S+t%%G z2p`sj(RZ2*{EBOe!U1$9me;|Gj8>D0aca%Dd!1h%VF^Ob1y&*;r0upip`H2k=^@0_jAC0w!XbgtVR{XgguZ6YWPi*jd60L8#vw7Eh^nm6D zR@DZo0jJfi`XO|4P7;r-@S1gX0#mt%{7qa$?_>GgB@Fgx-3IW4jA7+C+yGD zr*S@#_aD$JvVSUK^#*;{B@46+I@mxSc|Czb-7-niRy3$L?D}{y5NEfw5f2IxI)}#h z2A#H?76*+If&KtGr9`u&R~_Jmyn~TV>5cj|3v>j0k9i0cl98mTjU%^za1tDO+=%IU zHi&NXgd&Qc59t?a(`phsKi*Osv44?%#={v*%L&3)_T%;ldyO7?j8ei$0YhdF8<%5hcunFt%d zLhlC=L^m-Tt)_;;pn4;kZ^b(ThQ#Sc4ub|UYFTjo2GIp8it73^;U$W6F_3()AN%u# zqX$R^eoV~UY;4s-F}ypMlJ0^_m^~>-`gG$gm*+bt3fitz)VXK~PrIkTR4Hqid>jk> zS1(zrOz21i8{reZ@i{DXkU}!B-jI8rxnpIY!qlcz`PmAD;NfXm@HaKl`MSu*{_T_4%ViW_y%H&AfRdsAgUtZ2A zuejYz$BWegrDu^_$uO2vVb9dg6&jU}3FmNHO*O=JcS?5NCT?#$f!|}3EMqe+++BQr z$tu4ycL5Lm2j=)Z&PBPiyrz6S*FbymD}xko>eppNun(=#<>B7jqoe&ByYOumx2de!&eUcyYC&!LG)p( z%OO@e%3VFS8-dnz_t5($*^vK@N?rH}3V=`DaM3$5*WaK6=p=_tbSwmLSR5Gr5Bf zW?A*6FZR==?5(6;vvVy&dAhDI8tQPV&V^I#o`Q;Sc&F3IC?vsa{o~=)HP#eHAMSJJ z9t3pA`i;P}R`_iNaf)^e<-WJnknCdcd}2+kD6mFA zvg7q9RPWWbK5*MEvXfL6U@aE!o#EiW{LMUnHdeoK9eI9&=^XEn#d>#5GW= zPoV>CHt4$Z_7;5fQuBtSW~YlB|Y6b$`Vt@zqe_I5gw( zeD&3^{@z--Z68C;!a|of)U=tZtA%NGD((7G|AckL6VEPjQ9ozNv1eQ1&6iA8GuD0*uuDX|x^6_(b*E7J@6UaiD>+zD@-!nq6OWUMl$+Mumg(~q z8XuN=3&XA6yV5^S4jFX!=l;Sd|F+xF}pQTIDMe(vZ4N*{(=Yj2Z*Uda9T=0 zSJ{b>t7$nVllE2N8uIF`rx}V%x)<*04fYEd!+~Jcwy5pfG|YxnH!`hrZLaHLHmI-q z1!IY)c`r-xg*$-+_4Ho#`c*M>t6Vyrdr@j;wlu?%{N7Kn%Ye%e83Z9Rb=WiHn>~@5 zYtSlLK`LtJ`8K^RhV>h_VCwg7ZsSZLbrm4m*eWE zqSl(uJb(^qYG~;v&={J6)i1d)U0ae{0Qu3`VO7ei=}|2|*rfMDVAh>dD`v#`M)YRJ z;nJdEZ6;BYM83iebUK)n2U4=PE$6uLxIEmLaiF_y`!gbEi>~L>$jE)sga}7Co#~g% z@eus6DCEkK(bchBN#~$-ukAefGr8waE>AZFUjCa^<4N%|9nW?lpH=A4s-nnHtkE%q z<5IrjNu|DLRZg$m`IwD7@28+yNA{lDs#OGaB8&Y#y>Qa5kBcX!SV&%{9Luvrp|^FU!w9uDhcA zilRwhc}Li-FhpA1{HGZ$r6^|0#<;t+E@65&TUG!Mh>dG`;pMmsNqKo=XRwqC5sy_w2tF!jrrm}I)dEpz^QBYra_Pz;r;m%d$ zE$A`z+`+?bu`g=QOmJC&T+(oowzhgRFaAhWUg$ z9^2CKW?bI33)YVY*N9@Q`Z;D)>o}eOGfI<<_iqF}8ixXj%6czKPP2cKmrZ(?b)h{Z z-=4JW`QxQC?o2s81p3+JFn$y9iXYcQ5-`0UM2WO=&Q}9PJ2hxcMV|Zs>z7nw7+Yew_k2)(|95>`%5Al&-`yuG3tHpKi&V1 z10d0Xs@Rbxy4l(_Ar@!TTD-$++(Fey&*`o74LxcGH3{K=ewvIOrL4$#2qNRJh}S1p zXKlLkIpcj-^KVP8MOR*XOg#tai5<$$WfJItRdJ#JABU%)dAq&P4HW~=kJ<=2_gb;L zp5jJDAH~~zHR-)+NIdE0cKM)ucZKN_X!~Z;DV(Oc5#uvbowW1=O-S8ypEMAmi4Raj}NcJ zexuE2#jRcePhRju4l&*!lqH+4s`!7NljtqZCL;3s?1@=C0BqRXaF8tSUYkEJ|2cGK zNB7g%W+L3?1fd=6md3Fs!$>#{kkkddi>ID71Orf$9v=cnAx0}lS4vJ_sd2)e2O_RpSZ)f*;jw(9ri|Q@pd8{o<@0`N~Tk;_2 z7$Zorf!I7w)795WcbjVAS6HtjUM2;%iMKuf+hY;=kGBEzRMGtIDq?kQU4eORazIKbl*JyN)!TG z{t;vZYZ1oNY79OoO{rKgFTxEg&`RNk+0udiqkp$8d>vA~FRGd(S37K9ehV$e=(VWr ztHUXA64bh4J#3oB0-8Htr$evLr=O}@8>~f45--ilr^mMS;E-wrdC|b9bcA6~t%3;0 zSE30W{&CdW8_u)+;*33!GYcjP1UuDClh@uzJDtZiR%c>5@;W>@N^o^7(M0%PEC(Qp zIJ~rNwPWq%EputR(rxp&4TzynJP4ziv1{*--ue!-YgtjCznODVB82#AN0m;t;GL>$ z+>08bo67!JrR$CAxrz@2dQ<0^00LrEGTH$5)`YzzQ{h1yh!=r)Q+ppCcI|e7CbCme zWYDEsIXXvXjG~s%AE2zr(^5$9W7uI-e<|j=M4D(T6fW?}+$;Zja%4v2jY{cxs4g!Fa%{Smc z0m%Mb;D4D)3@ZXHdJhp&2;^#EAQO!(X0qYB<{Pw=yA7Ni497BYG}9ca0#jkG(}AuP z0H=A5u>b}T6=*V1>s4I*LAh@iVA}3Twz(o^V1|J}W5gID!o;W_;EzL3Ged%p6jc!q z7)Rz7ET8V;p6xi<9`Me6qSp%`2qgv(eqlO83yc=MlJ*Lq`UG%8Qis$7k{-sI@{F17 zj*SE${RSVTTY^bfeZWtbCAjX&SLr+#v#OzC46Ot*0N9)6?Zc1A++syMCAZ&a8Jv$9gF#moXm4$1DSg# zzvGS78;%xakpRW^j;){)TO3^5U{fA-u)J)P8Uwl{K;1^zYNycQj)^=x_|pGTwaZ8# z00Js9d1pM1>TDYh>T}5`Iua{{k;kzxwe8uj`He_`zYp!y6Xw_>M<ke9NCl0NPCdH8^#RMMO_i>mja zkbpzqZ;xdyL!h0MZGuoy+PQ0-dKYD{ZqFKaRH71SQBH<5|DgEoi+mMiu0#|)>@X!eEV=&Z|BMDj=!g*wO)cs6T^29H@-VEwlH*Y;7e86$K zQVVp`0MXof{y7^^YynfoQ-m6T;1j_E15kIm)v}aatOEXoWhGlnWJUtzM7tJjFj^q< zY~H{g;N<}t)w&uQ+VkLb=EL>8JY_zFqdlNthWY%Y7PN}t=Z*oa+eNP)NeK)JL96OD zr&I;gkG7vn_uz zSOQR1KN-GPxnl|5VRJacuzAG-(42tKvU6Muco~POS@Rz67bUyVVQRiE5hS1*!ZCVe zOhbb@yG)YQiS)%wpQpSyX@>A6vrlHjdc91=rXAy=CPwAe?j>9+th~*+&-(}et_&N| zCR0~Z+=zi25PcKS$?J{L<{s$)o@q%N&pGe9d(x2@(<;*tny4Q@L0qgwv-*f+!wFxa z-aSC@9N%~3DK%y$1E|P6?XK({IrR>7q40-mKpa3|n;j3@6$yFKb8)k`YRhu#H34(- zjt~PN0l#3QiU2eV=+I99NCeD2G3>sU?UTW4pVg6<$N994taFeoR|Oy8$8_ z7reQPh>d%9sD1OKBn7@%Q%wmYJ*Gs}S9h5C20gl3)zt-i$sH=E`ssqRk-J4r8sUWc znYc{bODii1du=!#*s$v^0IUrF9GTa3XPKzt+>v?r^N7&=#lVmU8V3tHfR_A9FRS*h z3Wb7w^@4vzcH_Lqj2NHvjeSwy)75%@z!B}P7b#}U_{azQ0%o1`)j1La8JGG<88FOd zdo{>K@&?W*YZE!QYH1ycO-@3r9V2kQd22T`@zbyXFrwzH`W%{Xv!oTD<^4v&$ag=S zn-_Ws_z2<0N_7pfer~y1x&@ndtYcAjtVPG%^(VkS%u5?=fNJ&}U4ApZQE4nQ^aG8Z z-EpCbP+iP>Il5V(83$66p#kxtl%I~T4~N68LDkh9Rm6-K8{;j-*9k{@S-=$7*x0zg zgI%RQcH5NRehLf^P8bZr8|DB~KVBtfRgo%%?sbn0nplNs6q4 zM#G>GTlugR?oPlCfW z$l(J6nHt@dN9A{`}cw; z4i+YVn&^lJ`S2JQ`%Zs=5fh=*>vxOK=M20jWr-FvrG*}(-GOhn8A zQ8!M;DwC}E3wTECUvMu!RHnt;$pu2tFZ{uL=~t0#?OJ1EP#Kc`UWw4)uI9T30IW{Dj4O$h}fX62IztfL?h<5@)~rv@e_UIv5ea!GRCh`FcH(fID->)7u(%&K=+@zFB7- zyJSUnr6f--ESRhx3@ zZa&AMX~!jDNU&ohs7o>#CnE!hxxofw5b`~F!%%Kql?|}!fFE^W-Dg?HMF-$W&5@A_ zH9d_3M#M(CDe_=G#@$dD5SIbOG61Si@5czfNlkg6pO_>ZQ(HYidpfKICe^gnPhsJ{ zNgqBR4*jI(3%sd$T~_(rfS+r+HGVWQBOoiGe0nuP(n5R6V(xMdrW@SBmcU^L2>l|J z*CJ19gu6gc2S6o+vmb+v)dBS$oSeR3HC`U0%I;`_qf;g-I2ijmi1Et5d7_835rA%G zz_SO)G62q!ZRtnv^VFvUeX`&T)p|janVQK1H@lws{;X_Zu(f(}JQj=<0{sVvAClim z7(M9$TO1&%p(uI}FWt2qN{iZ^s&p+H8vq_2&~NXin-!taf@yo-g$#>j{tm$OMUxv# zLM`!~Z@%A*6OIw-wN={b{Ro1Zsr0>H`w1n7ep-L-=X(tO_!#6dj6@GWF=o&Wlpz6M z7|K4_;bHjQJe(ct=V5ioQI-e;2rXyhW>HOwLD^xK-0V($cf`68Bv1rC{4ib45238! zBT+=t10A=Sh8G@>bB`k|aJAR{1qkUwXP@19U=@AH&kouN%2qxnK`2C0#$dHZfD zCQ!F5UH|y^aQ(wh?n1g7g`w&J?MNcVUspvT8!6zu`|1Dv!oDB2t0Q-wZ~wrW)r`rI zjb^y`CH08hGO0((U&;5iR(o=&E3epJVS2W17mPOjE~Jzt!1&=R0sxl(ET>5e(M z_T}H8xL}Fr8n#nLhwccGv+;W+H>`&Y%t4~U4}z$PcU4Xb{#|9aj(Fq9D#H~S3Yu@< z{tL_z{N|S#?^R~aas}+F-zf7VBmlH&DB482Fr(|uM(mxh>fwaB$S&zAnRn>$GR)#U z{4Y-mKU!pGx_o|0wtsWkC&I-tdkAQ5oDzN*t-QjwN;A&|+2S=(v2u3TSO}mCQ_hj1 z2YA@}|D%Ni-0~mPUvM(NJmVJ%!lQ*@;c0Yz73m+1hftB&+4l+*nAg8iF}mSXP9TzmD=8rxXJPA zB41$-`P^yMLEi0@6K!x+P)^3zYpXYz?2w+SjoxN)|1Ed<5#O^0)%qf7a`$`89K8$F z_@*8UT!uYw-QQf()hK=%QU+4f`PrbBS<1^Ao*PPgYa~Sh&w0X;TxmQdrUPbOF381h zQT&K>no%z5l{t~;v(6MaM_!V{ZAah)+!KDUe5Jyw6R6+Zy6KZ4vYs#52G=$;eKI^6 z@Iqs5l+%V#TIcXSb&~FOfFNIY84V_vYTt z75=oNQ}6O=pnOsnVA~W4n4?g55dwwp-iIX2hr+i{CGCZ~j%B=({+rn`pS1Ur!zI8OEJ1f5B*?2}&IQqcJXBKKRKz z_f_byHq8|!<&22nNy;VG#KEA><s0rz>>CK2Sz~o@~=v&YQY1Ndm z&gOo#BlB0Jh;(OS&(r?kb&HiA*sSm`pLM+qLfz55Pm+QP_C->YDcjY;c*zn6NY;bm z@=*1;5++LxP7#cS6Vgv^yN{Q-C&I_vXsl;?(@3YsW6Vj2z%gukm~=W91EjrTJFF#5 z6oI(rwZ(w%`)Z8bClYP{WS1AYxim}ucc0hG>9p}1Hz40D&IOjV8&%?FRT`Yu61 z;l!DNm6z0^Uo>G*g!d4veXHiv-Giiab<$5w>S?8_7a4r(yvwAZYby|p z7u#~>1)8`EcAsXtHp7dEv~PDL0fEniTDk?93&;vazvYar^i&S%zcQ6m8ze-sT)*(Oo9SA8qD%Z*s z?;z*$v)c=MxYy`-+YCBu`7DOh{3EyFd0WI4klvm*>ClICkg$HGGOBuHL_GqhQE+jP&Il`qQ7tkeC_b0~ZbUT20e zefs8fFx^qRWEZ4&G=On?37V}SFiS^-e~2l8)wuNl;E^?qal6*^tquK2zMRFVWf zp-*o5b>!%on)c?l#;MrTzpf(n&TWLyABzt&KVs#Bl(`9;eIec51S1#V2s84t{9<0? z8*gPR6phlY{0Nb2*{m!@(UY(h{+hO}XHSuDDre*_HI272bg~p*zpFY&cb71Pe>-<1 zncgGds?v}iZ1)kdy4CuXJd1B=KykSDoZuyVWQz;SbK+*d5?r`!(Oi;O0|G?wUvBP; ze8*c;?RVA~ApTU&B3wBgo28YC523AV|BmLfDLTdr$Y0Y1*DLJDkgyB8acg)j&F(qML7Xt#<7f zqeT|;GQCF@<**m`EqeV^sHN*8iZOA~!Bj`~%M8~wRWUA#eu0fcNP|e&fdzwx`O3M= zuli3w1znOIj#96$w1FKZKYz{>0HU^>&L4LYUX1^Gp0_p^9ik_Dmd!9jQLYuIfXZ8he-;$Qt_z1^nR6_cT+#^w%1P~_UB~Rr?5R|y{%UTk^gvCAGMA^mNgy1?WILOA+C z(Vb~%CN3V4!ep77|VY0MJjk?!+ zDAFN9%ZaG;=Culfiu){Fs;17E)JwCv&sLak1msp>&(3GwEVpFucqV)_Ei@iXfc?qj z(I6KI6m5P!zLVI={fpXfb#q(6aDF|0n*Tr;CrBo*S$BOq+Ng z?50_|&v;U|NqdueBi|l&r`N3IuS3Sj_sPp==g_7q`p^5kzx$i|>^;2@y@izY;maPODoIKcO_1d5KGHN5SHIi+Pc%3{^q(c1bza|V$C;$It_MgR#u#rzvnq5n5n$PU8cU$8~Oz@w5l=vs;_ zJX&UJ2@>S5o0gq{jC0FVRj|GqF5aiOD>%FDdv#!?dWXPtY+E^Q`8S)@;O83ztQ0L#d>5(x zTdDC>{JE;*c4sj;^1IOD^u6oDA3k$$1FdiF6^UNO&6LBa)orff6gqWf`eIXCE=uC( zlB@3&Hlp5GIKP6Njx4y|<1OG_cyq$b5@Xwq{zr80c^eO;<+zo}S@(PIK7i+6XHH}uaD;uW0g!vD5dm20ad&(@WBf>)mclRKR=`#`>xKBvUz&wUC| z&8ofG={5O!7IyjgV*0^}*K#lRh3&n_%26P+Kj|-@xEKV?bUC8je_bc2|i&Q>2@f#=;`}bz#=Wl+yd31 z%Xmw{s_0DdiR(6s0$maZ*B#aXm_X9?j^X2@;%&Zsz&c7+$7a3}-hw0S5ka&ElZ`H4 zV?D4!u)KSJ565lEl6Gc9IWMSbw(n3Iac%9ddR&(mh+eVZtuTf6@%Hn9+lX_yjwr+5 z($tG;mvr@PutfbRA@S=kPiGKGj#J>xJdH&z5#hSxxKh-F(%1Rt#45cCwd$rb7jLXS zD1Ve#QX)7WAd-fUHx7y2(P&5~{_*ktCQ5A%D3mwq4}7)>ov-Iz)WX8-tgZz8Zw@#w zrRz&=YA7x*sJ}R#Yn9K0WgpIV-mrP$Uv`dH35og}*mMrSLa%kH`b%;KIb9bKqz(JRCtmGstFYP_ z;Yq|xF|Mg1Y7vhI^*3h^$AsJYbP&xMh46`8Qt_E9=!Dn$=jaUef)hc5KEdCs6Bdn) zBZ{Wu)IO$D`yHCt2R4Sc2~o?3t)8tTTynpyennril-ZiSIb+}qUh*FA@;@Q{RgM=L z^q&b!hpXTARcBBFQJ*34vXk+hly*{GzOBFk18Ttx?mQQvzjtWuH*m`u|Mrft88F8C z(Y)DM$f?S`!aK+L?XUUXInIk8nTW(ApBci4%Fl zIS-gCf%n3|Y>andrsvaoTUVlqIBc)IY2U-){>}C-BIplHlMNKdlKuu!B>%Y6yqDqT zVP^9@MJ(h!Rq)&N)9`%2}8fm`Em5;g8ydsX^{690FF7jWMbM$LHNIs_fUpU-d zisK^xKlN+*f2S0{+4PaMhs#2)eD>dL%)1+I1ur(>{8)DCJ$3?pB93qVJwXHfacmc6 z^jioUohYFP7Rk!J#Ey@I`Pi>-IBXt=@qPqC;ccBw3Tx-@6`XzIH zaX9*?h|1JrfC*Nq_C-87#EhG;8zBU%Z1m~w-|TooU^~{zpBbO^U%}Kir#@6}aeNOP zlNz>4`4~_Lwa~`G$5-$7gHF4aPXB$I$ldRKFB>XOLsR|Zqmb}ofF_Z@h5j*pf6v@p zjf1{>v*}pfYZ{ueWOTXa#ev4%xoIshDGq#0b+mtd*e{FC)Ltt$H;16pLT{{2>LaTq zc7Ew-`b%hQo%f+J$a8P+s{F$G`@Z}CdY|09z}1%N&MvG5f2SsEj5~RB`w<&hExEg0 z`9EJq+G?oET(j0HF2e<$ZHi#FTYF6s-`_{gEB?=7EuAPOetmg(`?}DwoZV6=vS25h zbmyuYcm-J}E<1_4*I5VN8Oxuq3txh}AQ^nd1L6p>x5=edi(UDO{~A0L99$qcl546Z z__n-K?k(3pnL_Z3M@^=V!Zk*$Xc^1_B=DcFvMICd$zvy++!y{k&D z*;X01%s=hDPXji1fX`9edZ8w-EMo?Yn#_YsW-4;mv6vI~63UF_L<@ zM0ZPnOAA8^GC`4jlf<`DzP))>%u4fKQ@Y6`;Fo2H+bI?Vi-Vny9iqA682Ss2S)j;* z-KMvBt+_ru{&ufPuTW7|LSpRUW~k&sDq3xny_za(pFm8Y66(I`LIBl$z&N2QCFSFJ zwILVUI*NkS!YZagZIffH*lU0X&W+7?q*WNzFU-b&)nk%TTclL=+fiUd;(ZZG?YQ{W zN>$0Rf$ffa{BVXyTdB4^n#Qa6DEj(|?7BPVt+w|!k8i)ygAE@`jb0NJ)4xfVSFX`% zh7BninFgGg!a3y2#}MCx3wV{sUmh}>S3QcAQh%~)6#81TPhNuc>-EgDaIZw|DZ9Mq z8!I!X5?@;lIoPoq>a!k;h~{uH%3KQA4rK3n-F_&9N#RF3F}v!1SxcL=*#J{69C*a9 z124?sm%6)ox69tA9o8;{opx{1-;P|E{q#^i*IV=qBF4whydCwv(B150$8L?#Z-uuJ zK0qHf9nK!iUH7VWnQH4iN_we%S#K*v`5OK@p!zeTmkN!;3-ME|nI*Or{=I(GN)gc2 zs=h7M=SGe8rQ4(=jHd~w$sAs2NldBeqNh&Wa_KMOED2_EgF?5LmoU~l3dZ5GJoI`q zf?0gJvS+P(ooz?3KZ-k^ky*u*sV9zqF8FY7Jl7oV9vVFT zUOCV7$lSdnuH@#cNu>X^0bY)w|K1O{=5Sp(70>y;HI}{zQRf7H(h2^hW)LIgR>x)g z{pn@Ht%s<*=U{65j@1e!uNNmO+RJT@F;q&#&`YvG1q%>RI6; z>BW06ijac0JvsS#ou~^bKGuCDVWb_p6aHw1|FVA}dY9@cc)kU!Dw8JKrE5O5>3R%Z z&4Q?LI$zqqc`S~fS1NFta&2-XhXr@hkUC)u&Ah8Sby3`;O@}4s9q+5$8OtPT%U(@s zuD78uFt$28CxU4q{<6s`hz7N#@mwmh1{LI~Yq69t_zBbQx*Ms-!XAI<%7kB=X$Ci+ zm9yANCprm@eEL|j=1~~cHPH1Mm-}#n?Zkit;;y@y>MZKKBq;r+AzE+m>UDbTdzn*W--3V<@Rb*YK1>R`vW;B1aSvum zo|irI6E-l^u400VmIsW+V-t|RHbiI74T=N(uO{j9$Ka*lFMPtrlyb~>P(`0SAw@favg4ED4gAB~P z_qd<)+wSw6&*!{7e<;i>X07#&JFfe>?&Wvbt~IA}*7(GL2!z0$@<|GM5u-d-7kHL< zVrjcSA-WYN1y+4CgMub+HO!DzCJ9{9*Vnvh?4XB+$1Xm38qnlS#O1jdnxVR*{Q_kPY% z;kjvAu0O2SzeZWX5>)K@p5dk=^AnA41L~buM^ZH3A)V)r<>?HJPpTiC%PeL)^Yqg7 z{Lb4|DPyyR7%!XJz~y#%a20uc!OoP_S$DhMxy-+#hwY26^(lfE`OAaak?>bYbpfp9 zp5j|5v9AqZ8;Xt#*{!_6d6+#meteidj)l*Ch@#@${ z4s*HA;lbmd)OhQwZXbi=(jH-qFZ*W zH@}N!nO4;O$^N6S#W*hl?!DyUuMk(eCHv27R&nIY%x~3KN=>WDoG8a=(ooUQ;U@zt zUcsFo>ZVgVIOeQ_IeMMc9 zz9kVQb18aBcPCxu;A&IEoVh z;!0P^4lT;iNAq zLZ`}zQ^gqT2U#nP<`&qu+_)G>eDxk$*wbE+E`vH~P@VudGDq(Fe^GxNubJUhFRgM(3g1185*``^O{=*r)v&r!ccQ7Ozhe;i!al~v$sknRct$c-l!Xou)h+x-TEt=r7Cha zKv+NZyk)XuO8s^@Bj zC3IDEuLMF^ozrPc7eE-eg+7vUR@E7Pfq0*fccJiNZoSUUssa99euVUv80z`glDtp! z7xR@T-SZpY#})VRD&8Xt$g+HpqUd*G&T>xEI}EBBXIV}8?i=FYGB8yMqmJN}v@zf3 z7cZM^8KSyY#N<=V{<-pt^~+;7{MYwGW5V-Bx$aB7AT^}+Fh1YRYce*)jj)hOG*>(xx?PwUtWCgg0CSVGqPFVdGNBC2zbm0aerc4FpGCj(%^x4Nis1S7*tcgwxLw~~tSD4;V_FtjJIG^cS*l+wJHzG)KFmSQ;YuKGZ{0@gy$|=K2Sys6c>q~x>o2>yX&FOdI~bxvGwY< zD*k{m#kAO%FXy(^%h9M}`FrOkzw5KRYj(Wg$xzD9iXOnai6es)^DL2W3LQG#YFVrs zqa%+Hg%82X7dzhR?=F6T3&QFhUB;1LjyIM$H+yf?^B<~~E2-UTn|8`}bVz<}u=f10 zSsA^4a$(oTShV+PNU=RlWnv(ahR_@E!CgJtDJhmVeONrR~N_r`c3P}=OOTm1=yj@_G=LOzR6kdhA4?mMh+eyUE=T6uoG6jbZQLF8UO|m3fZGxuv+yGWyJkBB@A7!2S@WvCP$z`mP zc!2TF^BddJ_%$X`B5@0ioH+?zXR+3He1pj~LGeVln; zO0{tE72U6A$sN7K^@_VQHf5sI0ewr?wvAp6%2hbO*uwlp-{<%wDMkl6I!H6s`17oW ztM|U(Dcvx(;$&-}D!7DKv~x*yI)0xgsn7XKfM!Y>7`sz`*5~lgyW3&DYX|7Pabdgr z!xANCqHBX!+6w{fJ+%G$$;~7T2?zWP4ysM`t%fl-r+@@D_ZU(zh(Heb4}--ivyXGv zd5kbNbb%^4Dx>9LdekTJPmH6=DBZ8}S$|N5WkTlcvGPEtnxK-v`I9u6E}k>K4&G5C z^Q>Aus&3P>RP#i+B?qgC#nh(FN~^0|drVW4Z;5+i2ixLNipELEH@{r#Iq8Kg)!Lo{ zr9c=Q_hy=(Aw@)2_g4LGBYQZYA$IPM{{!GeYHG-nXg*9fiL5{R$$@3qqS=z16?%wQ z5RN?}m?dkU!IEzo%x2FQrZfp@4g85(NM*!3Ch_t($=vDu*W1I+{{lCpPQLq(Wac;0 z@aW$kOZ^LgAlE?s`|wCd<^SCQ*4j)x`j%YrR~326o!1aJs37K89qe5^gVhI9cS>yz z2fc{#iX%G6pINqze!ORtk&?P}8yuHPMsSuarB_44j{Bj7+eTlK9Q(&L*iQrH`wipD zFmut~EYnKg_O@Oe+0$iHpyJbe*eFr}h2qOIS7q9mq^u0IF^J8Q9r!HpsOO&k8&Q4b z5Dv;iT$;X*aTUkG4Kf(JWOsbjY^YF|rd3(2{lP>ajfeAjA2>@ix?n9(!(yU9vscvD zebU$^k~yByl-Zk0e91PX^~Yz=EC#sH;c~}l-h?*|A~b`5%N-7W$>WJR7C0_M?qbNM zmyYc>DTz-8iPIGB=RjrloRqVStN5|lX7)_>bY9^R!x(woJ`Wh<$1IE9x*Ccu?y=of z3O{EcRFu!80DJ>4E`r;iwi%Cvgmm&PHQ0+>NnMpx3TI$w2Uk$mrg)_w3(Na3Y216> zYH}Q4AH@j#2*7~8Wr<>Qn=GKJ4zh6Gtf8>Jek1JtrwwE305l25u~?E0A_MWNK(I^H zapyu+g#FWqYga=C4@S~3eUf&*eG)&kH!#`LI%95_?TE?w+sL8a&Q9-a{!iH5qB%8V zE3AFPVm(SGWvDtJx3l^|{C#H`8fvYNvTz|nn>U0x$yq*YNwdXLL zbnR(+T9Sq-b;_HW?hV5CnrIw}t(_S^@W~{sc$cLNzgLYf=dWsq0N#*)qO2ON%fDi8 z3a7PW{Atrk3Xv(qhk*%lNy&9wG}RnZw^RJM1q_K0lp&)AT>Zvv?&`^1s#eP%YSIPL zNx_{U4Dub;5UFs%u%tijB`VY=;eOH7(hL@*$=z22SKb8=Lqm$y#Vnfe^n72GPrzC(HKl6;1egZw|P#T}#Ssjf2$(Utwx#nhDOMc-iSl;3&U2 zTHwy3iXXC(qXzS+$M8+H;J%-JSnGZB-Tq@>+PtKX`+D+n2a#1a5*$A`nvq@YHBUE= za}$>fVXe)!k|s=imy8>(dJ7 z%|qrwg`(#h*S3|UhAUIhbRq}2JUYHLlc;m)hvbO9j3C73zqTgdp)gGX^9Vfo06g*~GDjZo56PiDm(skgnyNwHZ~9}NN-h$H)! zPFtLLBNk<(YvVH=+Z(DiA#Z*-Q-+o~@iW`3Nl;$IOcm!$X|X+jHg^`ozi zMuaP9ULa9E=_NO>c)x;)7O~GksV#*yGx0R-b>}NG?e_Gz{n4m>0#*@5(d*2$Q+dkl zc-&)OBZ)HmNtgm*K`!^+fB?blc!`p{YQ5Vj-^#l@X<_?1z%@^iqK9pdwkpX4 zwHVErs@XK_9+LTQkVV$SHrvtxhIdu?8aQX=iFwNxB{bvDO%t|@A%|MAh@V~j3!)yt z`m#66#9;GHMw&CEK0{c89e$4+eaJB&NDB}(qnsjVnxtNA93kV}oBsB>H(+QZ@>04> zzAS_X8OqrJcH)fH(nGR3j(ycI9s=ug-|89?AkuSA2$X-kIfzo86CjPGC%;;A6%IEw zu}IxDpLcwm2W5z-knHpNUnUl%{_yaIu68N0#hLTOCp)w|$ld;uI#h@U-y63}L)SjH ztR*wG^r$A?J|dhDE}6yEqomY1?O|*rb;w3Ig@>r@CR^P}zEg|0I9x?ER-Q17(#3Aq z7Qi*ZW}~bWmYA3y*vwsg?R>RFfdPxK;xo?$c#=Mr51vcg`lEwQCY9t>B)(TlN*fU^8^6~Ik10TY z->{ku?rYo!dMMhudw)GC> z^rg0v$>-cF_A926U$50n&L|GF=(#Q>LXoAaaEQM|2JpVs{7`}0(en21>8BZ(qk42B zMx~sjh(*u;c#NTdy_WOvstu}}wzY8)uc^mM8w4N0BU7YI#ViKA6}*%HsdZU7rk*FS z(uPy6h%Jac;YD=IuYGjNFLa9FwY4ri47F@-4_WV-=$a@BR8;eh9qCVqqbW49Vkb@@Y za)|VNk~)5=W#97z?L^DtBlmNjd{RhLzsx>&T_@RZxtrjVD>hwLBCBvWj1IaF6YT3tlXr1Ao_-lBH12j;`!Ne z-2E%1T*=ri869Ey8FSB*_)+}NqEkg5YYuKRlPm?Cp57D--J2E^U2abf`i@Z$hW({T z=tc(7RSDw@Sm=;b6^WH~BzAo}Xl?sSruM+oO?QpOfQOHk!EX!6IcD*GZ-qBfn;bSB zE?)DB&ELy7!FjG!)%z-W*zP}6XA2~wfBvnm&yJJC zPi02@{*DU;v?l5s|0GtJ&_xHP_q|-%ou1@h?i=Oxn?0DS3T$vq-^>{QZrv``?1~cc zhL6s{*)8nRgRP1bKeAp9ojP}Hn)?x;mkr+Z^~i>1PsO5bwYh{DThy=gzS(^5H3s25 zwI(c;-T>dhzRX;W^~>EEV-D;OZ=X@ME8mD4_NeAYH0Rb)iv4p)GLjUBM*4q!;h}M-CZrG#=_8%dH41yeq${yXr&h;SK1bMnFiw$ zyYO`(l-z)+M(V}|{0QL&J2CMpY4!GcQm|_*MS>DP*0;;rZZ8%WXxKCKvDTOmoZL9` zM4GaDwB7dRrlEL;YI&fuKh#Gm9`}LO1LJ=4+83||Z^T5!jJ;``H7O?_nLID7C}B|C zxJSB~^ju-!`kq8blHV`+WUvQQ8Dnw00qyF0@1g*YbFkOWt$WVF^P5A5%FR^f@!0$X7Oc+rlA05@2MtOap8^lNLi z(KtdjX_Xh}GRrU4GxrQ7d-kFgNt9p=1R0FiNt5V4Ih@S9WSsbjsF~Bm{X^JdV8Yj= zKJqbgz1dMbr7?B`{jk_z?sVaF2d{J$a~zg?6*i`cYwfGcN|bPT8)tGy!_L6UapL0pBmc+U7f)!z=gW ze!3>gRl<+aDGrpAY(8SQw-uoj{IhVY* zYPLF5Y#idUpB)u8kToFr=jyyqI3H7p*f6?y^?Gimdy^&2yo~T7^U@;_sikK)*xd>~ z73f98;CdN@jxc@?CF)C<&iOa;%^bgUQA(UxmgU1sM~f9P&qp?oBoF$rgx-5IsoNaY zhL{90JyeX|!H>|X<`E3L&cOt|$A-=^?LnrF|IFxV9nL8?x`Xwf#|+kKj{Hyz9+uH$ zy>N!d?J?h`Rn~Ep)6Opua2u6V=PV$^rnDlV1aG!A{a4R-Be3KUGMpzNoO0~9`i2>D z0#nb8jN*!CbQ)nvP(;@|=_|K=^1h?wQg=~qGG^zBX- zB+Y-7T;n#-G=R80p&IG@{n&#)pGAv}{+PL78|O6cCz!a`S`NEsR4Hidv@PvI*;NA7 zWTiQw$t6MvE-yL8&1cniajSwX>Z=i$54Y0f-a<$HL7EMd&-6Xi&X=JY09GmzP$Wor zI-jW5ahOd}Llya|tH{^y72!$~!+>x?#=t8!D4WMF-IaWadx=Gu@Vz_}gg3Pe93ZHg zrgEPW*uTgBeey@lgShip`NRU_8e+?{-_bj3#aA&FiQurnL3JP278oj@bx#?4aA*m8(QI8+=*VCOI-M`w-(_-98L zU#6g|zV?M4eWO3^yfM>+-HyK9i^FV>$8Qa?)qVhUQGFr8t5Hc=Vg< zn5fdiMSDyi;E~l8jtxMWbn)2Xq{*QA%^G+w@tZqfn%|xVsFzfE&1tsmH5;fVa*7Zp z>1;mR-h3>jDm$+e*roQ@Hob|4gucl1sjmZD5zl=Wv%ane>NsXgcrX(-)OjBolOBf) z*UgnGe+lunwnG<+uQHEW-7>#7gPP2t%#9YDtBcxl_8w6DWVl4VGK?mh5}MW^qQXQA z8yZ!t2><<2ayXjN5Qq_Y5kDh3(>S!9;*EDScYqeh_aZrRINIk?&mQ~7x5OX+DQ2HPA!bv!wsm-YFZ3Vog`301 zW`=d1q^oO z6WYGp7hJb}%(0~Vuhm~{4I*fF>^jfED*qhX*l1>{^!o}HQ`oSHIr6snRFAcop!!ju z^Qr#0SBU!9;9&dR{?HjKQLn?UhK?mF_vzfww?_ZDrpNY?9MVA^wzlS+Awf@Ckd<&WC`lxqe!dJR_xU-5Sdw?FZxpR(D}sWJcTd8|Qf(a!Ke=r$EGKqHW;g4IjlHM}u;**V z$yoX-<+5qBiH;0Y(Dr)~bKW6-@DKuj?1Zt+&2{D>%vXf&(a|0%ANx#HZxMSRwd7r` zS~rQ^(^1XB)a&5QE@8Sh)x5E0dWNgTB%lB33WTd{SbDE2f7wXd_?YK?$T6F8%;tR9 z8i?h#IQX*Xxp~NRP>O0)?%aw{9D1cLQ#T1gbc4?d|H`tnk_LCg zJ03iBIi4Du@kRs*3t5PPX>8c(ve_1|#7=LW8vSKHgz|jBa-_;~H0(UL0y_%Ha1cd! z6m!)>zlqV4kb~Z5%dY}?! zV^wg;%&+`7MB3C%?@d9MT_)mV*Giky%vnN5;+Xn`$%LM8&LiFPPU}AArw*3HeIgmZ zSbGy-F#M_+tHZ=cI?jQ==G+T+#GS015!=U%jg0SSg{Qu48#=d(8x(XqyHXAh%knU) zkNgE}GH!?-HGhU!)v6<>qkr?{$o@ki(}*g;df1{_+@?mJd6iCivJW1kzU0nmY92FA ztk*9N>^D>w{yOSe9E)Y;6Cvqu}Kz53fz@FQwjOPUTJE?UQ$g zlaCU%M!f2VhmuBCmEsj?z8F&zDvhNXM@at2OP7ELR1Ul-l=zV+xyeA3y{1du)}1yR zVrxKR_nRmv^q&zV&xy|AT9)xfsvWG%d;1AXV`Ed$;^O|^PM0zB-Y*-D&R?%5z|K~f zX-}Qf5H^oLk)@{}F}}CvyFtlmaktU>{A7k}^nIz}YvwIUJYzQn7Q|j9i;{-V>kh|t zdEF{i!mTyt|7@fn+5GOyeta`s%JufMi$Yd;_~yCe$*jI^6_P^MZ#wT{O;MrE;6nm#phH#u#OJrEpAh6?c|~;Joui9D|C~RO-it?c z^=@DrJCif|!2O-MwjR_@eli!J7*Id=UD#9tpIn`=+cW#k(xm0@6V`pr`uy74~@3EY346v?OUm3$h)`Q|Trb|wOC3vU`(=@K>7 z)BvB-7)oYKj%%2CjfYzhCG~$^-yk>P(3f$+SHT=!9tX~bNl-n;L2EA3ROrB zXNTVdQ}yS`COfI0)Tn40v{5A_bZDxsH+^W8xi4jDx41lZuFy+@!2v ze)xMbpZvr7eayxN%;Y(Hxbu5J$e80=7Rtf{^TBh+D&T+=CEdG4z3~j)^_xPw`1{WP zYyI1?89dC-OUlp~yYed%E%OjZh&E%^m)iMq@MZA7j{kGN*yZZO@nLYhr{OJP3tlsA zT39@-_+Eb9EKl^?6@RbZQ~xTyA*r88nqM>J>%IA9Sh1|&6%43RlOlKmtKWX$AHFnL zvHu&yW%w&-batow5LglFBj(x!a6M|4{##P!sTH|rluRmUsXL5y2RqN-n zA;Hj}RG|Akr3q=Ur~YFh+U7gJHqZ5@fTpG72|uL_ZjUS&{kcQ)ehQSVM*R~!;-bik z_&=ga_`PI<^$}Gww+!Me!cK2_tYx? z@W4Tim8jO#qpO6sald@cJW4o}0OQbDyr-adv#>L!cZj!Uy(!h%IwDnm^@7qc?_C>=wP(hyb z$8@poIQiBG{;=POp)IC9;C)d4By~Yxkd`nl?8J|R=98;NVi8^8>LiM5I!+%^)c(hJ z;oSq0(p9dDvzTI;dy)6|Q3NihIbrZ*H6Nxz@=3kdODs@lkOio?J<{w2uuc zbn7mmPr$Iz1Qaf@3Xq;?zHX;RP}~!C>*ymCf7$YCGU7z_3C>T^=er?!-s&1IyA=2V zHU#|M&tk*!X%GK$6_G>w-Ga;>s`KWanlL@m`*dqf#Yvwwe-}p0kEsLhR&psoIq_ba z1c3d3vDa~M^!X{l@)CzC2ym7f4_h?Lxhbt#I+k{x&LG4_6?fDrNP>8!gVsVh`S_&a z1jigGz!j)njCIG2-?F@QX!sVUcNs=~+j~mq7ut@9qGWsC1n=;T>g4) zZr>#sp7FKBRYaGtHzcxhFB#Luch3k9FMI8q=M}jun_#!}^7a9Z|dXc zmyu5Rj*FiS=<44r3=ZiXIeLBYJx@sJI-x%sMFQW@f<&HT>b1LeX?^T&ErZD((Y6~2 z4Bm>ExP-{4g2(P&@2~Rt^TIKy3-5^06%^AZZ!6AT-^uO>Q{NLER7Di(0Hs*VS+4YP z&Pj>B5K-#3BVTLa>&DsB045{=-0J9cD7gwHucQKWaBIy)CboO5 zI}{ZrXj0n$7O-_um{6n89M;~<&p7uSXV#FS`=eU zJ(B2 zQ$|ebk@X-?k!ZM};X8GVRmefr$>6S)PT4!n2D*6kO-7nl)H%^dybm_pvzHqZKcJev zzIZZy+irE0^BgS!k96(1=U@9{#9O~*)BH%dwwtWwd^>oAfIxVh?b>*voqs_Dq3nV( z`Sz)-uuw!@;)jKI%VU=k_$czRcJaQ-{ny2NzS~s@1ws*`vs!Ban7>@Bp{JO-@d(4u z=?>C3c-7gDBRfbdVqSo5;D>DSa5gmQGY=KjAArIojB6A7Q1)7o_{D5g=CtW)9-mpy zyMUODUgI17`ID9vp6pdo2xU(kKM4QC+xDoF8>F`$RKaBA%&03nDDOx1!59lQ3=6XB z5pEFlma|L-##EiH>O|fv251I~hsNFb6aW_fb^b4`-2NkY;9ZH(Sh(WRvzIDrfu|=; zDL(G1SPxQ;Ew_ER!se%a`zew`h|l0B*B4rX0SY6$yF3!9y~_2x#~RQ2{475|jT3P5r^Gl&31~|E==kZHqnI$coHL#`&;$MWUg-Xx_ zls2Ee3FMO(_fTn8s3nXQUAxBK(y^C#<6AL!iZLR>+ApGB?GP+q8{dH$C znZC5-%!{02n_mar^ACkk&wFU{8D^j(+>w_O5FrE8%$wmFr_!iB$y!gN2~KYC3T{c9 zCD5^8sVdFo9=iH4PA>gP0mIp~5}s>ud{hJGoT>~7<(5CFouUoiwQUx!QrUz~1|@`s z92hxCpC0_RH8K^x_-GSH)59+&6z+4d<4XbK;0cD?%+s!4Dv>aGw?|fw($s(vDyyKMk}Kgnyw0Sd-{*gM&Dw}mNHNEeRb2zXudFEdhTlNmD%vs!|OcP z?hbhio|5Rw`V|q$$c{H{I>4cHv2s9J@3Rk2a$>24v;RaGBKIkh|9Ak26NXh_hIwnA zf2rE|wr3NCb{}inL{W}0T){*ie10C2iP-qIb$D*boqHI)n!V0~lUhxbvzbQ%cOvGA zv~7kgbHWwsGq)#9PT=H4IAGdSTXc$}@>(`4$C^FV7BTY4z(VfN9%xAkp>(r3tY(MW zzlWhz*Vg6Wsi+r27YAda=9yyjTbg)zT*&_*d0r=R@3hHCix2ej{vq_Go1 zrKhht-}zR{+VU-1gZtHkmU4enEnUGC{bV58v13-yP;g6rcvgFfC^%_7o9UbEx4o#2 zY*rz@sR{j)J-;@~#NjU8vPT z;oY}}U~pt)UVyZ@N{?`wM)!tb3sfjyqN=ZTFlW`q=kqU0{Z-oT-VISrH?GjFG?t^# zSDC?0iu57S?sFbGbbwV)e_4bNH$dA?`fZwqr7PeM_u{@r8u+rGpx9(K@i1AGRGuMZ zl>B<-hjP1Il5C{V9P(h(wK(v-jFy?_Aq<3Ue!`dQ`E+%RDOY)bm%5Z<+H4$q-Rbkd zzTV5dA-#UJsmw>!lKE2nuNIF*Dpfd;-icoj+Y}RY$=hBgl0Lrl>n(ju)CVnLkDf=w zq)*J3hSSwVsyJ~jx>O5oPq)aH7H_9aYl!hg$`9}!!2sYkb7@aS3UG?uz4_rrY;QV# z8Xf|cmil#ad%tm~K;=CKoO02%6dYN2;2Xe0bbLs#E7cS#4vHD+%n<)snf z>~)|we6$#Ha*C0ORe;H@yp=PzC9GCEgN5H;#VN@0w1F^b_8C`X@`G=#-VRM) zs|49?t|R?hl_%kJU6xZ!Jw~_+N=_6j_ZSHv}4!Ep%fx`)AM8jDSF&R>2-E%2X%a+Q~@`?e*Tpe#VaChctPWilA$=t z_}FE~DzCQa7-H3*zw>g%msj|ME)`UVSRV3MhgiRt{#2;JSL~@T4ii1LS3BxAFW}Hn z`Pr04g+&E7cZ1X)Kpfx*Ic?;{7?I@bAOP#DaOZ3v$=0~pZ1C+@n3BT4i{-ksuLg;- z`ajumQYYF+mehnq^{zhPLste&A$B%9c7*$PgsyCn3 zqN?9FUuK8d`}~&EZ+p~M=N-)di!(7DW2!?2bXBoGAOO?Xy879&AbC&znG%mGL%Q+A zixSewh3A`oTo9Ta?yd+@>f?D8-Zc%+x$t0~euHJ0kEdODdO~U6IE<2huZPtUm{rl4 z85$R-h3oJ(#*G*{yx$g9r|bvQCK4nNoV~3DCY>>R?Tt|6mty*>VdUjjV?yiEBJWTB zRnqKfy*1TjnxYKyx&3=o(DM)`JpHRC z%`kmF@33l7v1$AGHP1AnAyL1h^V?=!oqn=%Qs0FH;&})K&dkf@ zjh$2!=M1=`nRi&fuK|&4J-6t>uu#SPaUMFNdWqqq3XvxWfgg$QvvMzS&(bKrKOvoT z7YMBoYSOjGZNK4mY+FAyF#7QhuBPlnNXQ=1E5>91#cLp!!2|~Aogd{Mqq*kEr`Wzr z54_x)dO#k#b8(F3N@dj{fdV4_{_TWopV_5mH}JGJXN0U>dq4U)4t<%_RUN*O5M+O< z#;2+&aht}y#R-+GB65Me%JS%BtxC$n@OJ;lV{I=MHNU;uj@0HaP#N|X>}h1N`jWR> zznmBdAqtW%y@NS?F3I>@Pr$jmgkoRc+ z5^Qh5DlY|)1OZFuUf6~rBwZbOA{%?5r8v*OAABFkYLEs_n;43B_ZJuX>2h{7Y7w|e z;IOzXfyWu>S6291_;d#W?u>(&Xru;8IY|LzWH|bX-Em3D#CJ}pr7$|=(DIX4ls`|)D25(J1@HOgEQP7q%D0BIQF|{TGMo!L5s*jX zmttgEbHz2fA|&IiE50MfRE3|R{!PXcr)AgF%>J=-TS+|cq?9J*5-E>!(Jx{M=&D@K z_zc%bMsq7f+(l?#fv;H6_ZoLIKaLrIplo|~?b-q)>cd(fTJos3o2RPfkOfhvK}uNU zG3SFhGhf{svVBb}WOveQK4ds&)3_Mp(pt!u&%DBiR0d3EvZUyPyf7Hywb!jzfwJO9 zurDpDjjjP2=y04pGkm+$`>PG14gB{OtMAXWXLnrSAm=5ZW+;-j>{r`$5&cFVzcvW@kWyHR zq>+k=W=Sr~pu7xU)3p6D@1ftII|=s)`2~FjepjejpOX7&lcAUX7_b?0xFK}MC4ps9; zcLKmAfXXwTV$D({m);HA_*e8Au)lvvul}p*L&JM8NUEzs7R6I7t1Z@A%;nOgyNaA)YDgPH}QBl zFdq_>$0SPj`AvC_jTJtj_j}66*r>k@txxxre@^3;2TvUl13R=Yy}k;-IBW< z&o;FGRnDZ~VSlm*-2Y>(|4`!(=&U+B@HS4?;~n@aHWqq7i5zWIhHo*E%$GEG&+>0_ z{1*utI=UM*?ZLJBy;vI9i>UGqXJ|_rq0Hc{SbX1^@;9Ev^fwBodDiwL*6ww!cIsxD zOMb&`I9&Qc@ZJAY9x6D%F2p3`KTjXQ0d0Bi z|AyQ;sU5wLX!@G>JMbZajsER|=?B(+f6IwduPpUjZyRD$D%OBnBAX=F zGg^PA(s3wx!UIR3+BVX^zshmduI53K!qbADe~9u=gV~2VH^fFo?a?b26v_Cj3S}wB z$VwrZhF_-kesy1Bw7xI$x~#QBCt3Uw@YRlhT4iEssy)oDhN#0)L0sG`DbA{7FGb|o zSFzZT^^oza{V>BKj=K&;K^@+^QH4nUgt`UG6hIU8^7)0^3(SQhk<2(?iN^7gwi3|l zvjP)v{BKaqvN=9mw!a56Hu0M+j1#ld9V`Oz&q%H|aux`vOUKYPVem0PyfxJWx6(Wva#sXG&T9 z=4=^BE(dV^dQ(J#lj9W3{9=n5K{w9`tsy^#^5K*cY!lgSZ?DaWa$gg>-4eEKQXZ>$ z>yoKwUNjKwf$UD@KA4QuW@QKtx}}J*V*onb*ucG=Sa-6wLUA7qW?qnC*JL#GEsGPX zv9V@llOez|-m>0Pp=QOis!ga|y6oXxw4+UjLF!dleP0yp;(^u=Ix9>d^2%O&BFZsQ zewsgkEycEz^c;%+iBJh_R{puRt^>@Q5!t)IQFUn$y%9{}_;NO?N6H zq0t=167Xw37D5n?0gLpZ6D?($<(0-HFYaw6d`Nj=0jzlD#2}Z(fkFv<_Q`u)Wf(SC z!iuG>snGO7jzPH}rKw{$V>YsBM$(+R`%4K3v@I#Ylsv}dO?C@W+WX0+ssB~P`f$G%LcayEPI5O+DPWjw zg>Su;sRr_-si6rB5BSx*Nm?|dc)@%$b1sMQ)e^Q^~A*Kv! zwGDT}Euf_X!yb^J{}M}wk=-d+o&g=LQ&B86@5H`4ACxvsr>7KvHxKY9;WT~fbRLTh z>P6n^lLYUiC+#2!!HGOQ>K&EYR!UdoEn+V}cyDG#Q`$N>x7)l|yX+(jK^ys*S2t&( ze?&sk7(JDf)o(oI|HeB#1@tG-g5^52!T`tuWD;?uG_bzkG{iRKpd)h3T%lvqQ0s<|_jKv$@cG$RVT5ZdLj>2>G+r8!WQJ0P ziR)*>Cc}`RNh>%*#x5dhG`*bG*=iY2VB+{LP}L*X$$`agx4Mwyn)1S^bgWaT*D|79 z@qvwEnB49Z7NXk2vW+Msm%l0EYBgM;qU8261d~+PJ^8d(GApSA+VO}!CX`s#R-~bn ztcUs>fbzxurfZRNHS~Uj6%V4jb5oSaotV(Cg{;-Kv-dNrq!D@s7{9PeP1=y@*7Quy zTr$|MW6+mqI@CeBT6e!CRS@hVJots~pzQ>{Gm&gKm`bG>UNqmFgU^UHEvP+SJYffvqHj_ z(3}oY$TQ`Gl7NYKx#zgwW1p8#8$W8f*cGYY`XPW5l0pRVDOn9D|FHW&p9tYTbiZM* z^Z-oh5#m}tjH-a+;RTuJVlVes7D`y`rx>Bb3Nt1tHJEZkc6`U2XT6f}wkJIbnZx`_lW{HKJBN^2%Lnfl*85 z5#t-rjtq&Xs6K!q#`&%q!~*ZC^xupik}mlf)p)7RhYAfWj#h}3eQdDbxLx zN}TfjJg!Zks`#A=-};e5KyTNPoZAmI#IydS#Gd{wBjuK^(@^H5&akQDG_C^obiwq~ z5xS9|6dvXnvawWSDmwNWszQ(s_bufr{Cw2Ya&!#&T4E%u*j26%DdlLs@DTw$$DlG{}xHlf8K#AF}$zCebpjSx={>WJsn zA~_>^-fjtFZJG%xK#jtgp$pPya3V1SahhhtKE)(m2Gn2#t#78+q%UwRnR>M(?TVL( zawFnR`P$vOIN!L4*honYlW_GV<*aZncZJw?Ln!cqc`E{#d9K$|WoG zgNuW7Dd4SSG+3<+ha!Pg@e9bkZZo>l0xh-upFY z#6Py^3&OAQWRry5TA)|6R13?4ZkGu&39zQ7t_q%gx*Q^Tm}c{7jX0>dnu*AGY&`H% z`eYy^gH#kW12GV)D8T9%&~MYfwTLnPVmFCvWWDO#9s^WfVIN@|nIu;{f=bE*{8=Kt z6Ae2c-`z|YI#XonE_YWS;T8CRqnBr`iiFgPYF45%A3@1 zR%T1;sh`1@R=RXBJDVp`PKci@AUHL2p;XG`Pbj%fR5Gd6&f|cW=Ko+8YCvkyA1nz{j0{m<+FgerJgsXvbdddC&`L!bstsQw$@;+i>& zsS%!G(V8akk)%|4%un)5&~~YR{7rQ8`Ge@z$sT<7PKnc7BSYeY#%fgrw2JI7d(Tn5 ztv}|j_M1N`@(&{j7(;R-pCa!>@$!fe&f%$#Bx$Nab9Ys)+}ZP_m9_@INlP8~{v<|B zzNUV{X3lIHK=c762vjztd_Egk&fG`HGYbV(+xUIlm-292i+_>kstmb4N<*i(ZUVvp z^Z+Nwg+$%yD2(Y(nL%qmX7^L@qZ>*9)TGUvS*?-xYq$sne=}i{{=Bi0_SC1kiccqa z6(EdE7X9XlAHYt0aPDOSj*aL9bJ(9p?%ew#clHhXf*VpmAly&G_%^z@`!}gBF5^!E z$Xl+Dm!O{=N#8q(x```E{IWk&v7gb&j&;Kqp&AiQF-hEe@L_PyN3zd~sM9L3lIgo5 zjxg8uC+{oIh2)d(koRQ<&Q8Mc_T!yxpGU?%1d*wd^Y7o*cpiy%mK78Mf5MJ(#61GN z<5nA;BY88@QZV4MIJ?iuU*KB}+)HD><&Lo;9^>8&SzX`vDqJF4N% z-nnILTXXI-43(=()-!aBa5ZjVI-dRcH&%uupQc#zx#mN96ko9CB6Yw2NXM0{e_3@~ z8NR@givIgKyg!*YO67N*rM?W{CZbth8;zq>ElB^#imI3^^R`UsA1|nbEo1om6SjXo zx1&Wr%V&eS_&=}5=KnvS75~pqkqk{NbLiTAK~vo>8e*4k4tofiop4V(!PazXgR~xgs6^Z__V&R_0 z-?fwlxs4uEVf+8oyR!(It%4Ag_cz1M*ME*{^3JvQ!GGU%1xwi#Xp#}Apst z6^Ig(pWv}-d6*0h0PLJ^E07(40t0p`Ajn#cCq*_cQ;_!d>?^4JJ>uFAe~-BOFv2!0 zACob5VR&D2RRiBb8-8m-?_8A&8IrCUb zlriFd9{#U^x#Oj%JtfC8S>=y=_l0Lw9AE0+Lx+g^dn`2TvkDIXjnsAIXZ`z)|Bmfd z6hs;Ie!VbE?|jPx+vS?~f3$YqVNGr8zD5C2X(~uBOHqn~G^qh}DOReWNRNS8w>7=h(K>_u2M3*$&DNZRlLB&WxvJ51i2M=+w%^-=OcuQ>r`m8@laL z@z%2EYVfM(-(3Yo6?h{I$x02tqa$9}eoOMfz)tf5Q<>kSuuF=16>jAoVfWAayLBl| z-go}G!pj~$CDS+aqaIUHrr6QsC4i4IAf1b^!lAhmTDiRJ`*UD z*BE7p5QX)Eh7N4+)f$hrSPp zU;yxno3vsI5!=eq%W4h7bg#^Bfl~7e;^eF!&(ca0geEufs=fQO5h;T`t%GwBS_2uA z%De(tlcNjvadkL~E!WG~Qo^mGL77l+bJOQS?6Vw|ophC{ zLU8Ey*Ed$}xGrs-+FPq9Fc5Tg9)i=r4NnZs@KwxMn&QY_ps2 zEC#4J3Edv2ArES4KGV@CxmqL z)>uOsluS7u>E5K6@yorK6{f%88xn~hPFbdx<Q+y$q?fX(SC8Kz%pl3l_4vs z?7mLhyYCq%c1nBj*V~FP{7nXJ`L_e@lh_-q8CcMCT*?_84+!0ruy!Fgn^gPYoN8oj zOm^_b7oO|*kmF5u&x4Sd&gFRu0g8Fu`NmyMguGekP##uwc)$zprkbfPBOHfS>_%m3 zZxU;Vu|yK9B)x4=bz)s5$Ey{x6(yGn3y<03Y4jCebmtnS`U(#(0VGBZ1&8J5wER*! z8W1w_Lpu*C^2Ry`^DlIe4VmpAxWcTyE&7Ys6lT<^k3Y>R52EE+GH>2-LS=u=T)%zP zwWftgxWnnwyKQf@P0kxP3+MB#?lt7Cq!e~rr13`9FA+3;pp`ECm-bLR#wC6Iu zcVS!eS`23m^Uk6_&{Ej_);m#Y)SoG)%{{DzF9a2bq_A+8DMm1i?%zm{C&YL8Osco%5K zebXcL%)wCg=xm@m>YJ4JPlK09?x>z5FuTy%%?i0;CM!`Pj z3-@M_Io`g%%symW3#OIF zlO(qFF}e#Rb({CuYu0y2?vrjBNc-exkV2CiL)<}=yWnOP9=LW$`>srLi2vw6&dl>o zgnXsM*Nmfu^Wo91Ii4fas)6~!JXK1KR?ox>!;#mAz7Db`;?l{gD&r??-Gxq=plk$J zsB&^u9vdoMj`%8*H4a?VdGp@7$g56zdUp`j)Ft}PluTkIu!icBl9))b__Vof;>h() zw;X_4PQ(V9M=Qv;l{pxCMk$1uWZmZAO!hqL+&csjV+3` zDEAdYdo+*4n}CFEo{a2Q+E|9WDXsNi1gRMuEJ-e%Kn;V2lUMw%4W=T0pgG)%nJ(t4 zR=TO5uf{d^FyUk~NvzX(>zjCFVmzpPa`HY7aV;A}HDNVgsU)6AmoQul=E$}BOw}A7 z#HysSf4{b}<8kDL5hKsoi$7!2QRE!SSr!FKm8w#4l^J~w4aZEMFK9e;4s7p1HI$8^ zmlN2NYWDGzcFUbxdk1?Oyb&8bCSam)<`IhRs+-*XOB=e1s@w>cvd$$RDJ{7x!jmQD z95pRuY=Jt>7Ch5N0hk@@n40~`P(Z!U+wR0U9W%4C&aSCXzZKNaPn@i2vq|ZnyE?}h z>|b0zlds)L6`c6Mk@Iu3^N91K`8mDXE>bpuWHViL{ldfJ%Mw8b@hy`MN=T3>73H{+ z-nKZ|S&TvVzQS#7t!7<72KgHeQPvk-W+A(6$q-vGhgsF{+$2Mb3_h82AZD-gKDX=V zEb!u1Y^W;Bemn2YO3Gvp*V5;?niE|FWoBbb(_FlaT1yd z*%hL!N;wvkF&W;;#)Z{|E8WMqHOBnDt0%z0gLp&Nyt%B_>syM|R*~m^;*lV-n_>=x zQL(5d%tSY69L=b|=yb+hi+EJ89!XzuywPn*`Ngm5{%e~d=_fWx(Ky#UjW1@~-efz7 zJ0lH4eH%Y+kB~87$#sI<5;EL9Ktn;)5h;}xy~8aVzv{97aKnr~gUNw7_kma&i8Kwh zf(0{?slCN+TcYvchO9&?Ho$#=&@S38)<}H&weh#X?3tp`v)|aX_MSh2)YUBJg4P0Y z5gIMNvR7h=5tbh=JTYH=483{hh=jkn-xerhcCJ95?=gRXK+A^_=?UCP`us zQSawt-_DrW5tX{!xO=Wk=iA5;g;$T zC{8`GFIR2jaq70kV(FQn#J0L)cH0lbXrymi#9y~6E2sfAu~LyfX{pNKz~6eC9@=`r z)#M}AUQzmd;)DjLdED~&+d;P3@6)Q#)QFDdumCuY?z`Sqh3htjxfCsn->78{`LIW} zl&{Eq?yY|Jm8m{Vx5D2yn2*{gv;Xy60_jDj8CA?;>iRHN=SsPG`6HRrA782x=NIDF zJrYz7o1~7I+nScQZY+kja^^-)c*d!={!}cC}B>(n9qn1y{_-_dOO-hFgeb2 zYEbI1$9|?DOhiGvrcCX1!)yDdG*OVwcV%Z2{{ARW)Q(~K5T;jXImFA@E3dmM6{jZLWgOL?C#$u6;GHKmGO>M z5@u*|(`ysVEPp9;kE1c1xlM`}c%*uQK-Zg#L_fJC!)mx_AFv(mEQl@QoqBVnw_*P? zqAk+RLeF+bNE%^(WtPW+nwZKflwZH5FObl&%ap$s>$^TTS3Q{5A>Gy=)~O(CM4Dau zafqb8&Z&;|3QO4&TbhTdqCQdmEwY_LJj>=}&0jZf8$3uBP7a{qru~)NIlljuXE%BG zj_WmXAJtw#_6}Y7+++%;aXrC{N4EhH6}n zYOg|sq4UVl@!dlCouAA~+h-H=)7%>gw|{9grA$yIu@iGW$;pfJwWBB4r@3WV<2N`O zXC)b29N%tRv()W6&wikm$WI@P5lN%@0q3QN`bGUG@BIdzGMD=r@kh5*GW6^`d-kjx z&0@7|pi3(q-d2cHFlK-WK_+;-N`mdqmAV=us0>%ADsHCY-LnzPF<2&--ldoNq|09` zFd?zhf)vDRo%cl~vaX7kTNTGH5Q}ql87p3cfth5o--r2UZ-YoYzV(I-SnmCXYx^nI5Cz zC_C!7{Y9qGly871x=wiC9u>&Pr97*6OCrBys2z{?dyO+-3UrV zK14UVrv!rWICEcusx$UlMWeIRE z*=A)|iXdlH=Jxe?F%Ms{5wEbUZG{*M+en0Nc8h*mGZ+z5vNh{VSy!R9pwe56Nx0qo zMzp?^8dDWn=Tz=EQ*LZGE-0{^Sm|o$!T>#@?3pCX>Q12xJqg$39EB z!$nu!?l@fqF5c|luGT3D!ppqJX%aE|xFl8;)4K1Asoe?Yn8JtXE;j94c!VkcK`^d^ z1h$3JaPf^E$x(q(n*Q>bW{Fs%#f{e})yc12J=DK5ecU8{@+Ca;g-^2ms&=sNM+bJ= z3%rmBT}extyBU|Yto?E8DY^FL$^E@dGY@G@V6YRc@U1&vYwGx3^x!GB(ij=eC^lbdAzi>b*=P=#@ly=Hl`bFcG-VqH+kkGnl-DhHEU8ywava7Q57O} zYZPRyrEWsE%yh|MfUplYkrSC$9vPV6+?2UIp`8zg=vM_d@yu=vm8MaaHHf-FtborQ z&DCXp1B;X6+UlCvCyfl4N}PFZIi#Iu8a}JVEg4 z76Xs@!ZXaGY?k#qTRcrqR+=S~zoHm?%}JXSIlo>NwEm4a3!PkMn*7(v2oWjE_(zun zjEsLdR{=97-&b0|`dYqz{Q4)K<+XbTraO=gYpB!Ps_+rfe6NpD(@f8PCn{wi2&8rW zK#H3kiJ??x@t`dcl~fnNe1Dt1c>Cts^=f^CU^<2xD*#S=pN}aNc@e($u_9L73#-&_ zqikY=im(c73XGQ133n?NJYQ09({ao6YZhy#3I^dsHp{gqd|kmcIW+9l{uWMmnGQQVQ|5^h;Wnar{#Yes}ilKK5uthDx?Y* z6(u`9WlKx_LiojRT0;(=!Kvn*A1_?VD)qgshxbNxa)MZyV8amy+9KU@ZC&BaZF$Qx#UnxIUjJU?6sNnjECFtmHA1gdi+HZdlXW!LD|0JL#vVmA z?W<7VHY5>M@VGteDp}K^KJ@&~Gi0l0UU@A}ce&nO?CW6jOYvy^?8UOqBgp}VGP-!& zM1d4yWSrwIbCY{!bdNu+VIH=!@Fi}RFU%=)h<1L0-i*8UV^Pb|SwW<*y%=;XSU_o!a zX0;@Zj3TJfakZjx>5k_h8D7>EBAmr0S|VE_$?VO%7}*Opc@Un>IoAY&d-bA+1oid#_MTP(RVJay9=~e^ks$Y4Li7m*=2lo- zhGl65aQn72R}6I$gOc25iPf)wpTcAQD^pCff}b9^TWz zMo3mDkB*B|^=HtTBx)=?BP^SKza#<_9poerOqsmqLj=8;^IxwWkRM(?76!J4qF(*i zENk;Q2gycQ!me|BuNTJ|k+NTjmvy{tJ?BX9kjW(b35`FeaR4(H1a3hp3X}%qZ$VE+ zP#iPOgoQd3CX+!}=L~wuolDDG3sk^+e0X=lm33o+)G`A_m{jb?rPUJ6$EHYOg>Wy& zV^$RjDO0D2p!gCAc&zs#opO{EWYuCpRZcMyKjrnch1>$-l)#9E2oEh_zywBP9@q_l znqRFOgD2P-f!rfn_I?A_-CpO;D}58ztm$(ToN=k)#>9|Ry=5+U88n`D00R<%9`T>j z+VT=-a81D6F;u|-)G@aTwgh|@czy>tUZnY%1K|XhUt%}0p29;)KAW#;ywbZj zBofHL1zhfZ99%iAInu=1n7kr6!_Y?V5ZWULFsY$8Xo4A}WYVM#RjfZd3f_X=4BpfF za#p4l0NNv-K)!$Ms7M`y7PekHyn@A|M`eFEOgW-9Zahwt9^F+og+BZ37*0w%G$BokMERdEZ-hFe_Kkr3D#av8{45c z=Y;1zqtYWq40?xq?n8nvvLwTyG44eIGfGmdBsHqC1N%lN7Oj_yHGs54PH6EN7hYc= zvH+>&rVCsfFmB)kF+M;ZaJ%U1Xf*N< z2b`Xgn~oLIPW0zqp7(e7F^Oj{tJW}7YPy>!f4b`08wcd)b^G^=dr$!BFS{$4{xq=M zLbmjc+fW2Ytv$PK_$A+Fy`RjfCnyGbOB@>Hdpv zcz=oyQ5OUS2cP~$`aRqfe88{^P$1;rihYy3rJ(_3I8YFmDj>j~8?;0NkuzXr0CNPP zGu|583&o)bx`2N{CBZPv6M3ID_w478_LJ5GaUOx?xH3p6LImc}NQ`Vr=Pnhn7N81b zyicW%5(POR0a8hpKs+gxEVcUK{InB`i^nk&Q6#b$a7#R7Tyk6wP91;FK2JFH_KzdJ z(s+x9)Mxhba95sa>?%1m&WQz#g#)T6ZDihB^p8QM(-TG{4hPO#fHZ;E@}$oVYH{SXGXcR$16fbr?HFl4=QoRQy0Eg$*iQ=fcOpP;4kw5* zn9|-orx%@10W_$oMdbrXNbh(k7b!p0T2ry zHUjs1^HWMsQj!ute!y=MB)1mvPvtT|4-J4DL^25u%8JU!60Tvm3&EK{tX!pL1jL`> zMI|pXfQ$Ze5PB3leO&9!dZ{_{Tku3HaWL@95W7zU_P(<+^#^CiSZ#|gP9BO|WgBnQ^vOYw zp3-#6X(W>xMj?XB*Cj1)e)fFjh*6YToVa|)?y1q!O`q%*N<_*cZ{&aZ)X9&v7I?I{ zsy^+Kf1nX=WXng}%2}1y4^6cAu>4t_xKkC#AovvQ8AcFDq?Oddd5 zAu5`t;=k4V94_={tI7uu8uLOfV}Eu$HSX)vwoJ@~CXu@qY+}hDl^G;iXzB7`0|b{b z{X?x42G6G=Ih1|B-91v-X<-`+PYB*RT{|dk;F#eh5e}N%r>h}B`PKG| zFhi0F&y{avAn0_fy;_}3E*qEBepP{zhd00Hc+4zL(FQ_#?QSxg?oMiZ(HuRHq!*yz z+_qcFSTbC)5jH3$*#%rDn$SuQ$E_XhRZUvxLo_dIy6V(hMJr&cDVk=7&XS5v(N24mIn0;a~ zB9U|-52a(&qoLZBCc7EbacTb<2`K%Lj+FGu6?oo9Ctk{j5|UtMy+QpN2Ca`!6##Y& zd^x3?bE>P1%>WLw<_#>RoI+3Mdc3P$yfRK@_0}I&;lV+&s(mNz3YrY9-vX-e!4O1{ zcmYSjIL?vqBt11V1eOi1{vt&+$n*WoeQJz+4KvD{Eh(+rIy4KOX`Sh-&ed1l^WVYD ziUQDj3swTYxzGz{+{#bRjK7p6X0$=1@-#rS8|#D$!al3VQ^MpNurv?v+5$Zn7zSVl zEGUT5-yPa2@)Ilcw+Ma9r0{6C2(adD#6niC>5I!qteAShf1z7LV$A<5-I@+#yG~~% z`FCc5;-=lpdUS*sEKa925FiC%flAx)dH5l0s|6`Qr!e?`m`!WJ`j5?WRY?b##ckoO zDtXthzxf9lI?O}_V)695s$e5sq5L-pE(cU0fz(sv1HEc~Y#6kL{H5D4ahLf0`!tm7 z6pEZHi5~7RAClyc7@N(2N=>f(<(A!ps)7(3)cQ4>fk$JZa?JliewA@l00DM%m*yBL+(zF>|LefPK>cMae~_)4IsA5S&shOw0E+=}1|T$+4@!5aQ| zYBjett~l$~yiq_qu01ULUe=H%ju~!{@4wX-EWbm5YMDs`mhULM*BQl9L?T!!aNnZ8 zv*nvvnujV>ClV1Iuec}s_rqyCdzEgXB(IM{;|Dl;5IodfRRFXU>X4R2R2GH!g}lj5 z_`iLE{-T%xc_hN6vIBlk)ddCPb zQh(f*>T?Kj&i1va5;;-wOY@Jq7aqxe4Z&dJYW;c)=eZr-CHMeYqu@Ukag1W2P?O?L z;ZkvKQx(irAQod?^ZwD(oLx%To@|{CnfcG^VTDF@aF}S@sR~1YHnjj7_vX9G{~Ij} zz1F2ayzBvBHC6J5NLw7hFliv}2@`XB8xK?vuKoFf5m0P473T-}e8vMx4o=UIXEq~tcP4qWF5X3b;!yczF7F)zZfUs<*^#1el~TMYkc&F zIF^<5vzrh#qAHzq*8Vq~EMckAh17Onq=YTWm{>sdA`qKf}mOZsm_6LuBU;N+jSQy&MNyJ_W*OWPnk9QTK zyb4fFl^6L`|IlbshnU{kTDF0@`D>Ka493LG7DRDXaxnL{8?ZQi-+q@o>CP{4+QjF>pp;t!ZzK#Spf z;H@>5^aq_2O*teIUjdQ04w^%~zpdI8ogqyUj_Nm>2ThQyQ6iIdEh7U%l2#vw!k-f# zczELPYloVk~yo1SnGZ^#U{>S^i*NFUHLebASF^M0tc_bWdIB z#S3**OoL!|5=V}@AChVh|1;jpjs{6|@Dn55O>yuK&!PXHze3O=E9~~Y4nM=@8RtJf zty-r$+k9Ce;mE;Xenk~4EGUmL;rD*mdB@KmJ=~F%uieD@(TFEK#|oS6JcJLoAs#6j z=fHTUFyq3)66xWutRJDv)7_&NW3N|^tlF@)FNeEIZkCc9ZbVv?(XY_$^ir%&xQV5} zj?=RBiNklfL>M-Q1Q_4)H`z&Vm*K?Cj*Oi-{0r9Ub8e<*iDO{XEeG9XV{D8}TqI8+ zdk3EHaBuZO9k!buG&xytYTRt-xI-;J9py-=&9U2Bny z6LizAynpShS}pzI)@x)3MxxCMUXV3X-`l(Y`$`M@y*>HgGA(2G_T;WzE$I;d6wHa7 zzcnANYw||Vf#`B_8+$Q?-|0^OIdxkV!%x-N5!jd-b98#Bfg`HZc-w;Zdpa*C-S9_h z9i@A0C7TXcv+{oLO5#5bDQw>>%z9&d_|XZstI-DjCe(A@L$z~UtyaCwg?fFqj0$mw$7*x3G9Ag*OZ^g^Ms30_^t#Y_(n2WaVrQxb{yKBV zmH6Zqf#4VM?yVN{@`bYE#0Q@<-eymeyika2?KUihldr^>j!Y6tQrX$-(?g#2>y0ga1 z)rY(^t$#MARxxAB+B~c*%Ge%;;Y7B&oiLgnBmL8yJIv;T3UhHIGGf2Oo~rRH8)%gC zKVfQ<6*+u!$dBsDq2-u;k9QZ^rhkhF$`SoJ#W|9kMU)c@krRhEEm4hm){oE3K0<%~ z-%~;(M@=VemsI{xJimexjQCNKZ@Z}1PGuqEv9y<3X1xi|D){RbUTeO>?n literal 53489 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 Sl`erBP-LZ)Bnw{{efTd{kor&n diff --git a/python_build/imgs_v2/python_build_underwater_drawdown.png b/python_build/imgs_v2/python_build_underwater_drawdown.png index 6140b172cd0f252ad77b496f3e9b577b628ab2cb..7e5fce3a8947a11c9da8794eef79633bef6c2a48 100644 GIT binary patch literal 54719 zcmeGEcT|&E`vnX~QDH=3kZJ)PdT0R=P^t~2m(ZjJsZyj1NLNQ4sS*fC2|XZPLK8v= z>Hvl+ozQ|5kq)7R(DELh-#7C-e}8Me|GinRLCk$8=RW6L``XvO_L;Ya`VY>Zy>u1= zft=UUybp&!&SXL$C%!YC0sr!e^Wr=3 z69U--{}lNP0(mM8fh^iVAd2rH5N_{`1|wzg#uqjK%y75D8=ESz7iw8vXO#F=_~%>@Y;LL9 zNxNUoZGZ12=lSh8p_|NBnhoqvvA=F!&Q8>g)Y|_UAEU%Pt9UV6M4w^7s1JRc<@@V7 zlDzJt2M^Ca+ntMWVJ3e zTh=T-p`g8iwxfgH{eR!%(Tkunt*If^=$mTv{q}pR^dhB6zOBH2FNi515N3Lm$g5Pj ztY826%I)kaR~5UxtZV2^;?H2CkWg-S{pM`nEw0vivzMzfYq44`ccv-(8-G@vqP4l!U5DO;D39xG)H zJJg8mF&o3cxXHv{;V1vOpGPC`jK)<~^ijvCl@zf8PgfATo=L#Zkm-jEQeI!tpZn1h z`kb7f6SelJvef}oK3mxjXvE-UA}tK-{0kEliDyr^LN?x zk7sb)1VD;OpbX~~+o zdL=Q?Wqs?iSnJY?=zi3{k89U|Sg?xrrv{2q^5R!_8wmYj8mnQU1Cx8F4@O7lhuT&S zzhW!?yOrc8yvh%08*w6poei-1E14<=SFhGkH<&G1v%>S1-GBRcEPB+9sf8JVoz>8g z$Lm`g%obPc&5dLNSpT^IGP5$1waP$#D2%gdh-YUJCQsQbi0)mh1DQ>_eOBwYklhMgLo|N zZQTES%#UGzrN@?Zzr!ag{=s$uTiH`@v;UnhyM2o_w}z^(3+xPqN_3fjz8rFGf>&B) z$5Qye}UD@xv+U>W5h;3Fn8wPPlT{i9{yne%>K_6kjw#_&m8~r z`Rspf-2cf<_XdalYh?c14#g(RJ>vT$QxXz&f8z24PK_RJ zg&a`+o;0{zNuaVGwOu_PyW)N~3F~#H2<9}Q%RJBJKaF9(Jp9CvOG@JS-Myc6O%^+H z$4TY*WoIQ2RP3?ZQkVHe3#pi*L^%qW@0-T7;F>&r7Iw(E5*s1$w}P(D!9O<$u881$ z7Ykq5n|NCSJB##$FI%AreLdC01 zX2lH>dzzv&hOD?{wU-yM{h&RVWP`}szK-8pF_(Mlt!>O$xHVW2ww>d!+%QpYd$?1Q zcI!r77-LjIP{dZnk)}oRL|xn~X6C4hwmm%TC=<+V@QlIaC*CXDPlw;v@3iDDx!?sB zyQf@feJiUUQeW1+ETnC2?kx^C6_fW|2pI5D8&3(;IkNG-d7aW|Z zLeEeT7`b7nT=HHEIngs$R!uE$*R3>Se=`EN@w6h8##sZKVA193mQaW}dR zRpyKoEJ;P8rhU1kq<-P6)+S_6dL4~7a>1lL57M)_#s@2_gItZkFezabEdgvdx_Hz3 z7p`VCl`yzDaM;WRv?U3mkNW!q2h*R*N(OM(1o;@bg!^cK8x%J;Wdm*6o?F+2`&`aC zT3Co3+tq5Nr;=K?gFiI+FK!mDHt%9RMAtl%6lIUd3J$h`D?COGK?NKAa+8;Z29k)vV#o zPRRR`tWxwWseFM)>SyM#$2;8?h4o%Rem8d+pE~OG&v)byVe=u@5U!wuZCuw+uUI)hT7BF{aghy`)7x7*g1d^@_N+hK?}kKsz0Op_poKN_XS4 zf)D$+iiHPiN4++~Gurb}<^JU#WO{?9mjd=g3Z0zOLLTWCHu-8l5(u58t4(;CtL+Y} z8IHeIC?EdXNb68gI6`#sr4FXnMfrsNa1`Cf3^#42fdP(J*2h8&kUwqTk9{g%s{0q8 zM-&};Hw3lRc8^#G9&>zd-y|G1b{|wT*&{u3HS%&WgeH~T6;}G(Rkxk>Qo*8zykcV* zx?u_1NVWX*Fvcrgc(pq!w!9_h5c?Z)D4_ zUlHeP*0I8GXlZN7oSdeoj^lrom;)d}M@Q%EoycMOoZD zu-!~nXkvDUdy*DW<4YxHZ8cbQZS5#|iH~xsQ0R$ZJBEeqOdNiW0znzNokL&6`>mCQ z882+F5t@2!P)@0~heIWlN%y0JM%(ZWr_|-l4#s~1e~u^m>sI-y{9O?(w*fB#K_(nl z&)ccX`+hWtP*0s)O?Q-oDk23XGZ3E?loM7-n}S+DmovX>Aq!aa7nZGD=42~&EgLI) zTvZ;9G8ITkijT5C83>&Z7a>!R_lV`qy6l^AR~yn7A7ySebm{geoBi@vGm`BqAqSiG z_voo@Els0xWyR8BRxd3KdrTfhpsWr4O%1O*3{M%D)$>Y?!?rX-7FH^1LLSVVR(jEf zGYbqo>R!X=MC{uPd!PLp($+rVHDLW|^Jr#%b=let;aL(^A2!@J{IY0=@rfKvLBXxj zkI?TXzW8*wTVUa(cMyO3Z8Ga+5SX&1|rV47=UWx|6cF% z4N`0(1#ivY@cY1onAR^P?^D(mmX%!OBEoHtBdjJUhbb?u>?eDC2+mKT?-&$TsAFyf z@(}pzN@j(eY!@Fi;5Jy{@9BgfmW-Z^I!m7i z&{8dju>5M6yK9Hb_c=rBe?%rtr6vW$3WA2Kc5yj z|CACf673T#Y|+KB^45Q`qwofO^?*H4Ned~~w~&=FG|udYO(SNwu8w4M9~{J3GOqD5 z4nMvDu4>c|qYY@NVC}tnH&Wu<$$w^s@a)>iHIf*$mDepY%>pwzlv7P75W;kNqF z2uHOo|GBkyl~6w1yPlY>|*Ge4)8A+`kZY2^-25F%Qs5i>(jTYZE1Vr>e8Qf zs=h0Z0PsH$K<|Ai!ZjTM_%BHP+R`mvHSO~H`#(%BvW!|prlHBSqKcrlnboyL$HzTj4lw^BIMbS`F zftqZYXI;r$M+Y2{rg#&hf&W9xa&JkfKF!!KqG}oY@6LFA=5t~`xKh6`j~$lzZt$25 z574p&O!Gx!@}rW<3w*nYF1AGN+y(B!4ynukgp=I|X*UCSpB{%sj&&DNtl+Uh{>?Z{ zlVD<}ZqwQves~(AUc*wGROU=kK?E%Pa~I^^%PB47+Ou1Jmk$wlB;QfpbC4;a6dr0X1#9_f2!yhH&e! z?4s~72iqR?VGn9*^eIN>38gg#J02y=+L5^JM(idtTtO0dfoSUVrqC(&%9v!^NqE3LfcCEstaq0ojSbhhu z#wi2K%b38n5oPiwHVs<(rntDcF{>mbuS8UAM+Fehtooj-!6eqpZ7H=%?cuu`B=f5? z#rzhyyeap>_VQDZkAuOfeS{!`qiJL*DG4uKxR@!)lGSM5R9(6}@eInBGDUP`q(Xxh zK5_WiGxFV2Pv28|7pT~Nv|H^j0Nqd1uDM;FQlh9LWLn$9><-zzpMLNVV&|T(rXoP^ z4kbCA({G9TUTAh@&1}$7E>SG-PXlLonV8l7!AiWjS0S@1f*IMEv~M3Zg1&0Sn%bDs z^OV}Q7rqj5sxPi)4Z$3hHuSQhnKJ^x{JFTMCbIPBYLjXhY(nfse&hV`T}&fWhUY{$ zqA7?>ZqHv1fH;>4S(Fql%IZPSU0tJjsAq*zOx3YZC|6RawBRF5HGt1sz!C>_eXfY7 z#W*@2SAvN6=xfDn+F{Vm)B#vSYOz_^FQ@d7byj$gqvhxF;f|&~9%Eu4`5ob-C~q3_ z$@XUr$n9sU$i7Wx3U{)j68Zq_3~heiEK_f9H+Q#BC~*}+_VO2`g!kE|Lp@S?Yd^v> zbq^l=NQ-2(21Ri+-V|Y8_|@$FZHyPHGuPw||C~cnq#V4d>{IB`UeWJ$tS8){ zSGJ1ZaFO#)a?kMMx;j&>kyV-4*g}5rwJ}cO;`3r9v>-Gd*WL~LhG@!NzAIWsC|b;c zTBsz2AF_FNM5)|hephSoOOQ=j3kf(>u4vx@?O72_PWW=v4j1Dho(gF3t61+m&T=;S zYHy!ApW|+qukwKndH86QlNi9pWaqcb>L5gpxJP@XZc$|sa0?PCIjz(pieSEcmawl! z(|dO7ub%I`JVjGpa;tt9ud!a_Cq6X75uRUb88@ekt!BSM3JNA4q zY-yuqF|A3y;azC5miXIH1?Y>S%Psq=3)&^FJ{G8&G;!e)Ml8{A=<$b3ulw$cmMD?B zy(ROJCPkjQa#j^BAr(UysQzP?zQ+A7=yd(f?AwK z+qybk_^#Xuy;`4+_oko;!coG(+{1ut@GZQ#jtZ0N zWBFdg-EH$(b6GHxnBeTGZ_7W&lbiFjjcJ4aGo@YEN%uFtOd_n4)|{?y9DrIiCf>hD zvg{SR!%X+@k5?Q&zri=iEW}mjxSueZi;LJEXlq}|T=PO!H@O6=2wGL-tVJKT;&tVF zMH>=VOC9jF4?c9b2@hIDWxBRUd^e)>%YvQOPT0%@!0P+Jh4aeXHaTz4A7m_cS#dZq zo_=j|evNvlX!qB{31Zmlp938zTb?}38%X4S2fi=h!BHRQE7;YP^i0bTwm<6gs-ljz z7~x$>cwF`tni^F<_A;qJ-Nh6qp!CV0H$FnzET>;_>@xJ=&=?z>y^N;Lk`YaZ(~P3e z*8(tBsn)V$^zFA6l?LTpqHBUL30WW!is~Ra1UfJ0ET?XSpf?|`E?Zv5P54x&_NWiT zA{^!iM$`SUE@{45sZ#o1Ea{)ZN^9F535V2TezjGI@3maUzBC5&ztd3{&8`TOpj=vK z14^2M#K9<33+YvdNp~g9K_K!v1>GFyES1jRf7i$OW3z;Dk6H55V*AFf1_g7AZJS=}sp`jUQMJi(M1DdQabdc4B}$8`#xxMtYhbk-tVl= z&7y1eUL^C-kFthqHs@{) z(y4T%BFa==52{t)G+l3-z8PWUwSYX><~-cKS9WVMWw#LW&sY%E81; z+QD8?&aY1+7f?}dU3AN=_Wkx`uDJ@4(G9XjUmUNK`RkQgdY}#oQ8&2u>=l7(VHz$Q zwAT@8>AVNK>ObHfXmaQ!Y)Y#T?kHyhO`D?KC2>kb&4+e1TH#qbtH{;8VCI>wT&>ge zL%IfmPft55dC$k36!Ex&PH5OOAyl+SY#W%;9@JnvuKX22T|1hfTlJAO+l3BYv{ba{ zJ}W)+Y9QJtY$fCqP+L@YFCK{zFW@pE4p!)F;XV+2q7i9PdFma9^vRU z0pZ(J6Ph0NExiEFYVzc$Zf~0`?L>d1b*TSOMATpCk6-5((?exi83r7^5TiT7 zf20_2Js(yZ5e6YAYr1n_yiK1^U$pVip;s0zM)3L|8Ea$K0_M26P4~ToYi4Lo z%y*yOE51*tGo|60iWv*rrGO+dRW!cGs{~+ z>T1{UF47ImQ8o`v=w5qgS$dLee%w}mvVLEgIR=*o4f4?^wW!ab^(!GhZNF!nXNCm1 zHT4^Tz>>cxwmVI18!d5UKVRR2e&=Q?6cK8|su!s8ErU9}vDAi16g4;mWhSP?hH~))a*Ep?)D_Gs zRUT}6k~qPZ{NY@@mExs?xBjt~g$ya*9^roUw6ImDjWcYGbxuggWggYEndvW%r>kjR z5K>brS+=(-A2iu2GoNMgB7b*9uf%bLQCXdgK7iot^JA8H-|}-QWKKc0D1|Fz;`QUY zG`$;+IDV*3mS_AG2;?^LV7oj?(3dd{{?gdZ`|37-WK`2p)Ht_3$d}(i=}~*4MCnzV z^PIWy99kUS{aG5q;~G}6RaQkYXRqfr;9&O5+Umrm5qZ(3o8(4e<_v)9+7Y*4n5)cL zX4CdQZu3#&Imutv!td?qy6-Rh@13eufNvd|J4qP^JknZt)q>Ue@(G91nYi!!oa4;b zr#ny7TmDih5yMwo2grdGZXglwK=aI9{BbeW&ne~QBeOtkgE%fK2lOpG7&#MpAGfFN z&yv?T7@-h|fH)dqIJEk0=g+97&G!DlE2e@W<;Sqx!Ln=|@W^NZ)~&6z5%fcew}l*X zPgQ?5PNm}4n+nc}b6@?lLzqTnCDrMBazvf*@H?3dt0TG=!el*1BheDIz4u*ZSk)K( zh{YruK--!V>r>ki29Ddehdey@wOE^Hjwk9j!1itqAPJW`5C%LaPC*3P5wUYH32jyL zt*^sp_NLo*G@`XbON%(!E`C0#qUn-t;dE{0>Y^;5~0#m_woYhM4Z|kEU&)M!BXpZ-aOz| zv*sUQAk4C)Dr2llLLa8qKM^z*qrniZ@`k(0wkRaFo6Oqg_-Y#oPh2CgI^9cY>iNO}nJ1*vR2=ThpmG1%gGt zK7lCZ5dt(_a~4+w!qyQKMp2Oocfqm<1Y|=)oVA<$FgN#;%0(bNy!GaQ8#l3c@Pg#< zs$Orb0>s`cazu8!?T)0hVn$-f!k^=n^QfAX=x!1H-R5f(+NcVS zeRL@s%gTt(erJpzl%RXuv(o4+vvw6p)_aXrVRP7tY`c*UGlF=WDZ$x~PqwIIxW~>? z6)?QY-Y1*CFNM&k6{5ILqGRmP1ImUT!qN?d)YT05*N~#0K|{OmJ#ur_quVfp_em|a zCd?dH(ox0AtM-s!+omy;o+4>>Ju_^HrB;wz6n9Dd6G~g@wU^*EunodMIcx4vzmV)P zysk<<`I?j0pjqCb-x%v$J+wU_iMs-6&eMcr=D8g?p$FqWq}9*yBRH5W@z&i!5y$=X zvp_cov@9U}&i{qM`}N6=3PJU{e(CtIA`3Rv?ZyMS9rOuEBwND1J>0OTB-k#ibW#+@ zZ#N4V#aN8orDFXaO*7N*1O_{Z^j06gKSkW;v|knWo@~0jJ?qQ)%qP%;zK-kjNq}Y$ z{&s+!xuz3cr}1fFBHlp!=5>K>zd7^YKwq!)fj?$(dTOMs{;zxVbnRLvxpr5D2vjDH`HpYo>4-akKuZz>f4o)O3FQw~!Wc zm`y`cl1=aJe0U`cdF_$=wja&?t%S$7fY|1+yA#B;{rnpV4R1MOZ+C&O+g}X9pyNyu zip!j3g0D0?2!K$5Ql~eyCzVT<$M04yXE^mhq^mr_63Y(A&`**RpbEz z))AmszfgoNIibPznf;?4>Hab4!Xlc=w!R==kogW79zmq_`?3g<5dsNHH}YCj^eLrJ zt^h%yHCyQepJsRd`|m{@DlkIYw?$d3O4}PAMR^*X=CCBIJ_w zdcN^gF)CLA1sW1b`7=vR%2fAg+E>Q!Dnyziv@mb^ORfnkXE=2*hy3HkN{gGY#WnJ# zI`w>Q68)pV;7QZ;y#8B`H~|ZRcWch@>wI~_Cm_v1+At|?DMRm1Elbi<(BmEVe#NVu zH!}gDH%oV`T=s=P+$k8RA{fYux32S^AJK3t|24iiM+wunCb>NmNxpTt2<_!8tTcl3 z6s9N~caWRkEr!rAwVk)>@A&llyK<3pF<%C<2R*yy`z&rRy22J(NB6+r9QwMdv3xO+T`){I% zastHSzSut#(O|5G?cn)2jlCUT^WvI~LC-&X9W#UMLDeZO2cL{Y&ZQ_JdpNJ8i{m(^ zKD#}4G@ZkjE^F6vMwA)*XUOICD)GQ!4b=y3aBww%O5wUjY)7R@N&E3S$pP&Y`*Pp0 zER5nK5g{oBkYc21h?+G}jJ;>7xweyX~r~)mhe;3 zCP2T}(e(AGB#bYk6(|T6B^X~Hcla$PprH$&LKRHIX=ereAlZUPUmvP=%@!0ob)#%p z*6rjHJM;Mj`fK4JM|L_g?x1YiXZ*^UI``@+f;k<05Xd=HXp!VL{ss4Y{-@|~c?SLn^_C9@z7hwWWUUKEZ4dT?Y}+Q{Bf@i%37jgMf@o)apN#0%1{ zbSv_HQ@ZB%?SO1z)s1s_NGp@`u_m)k85a&}k^w7wC(Xq=!Sj}9B?cYlP2Y7%O zLCZ{0QtVigw!6J+deTrjF+CH$$Gxcy3*=b!(*6PIzT1T#=)p8a=@(p1rJx=**kKS$PS2%`s?Ya|oK~rWL&fh3I~7rGBzkhpD_O6L17%M7D2AOO?qm78m~J_{QMil;g_>mM4r_+Y&8eRE|C4x(V2p;DR=fLzkymS zz-nwuoV>~KiUA90ja}oKc`(syQKa7-$7a}T8Hh~@6k9@LZW~n=}Fb_ibir2|Ae@*??Y*X56xIL8w#zoQTXt{&&kaS!W zzKqs8au(k9wNMf5ww_SKToY^kNpcjGJ86O6*rHx{#^UuXR17EII`!!KI7>usAVcPS z%qej1Y^XygpN6{1!^?FKflJn);YFSvX;pLd;4ed`y;N}4i5QfvScGJ<`uW!7NBJfU#%2jg7-UdRQ|dv@!^IHN7Smc_ z!%I1VV^(@AIn({^d;kQJeGb5ZsuoAMk6Eo&TXp106qpSa5A*yfLmlGaF}{C~DK0Cp zmPIb=W3wNM9ldwh%q-wrIg8Qh0DIh`nMVvV^VP++sY>2CzG_)o+xnVmal4oE-)GVn zocS@S9_BYF`{<#1ydEajkTe%JtFE8~vTm@em`yxJyXJj)m3rH!$Q9spYQ~GfXQ&26 z8yMru5#}xJxV8_PcS?jJ!i{KftD#HrRbeM?*PBni71A1HNGM%xFJ}sJH1limdnqA_ zORD@?Awrq#;N?3!)W5t~&NMn~AT~^#)~(Gn`BOPwM@{$(>hE zPJ9w}tDx4*cyuADM#+hM9U^@bZ+-MK&I9|0yL?CanIPrvD0X8kNEfY^O?{})@~NpH zbP#)W8oaFd;CjyrD9e6pC_0F}KloC%rCSTapbp|raAZ}pR$PLmFW~0w6L!kG5{YZp z2`gvkcCI_K=C!=IZI%$)lVa2Ua8uy|5v0BtMbKFNTJ)aqu*vWm#VvAFH)GV2gsXn3Pcf{}4!RbW;i; z;af#PG2dhGU?YN{<*4y`C2BSe>^jQuG`8bJWZ^UpAT577lhZzF?N7Gq${8pOhuj#{ z1KQKzP}6iRpX}=QBu7&kqPGhSv-TS(6mSCWe_{`NAF8&Ue0>67Vgei(I<(qhK9MJz zA9ui>3YHX)iZ$GNo?t9fWQN+aZD{#~e-7$qEisz)kVhP%Em3f6ENR7`;=_+QI0vF# z@}sgUA|9N z^#^Wd8L?yDPUcm&+=M}uM6o^kst>3RB+_S?+H#6Ft7O!p{nB#aNqOeuVcN&OUY=3~ z>59It4Rph1_6>7T4vVE*UtWX6h;eIPKgMxn<&3$kt6TzLFF+C}-T3^&RSP~Ud~D`R zUlxGcSSAlLfRfOGWW;ig`FQ0;Zpw?$8hMOQLj*(-mPump?QiE~TV(o*m25WjTi;hd zx6+&I*Bx{gygcKRvHIOoAw)!~RUUktN3w)urr+|pxdN->Y<XBTYH4 zIQB?=BmtC);hT5tH$I*~WN4wlHrzrMxnd7cFa4HzW8$1s%5~d5lSN_dTff6^?-oMtEjpHAI~ z_zAoFNZ)V((N<^$BgJ@E|Kz}5Wsw24l`dr>98ZsHx#H$k=W;;=b+thhNS^zAigkW)Kl2?FAOj(K3&O{e-vuG{`L4 zJso6C$HW|oa~+{;9;B)kLvD`yTe09mu(o zbkOZdSbPq8reaRqr_LFwh#qwYT?u!qhuuv9P+Ak#fEMI*NCJqNrK4~GTKE#6jWYhg z*Ls=ee!9yVf8=dLGISU3lNqhP8B%-KtbVWA-8WK?;mOK*B6hoy%4bz zX9E-KI>f|z<*^uzW>J)`8B+V>&Lzm#vNcqjO;L*2`^@B9EL{$r1265{jN{`93x`rd zGdR#{V`Vd1U=IRn3JPFxI$#D^=HN^21a^6qy!9o(2hRXXLyX|*ATM*}us`_xT(YI& zN@TB@ENN2nIyByaB&+Aj=z==Q!>`bv`|{CsK6=B4IB&FSC6+@~5{kbdg^IXlMG|*^*H1}g|59<&)^WfA z?v?r(^p30(e7irLkroUFvTvM(TWKsw9Cyuby>wMjOLcC8>I#~iXHVA4EbNk2UrZ!` z;zBA%0_5dIvts2qOnCW}opEtJR{Uh`F_<}g2C`K`& z8Idvtor2sPAs(J=sw$O&30Q0SANe)Xta)8&>TSm1vQQicn9`I%-J@WBrH}FKkmtzb z$YZW0K*t8(5z;=6Ujcn-Jf);^Af=cwH@5tDyDKF9womxNSpaE?#a+%MjNR>0l7z;} z)2jbGvDJpc1=>wB?~g+1OrSs?Nj_d5Mp@JJ{d`N)g}LM06*sYwqf6Xd@s%tbE~8Rt=IkmZ;%`U)r*!Y%n!068@Tpd zFo{oh2iP5Y)E9_h=pFQ7>=(@njHEYdh+x zgL3PAMYISQVOjh<8dvyabfX%{k!RDG5-RmfYf^k|pC6n@cu3~tz?+S5$b5n12yz_DBglkL5$EbYmrz@PPoQO9Y4ujLwycF&{ z(UJ@f01^f3^`RjaV3Y7VhRPVq9|vaJj)D`8pN0aOyH27JXd$M5L9BkuLcHr7Xx!ad z;T7j$Sz=6nzLE|1Uws@_Jsz;I_?H7vKX^0XTm8dppHu{isyl%m51h@Exoxy&Wnp6$ z$0coy$nl{B$9?J(|0@iltgz>h7|c|i3+iB2SH?4b>bDtD&}KutTPuhP-(w(2g?FDw z>R9wFTXNm^f0~beh~&89A=7=DYAypx(q*^CA#~>q=$)kh0hph4_SAQOuqyAi7O>2q zn>!WPr5#3$@SfYzKW%3{+r)&HYCB8tg?l!bf|1nXqVmztw-QngcAkxIU-cK%+PN}g zy$<0lQY5_#wxxBIF1vwEXW%LpQ7WImuSpBF-C2uX3= zNV3vMQpmoas7D-^K6>nk_ zw~$m64kf$OfFnr$(jO;d!~%mf7U%nFJ_RMP#x&e85B4-_NCj4^KgX*w9gJ^Q%CYNC%A7{0Z>`lj{TS;rpI(83&jd={mf5k2NW6?69rgIaYZl?u8ITt0RW zwhYf;#TnOscP^M(k2&Zn<$1#pBOP(e474I4YKVOtY*d_~}Ryt|=vbeaW*d)Pvg4j@SL%elEKS6f*yM1?JH|#Pdw9gvl#>b*4i_#$buh3jlTmMNul13W zc1+u*5`nf|Ny1vBK@TzVswPktZs+f^ttOVBiYei?0VL7rlu$iD`x}s;4?nQCnak)O@2#IcL5`9M0ftUDeIz(ASKj~*nvm?zkz3UDcr(OKRz6U< zX_N5fjFM9%eDL0@h=VksHqEU#9lI}m_-$h6Dq8zmraKxrb+T$ilGGE5ae32g1lt|X z=75x=mJql|GH)7u>;EhOe5Ej_n(1f0hO$MLlDJ&GM90)w{1<_$md#fWre@ovE(=j` z{4JcsJ-8ur{>I_0W7ZG61_&aHWcg;)S%7{KkHtcc4UOH6j5 zK_%_uqo43ityEQap#-eSP|WP5AG@{&=gfZR_`|7(8~0u8b3XzcY94z}2v7%7V&LO~ z5xI81>vkWK_>{Z&(1T#5#vU0HcwWu#x3F-{XB1?mAD?1bv|ban>N;b4uUZL7we0{( zTUf=<%!0I#bYzt0hwX06_U}bcvoUi!*e~cD>j_jC`^g|{XJB;#f9iTvR%!O~-dB!Y zOQ5f94*Ue|f%Y^VUMHvFSRBo|*u<%<05ri!_eD=T+_)|ihia084eI`&@4B&lJkcy& z^1iyCliCv=N`>xu@@ECt3&`GEcRMSP_cLGm9bzdN)Qbi=YoHR)v?!kX)wz3x5z?x; z07Kb^FU-YK!+J^%?^u~jA&iDP9660gm=qs0xGQuxG>-V;D{&BEGRj>>ni%gw5%%glOnN~+h@XCKR`xT|ZT!LZeG=RXBoiPJBX>ASnVPkMS;dU}q;k#TxRD(6IKXp|QXhbW z2bW--EW|uHi1Nw#{F@ia3`=#51A2lb?P+Y(9w1p(<<2bF0~kD>$4*52Tw?inj;jTF zqo!H|e0t|HWr8gB^nG21P)%j@?(Z$ zn9?Ry_iKv>iz)HGMX)Yjv^efQq#5Mr+LB+M*oBJ=yBS!FI%b|L32pTbm^*VdKl|&{ zMv%Q34YhK&#$RkL!FTItuoI7f2H%`lqB+cc5C8(54)n9aN`~6R)Fc>}j0qK=`y+cpQMm_rlmp%p_InKmeiJ;AAMcQ2n(l#zi z=dck^{PC_4`9-wy+Pjk?gi+L9{f%$}kg7b&$Hn6vi1TMHB`xxf8!miP{Z8E1v@DX3 z&oVvT<1XYR|0Ngbs6R1SZo9wgz8Lx)ic^L(e<;>0z6I=dZ8`9TDx+^#Sxw?H+>}+G@>e%xMAXKGQr@ZV0%M!M*|c=@xz? zQ31TyWEAig5-Bs4=?>ka#SbXcYsYm&1fL11-O2+!ML<9?q0y`-xA92@+DEf7js@#} zB2N41PGnuk`mC6kqCCF#NcCw|Sph}MyjDr9Av3ZKSbco;Rf+lG$4aeqFwl(D}~amd|jV6{A5R>0v&VIQe!CL(l_j#?~$zDsRk_l0$$!uo+!QS{z~*)ve( z{Fo|UWRThtUT9nH#-Sa<(3be&mTBOb_TZvM>bX${$du1Gr5%O<`YX`zpQ)ZXSD(X_ znX8h}-4tThee2m8YWsS9%?4+z#=XKO|KjBfCm=Hg_P*dqLkPbqIm}=I$J`!Ht37zL z&v7L!d4*hei&3}V1V}Kz^U;KtFfI0d8T!g4r+Y$g-Vjh{P;3qo zN71wM8Yheb>IG=lpq~!}Pu~a5q@`1K%D_2s^4VInPsmK}{G68{7IgZE7u=O^mAnDx zCJe5V9$b21J`2jNGvrN*_}lT`0uKd|lPA8GZxz;i9Z~dZGF^)X-M|40q}EPlRZ}Qg z{7Bkt-`A@A=Z(M^qx+D^6W0?%%7G4Is`A}rZ)mK&Tk;!O6HHfvN`F#-@(kt5cxgb0 z2PVpv8Q(X~QL@!BA{~%cU3GYumMXM$CH7@gil-p5xL9BQ=J)4?_K!AXL3uF%!(9SE z^&nFaE;%K5&F(&+8Q?G)^r`CdV;@(em5!BZA~o3baJnnQ_2(2g9cLBwzK8`fqRUC# zQ5YQIY|li)DI$d^8;LIh>FK8Hsi_8&he?9kJ(Az*lqeQrC5&eY;o7U;JT?SVn}2J5 ze_fV%8V;J?DK_19v-K2x31(ggoArTGwr_6Fv7hb%^H+1;o+dC6wD@&t0SS}?j0c>$ zJRGmK?5Ul_n>VD1bzu3u!2!}w6DOP`Y)?ZxP-%%u*CmyHhwhWc{v&tx*UgRbzRFUP zdPRMP4G}jD4%Z^l)B)9w;t1c!2lmJIMNcNarzh+ZO?3x(3p)2@7K4zXS9FX7$L_8F zSvYImE0=_l+yE&z{{O!s_V5Jl$OsFni;sy<83kv60dN`CWL+o(C zwon4}Jzp)QcBx;`Eqtg*vU)-(@j1)6*ROIso(up3%dR6$8}2`}26{%)Vy}gR0K)|* z$-3v_`fP)H<_*Grm>eUqw^disM#OC8Z;(}^vUWFpN-EG}+4zKinqL4?QGi@juT(Px z*hWl;!<&E+NQ5%Xp8Ef=_ttM!Z(r2trUV284ibV$N(<60of6XN20^-!ZV-^}PU#Mj zZcso#q`OO+O?TY2J)ZCT{&N3;``rDUN6%5t`ovmmt~tjXW9;Ox2wMI3nDPfe!v@SE zw7N7_S0emb0eAyx-(-z-N*YrEsImY0Uc`Il)ArV?*Bv}|3iiGZoY5nyK&Zlq2+=PD zxRK?^@F8+oR2F*12$Px{J4n@eIk7oDmGXgcAd#IvK|*(}O1w8Gb9c)aqqeR+00v6> z5-i>7DRC#MAqijmALr$sXZCFmtgK-{sNR`ola?fB(!FW7|G?1C8 z(fm)pCsRj;pnwiIM8W4(uv%V9taaDX?eP4;novFEsVDBkmk*vI8RID(n%_Kd&j2Ai zNnl?Vzo_vO9;c5Ie6$hylZ7UjObn>j?FTpDBtwYLvI$%j2D_DZ7FbV@pf2JAKq@_v z7(qZxvH)B@id}c6Y39D^f+*QLgsdncI0P!s$1JLVBm)VfVK@6E)1rIiIz2AH>fL~r zG1s9EfNIR?@;BVK5he`0dRvUWq2x4#0(lV77$hrpVyOx>>BAN$$R9 z1MNH+5M#mJ7{X!Uy$BEPSbzaTY_UN-aus7?uS-P42?h-ae^cnkYA!0mNwEV)6nb5yhqhc zdIV_~oH*lGOBGN+%rQ2FBBmsF2EQqm_OfF71iKFB217w|-g#Qqx@~QS&-Q!TIax_m z!Rd(|L|=nzzScGEx`GYvb(Fj5VsOIx(hcmN5S#CA$0jxm_jDRH+VLg)1Ek5|(fh`A z|2153Q8iX}v>MB>m!aY?uSoq-0G$YX?+7~LM258mJVC#005}M-6#^{UH6sTB1S%6# zKj7lhIMR^)`57Iim^^2}*xX_q$Zbd9_a+cQs#XL9qC)nhig#{It`+(zw+d6bwIxXx zS*g>~`=Uq?eHDroIhoFMN`+M4u7__gYZXD2FN)j4E9#>l8~XJuYgfD_UiF z$^uFW@QG|USEwppld>6u0(G2Q!!Aw-9#?WQNJ?ysM+Q_M@)iONFpxUFnT5}vmluhM z7tD&*0LN{znY?$t=F;qCWe(7Y*UUjD;`=o~X8^2ar7yLsy%qUg)5SR}>I`k#yUzB5 zFGo;P2f<8p&mNT|hXIcrA1p7h58Zjs_z|egO#KQhIY&DKP`bDcy6gb{RB8ZxCbEP0 ziNJXJ@5hQ`crSJA0L7HRJBKk3y1z7r)1utTQ^G|B*y4HCl%(Xl04M!sPICU{>j;WY zrxSNxYuut-mm;A4*8y_F>4)hBPtaRfLdTTP#p4o9zgnRO9yqTU?|!lwF~|N}b%2>+ z_@F#M4O_qV;&@be-U1kLa46L#2ulAhZQ56Q`*mw7Xn#N;-*RB<8coW2UBLf{%ESe# zptes`SNG5BRvwiq*Uv?GJqo}(gsw>x+#w_~n^Mg=i7k1IB$`x_d(>c1fhy{721(~T z4P~#Y1L|*RafG-W2BiJB?1!Sn*QdggVu&wez>@5%qIBpJ>VsDx#`#SB)xePjrnWFz z#FEbNce=OB?cBXKr6w=O<+SCE2J+vFOt0%V6-pBX#+?6;cSx5$$kyxLAXuu8AUQsC zvz-rm=7Xoewa6R@>5_XZ(n%X^?R@_@B@sQZ5oV)TlrkKHF35w%Z3l*YGD$!PD>LXI zdN-&z%mu)8@r9{B7LTe1UxI=_Et9#)hyT(Gmm?XU<)qZO@7i_R2p-2=H(wWd`FCBpjqtC zjpPuo5ZGV;DkuBTv~RwuNgG~mf<)HZ^RhqfDB(-%%azLOd#fT%Ww`14!q>#UY9Ft>AeB zAc4nk@12*)g7XxdE;uFAGrjM{T2}$4wYW)eole8M6j^41-%CSzSwecrWH?9!(Rc4x zzJ%tJhr9=*7kyQbm6LiO)>HSo!x4F{uE*fqH|}#wPGEUaGHsdg7Qk~5pB|+TU0TJj z60aIU&I*=STM{D;8@`Q>Fh9D;LB@}z5xoSYdtltahSn0s|lLFvLs@D(|_PNll~7O96sN*E8Sk_dmR7 z<8mm~XvK^KD+ErT8X|!g(7DjjfxxsI?9dZ|wDdWgD6_cx|>AZmmSKLgF&a?4M>G*7;MvQJJfj?Jp7K?13Y zC4YlP26YSuwbUkZSR=?S(>}nF`&P@$m~ruR1t~agS~siqwCBG`<^}s3YYVvf#rzP} za7cj|vBi$31D)-n0Z5|tNsbz-Q+hiCna}_U1X#AEEEP4)jJv~H3z+)XS`yVl6bh1o zhMB+ND?D0AhJz&|`>MB(c^%r2sIFqBsQUB(wNEv=nw^fI$i(dMSnE0PS;Q1hk@aLj z5wQ~;s@!%3nbic^R112TFFX?-SH;*Md|WRK-sHfoJRCC#cgy*k69lKouoWc|q6!3V z=}U1(18O*y#@ngd(%&JEnwc2AOyK9S;tr5;b^@8ECSZ2*b8t2fx?e$G4S;?sJ}nDi z$H23!(>H@{2hAha#o)*QHf4KyHTVktAv9F--o}k^ECil@gvgX@`zzGh(-UPNk%C$) zSv5Qxa3CIX#*Tk8piLqBbr=W4I3wprFz2{*y*PEe=Ro}vui1g|VI*Q1!^xv!Q?ep3 z0@MkZpiWrZR_KW&O+1ITZaA)QV%h5P#0rgZk5@O~OYh~3`aeJi1A2Bq6m`=jVFW7p3fhOSoJG0hXctQ(g=>pd zu>&`QIDKe2Ioi6lSVoUVs^Eqh8vH<#zkaJ5GnS-3_Y7R_WsELe@7h<@{AJ$u;91fyR_$FkxL|bZ_ME*%#3%3;jVYnJl zAo|_{a-6Yb4_=_uK&~YDsdDcIobgGd=E>q+1_U^MfaeI{!rT7G$lBfUV|N_$Ji+L-IvU-m$! zlz7@c19PrdQ;9LTNj7CHac?QWEBEO!I;}w>nm!17bUfK4VbugSEyXG#ph=g}NKC>F z8sUJQ?Bd%fJ()EqpOOQ=r>+Emm*2Zn0(wK)uCk69x00=;LaldZb&h|}Gmu%~fm66t zft&B;BX}MJf}-a}=}2mk$0FhCDMQzO!D>%L;#>H11BCl4kIT|mz%b@oW9$mH9v4Jb zBw{Au=|$;+VZbZ4Nc!6y38UBjRTFV=FyBxYRzL~3@j$1kGG4c!?&bvT9bAm#7bsgg z_}P72SGMw1^(bb$G(33C|x>jSvP>qMO(@+*mW)rb;^0LpFmpMaR{g8M&8+2 z&^S9NEZ0G!`LCJ**8?uP2Oc2nItThdE=?lyCD15aX+|DRzY=~ZZ5M-rZx4G0Y$Y5_XNL+xuEvrJ0)>pP+3>eD<0g>Ks9!xzv z6)slGOVt7#5wD_QDF=~51n5CZ>3#jvBEhIzQ&I7A3LXYM_a{IOF z_wVq9W5!@hMe0K~$z4Z02_cWY=rcY~N}y4FAtB@?-y1nd zcir_QPbPb5op-vUs3Q~SONuO%jZi?%^nrdo=0F7PX&z5RJard_h+0T{@E^x3BCFqN z)L2~^1@J^U&pZ~_m`I_PJ<5p(r2N|(aA6#gIuI$}_yJmyv!(j})UGhg0x_1vqL;+* zIW!*To(E%=?p>0iy|$)I&V4Jujnv&cl*SLBf`E60mmiKpD!Lx(+G;rdX{SLXRSm5y z`(Ez4YQtP+nks-R(6vRq!5B0~_O>b%0Rp(IERwr#w|~%x1?agOeUL;;?QL<F)a%L+KsNe3~5sW(k7n$2md3Z}i+*U|u$lBi7uvbeQhi7-1g}7$Y!PE`Rnr zCA`G}AXP4KDX!>#sP{@~_wCG@+VlP7{1KBgdiQfdAaJsb>KK)!oPAdX)Gb7`VqaH# z&GWmjLWNl18E^>4?QS)2Ok@V_An;M_D9|Y+vJUyYo|Tt_<}Nt)SmDp7 z0<7%{fwR-r0AOMm8H4S}KFXfr74dJGrbfUA%%tM^xqepU1J%YJ4cPu)CF$5zGN|(+ z3y>k0(c`LHmlD9_t@S1CZ080CVB^JXmfoy`2#Jfd`39{1m_&Jw2aVhhg)c!*5bn%( z({#+n&Y3E&W}%j+RSZ}sJQ3?@Dj#gV?y~*K8G^5D!)E$zjFt6@xm>M$DY&1=@&lMw z-RU{R=Up^dXTSPsljlM|fDT11S7{MH$|sX}2Lk}b<9oP5vL@l+Z?QXEVenDqVVjGtHorncJbZ~wdgZGe&=x^6`VH%+ z#eu=rzxvUb7;$hcB{T>xCn_WmjA`a%E&Tu{CL_nM6+K-+!lp*OnoF*~3*IDnb-qpB zqWjwl4TGp>Eyj<26}m3%?-yN2mfEtZ<}5^&@Pb+G(l9Kl2q*vP4!W!Xp%^KG9Q@QR z2H;NGO)Jx}z#&sA2&isAszvqw6C_Y?-KpTS^*^r=0A1y#*Q|(T+GY^wVVP?P&PULT zl+~QxW$_ek(qF`D7OU1dXyE&lu|7VOSs08jr2*6CIk-_ZZuxn!e>{DJ#5vPw%N_dL zy6vJm#fs_GnJ0_RHA^dQ|IfHm8tvBR(wCUyZux3w1Al-;K?`Kii3Cj})y}8)OtH;m zKPWBr8C5}@hu;fa2>7Qx5g@b5i;TDZD3>L{yTZAf*id>PKLBduAJtWW)`FXwr$r;ds4G2*vHM&wsF%w+yf_4A zV!UlUPwB*_0@|!&9rSQ(%0t4460ik9_m_CbBzsSMC5Eg(CfTlIkznQ>28JrOPzF{LX0%hpwm*@3V4pvB>JciA*Wn9 z{_11u=Er~3GIn{^V}A%WXYbzltrf!!wv3L}9U~XBuBQJq1KsSDI@sm6&?Dx5a~sIS z>_y1(d-Z*3J!EC*d7IWiA@iPV@r~{P05?+Y8vu!L(jc!+8LZTGr>1MK`ShF<)oA<7 ze)IfFTmlxHYvlx^kcnRr4xAccuU@Jw^ygh6J>0Zl)EhL24eui*@>yPCw1{MZRL<{V zQm-p(kANOmDbE``&X6xJy>=dP9BBH`+E+fe-~>Jo3}yV&U$oSo;Gu_AruF#QeF;Fw zZktM|(%si72(fbzvo{4~3M144AkB=sD=u4_?#V=3U(H^Xaqnw_KHd4Ie*C*meu)>D zS055a+VrjS{pn~mH}6s?4!xZ(8r>?~N|i7fl?7|Vh!aF06=1fj#iGK2+k1Yy7gen1 zU?KP>uig?YUj3%yCQ2hu8BZ1rzk=50p7?Wn(9VCf8*9Olafj$TpzdrBycZ6~HNA?; zK0oQr&$La$h3KEm$>ssPTMfU(MU=SKFiel9=z?)Ein*t1@Tc^6k3dp}QB1Sn#N!@C zUsgDfFy(-6<*(2Rs{t`9-ASs~JR7(hgXS*Cjx0Z!0br7Vnfb?gOLk43(}Mf+d2!Hp zHtwo_Rgw(s{MN2B_$9%eF5ymH9sh=+8wMWLeBn@!A4gAr$!F=UvOK9M^Gd_bODSZv z>NRL>##__O_q`v;S0!nEgzj8PZy^cSP2ZwF%WO3J^2~_kn%mco<1wkCP8V<xRdt1%iLSqA%96+#c($ac>j6@uc`6=tNq`^WwNz?LAeYs`o3?4S2V z05Fhmq@59g#PyP<#$LZvKRd32+uIy8td2yK!H5B(1Xt<<7a!ErZ?4F7zaO`{h#orY zX?SggfMiK+2`%wJ_P3#yj``e=HjM7v@-^UC_ALg*v%Gk{MR5NN z0a6>LHvrn-7Lv+VK|RQma&XeS+GW2Tt0)Y24KApwO$0TvF1#56M*XLD6#uQFm&LgN zz;h(WIfy}}^41vi6W5_hDo%DvcN$joEbmN+A^OLTDwnCyaioDP*hFpcoBbc9H{%gE zr&2p^NAu-liSP!U<=;VxPld03yl#0Rpy|caN)S>&^h?)dG`91qZsm)(<~m}x6*{s&Y+p~mh~=NPaRs(H{Mk-m*i|551^3&Y zQ0XRi6tmd3RJ5_~o(#+;%*%IEfxFQDbbcqW6QTyGrNEIU6>!x6P9Y^lYlvDzvhfty z8PotM-`9WLI-j8a^^^CZIpzFOm7u>uI}hO2gK;Z4w|zbIVg~DWb=+WiO!1tEy;%3Y zBujW|6O#L+>G67741#sSlX#G@Sh#Yn%ZrvU?(G28m*6+!Tl4^*nh7T3dpH3SAJ1MV zDdoJ~J_Jhwz*q+#o$SU@eAFLxjjQyh%7Ss@lB-Kt2f@IT>&On&lW;w7-a5QLi5WE5 z3}n^gz(zq;A*Cn@xO{{X11BoYFkUa8e-UXV=>z02*1yAcZi}$q-%qGNQ0$5*FrOm2 zBSmjFtZa#f8#n*Sb1)N8HBpc$`$ zao<5cpdVeeFR96evotd~n@R%M!*izv{vHIvfA%kK_R&yjP0=-_^!$EQ^InO1F&H%C z&%H!g;$eAJ!BO+6?MeTeHxX8+E*qtTwda{eBMP)AyUv|S#nQu(dO&YrlsI#gICYK; z$>}?1yQGe$>0EIgEo4S#_>#{));yc%aUs9cdBLR#-r#$JaadCDA}B%%Ysb4gKkN-;5~WUWqHeB8&@+8YC~kUmlJl<{VxxZz%Qw z;oZU31i_v%5(KmR1yDpqg9#3?R^=^NnmSgNICl~>N*+5dmZWIn_GOj&Q?uy5)|BY_ z!Jlcb7Eu@Ak)usc9JT_SY}hCrUJ>|R+rOZhX4y-hOQb2FH}hg zVK4r!+8*95Dtz}0u2CsvFZO6&L(tQR3|Twl#&14o_SlZs(~Poav&V)=`s&GtlpjcH z3g{8rEx+!`3jw}?2|#@63MwTU66J6_KOeilFTp}pZsy73tWjf_%k~B+A|9qy$AZSC zq&W?|_I$%?&+=9~#$IwCq5Ta|6l)j)s3|2!(AWl8bpc<>AGFCg*XcF5KZ*c|O}Yi? zCWd#jAwFeF(Z#>;4G*}QRzV_~`a_qzq^YWcw=xfS3S4x>RuyLL&Z7XGMIulXF1-VG zGc}sEqrGQgQov0T_$tY^sDiSvI^{|$Ihb7KbZlZwk55&uyrs80fL0dSL* z5_0Mvl!Y`}r*qoev{-))qQEC<9m-b@JTGH%*W4>!%P2d^0O!U7?wD*HcMWQI=NQ<< z!YxuA@hdgat@9m$CetW!QH>93;iF>=HWNVP1*D<7kBml%DEeq?a7Ui;3DxO5%V+Ej8`^*m-t|lI z|6HO-)rgb!(&LyoBL9@& z2S9iV=>&M#+6O@HMZ1GMrf`t3FFTxtA?siN`vp6djtntrGId-wV;OC&PQPuxCkZY+ zGX{*P06iZ165zzgs`vC{uJqCOJ?rP{Zq_1q=A{RWEdAiHwl) zr?S5e}07Wn3Wp8R1 zlmk;e1suF|i_iqPF> zhH9)qli~-JpWkmg(i?3Isr+kt=57H6N}P+MUUw-|-hzYU9w1w9^A3n$*H1l~G?0N> zyETHZ=h6TC_lQUj=}n6T(n(_njX&kU!!$TbG=unUP;MBGlJYT<^~idi(JYUu93@uJ zU0$YEHL6_X#o7|Z-_;WFIp9vV!lG|BfoshrO(ildGJ0oLab&e;QZZjp>{14R-V z+O}~BwfT~2O}iA$Td>Iw$C;@XTeDBnT{{bC*H$&R1_xz<0as=eKi~Bdi<1ISN?VTf z-kWRPx#>DxLTZ8Nu-~1FNk|<$p|v2i<5fLR1tF5dG#9K>#Uxbg_K3~>{DfnJc`r?=9z2PX|2DdmZNO z{@$#34LJBHNP#33kO`$Zuh+c6p(v(ORY(Cy?69gG^eN_>aLpso|83X&yWI0EDODXC zpD!Nw@gE9fTVB^h(B`b7yHM7)6&;)__R^3Xfo247)Hp@Ye8zANcl2wkX5#0`JJ8Yd zEG7K_er#z-&MvdQT5bx}5|ukNJ#GT+J)Q_)FSWO;^)Z7PfPhdB8c0v;=UvRKAak0bl0J_P$6+&gL8D5T95`+qyc_(w7E@89%_F%TA8^nQJ zRO>6+=iLVSqN@vpIG97+FBTw4*>qow6CCv@J_0g!S-_SC=AtMpKk++=d=AIt^PmjQ zJ|O0<2LD-#!t}e-36}S-j9|^Q;7|dec0pq^NT;rpYc3s7y%9=TRaQUrj9<(hRxv&a zYh4rCrE@ib-gRbsjHn&OvX2Z7_Q}_U;5vr~z8_b7lns_EjQNK%9ywdHT`XPerl_{wh-4)ls%@2l*;zKpxBQi+dxR6=!DSgpSFy4r^Z_nkiCgNcW3 zI8DPCa@;gBkclrN#jyPH)_qxq>FREE!eAS!7eDa9>4u2G?FJBy@*XNz4BtBOviB_O#R{|Qpb+G zxCtJfqB#8HV6aB0EnSZK#->8xsE~F(*jG+Wx6NsUEHp@gcQ_75uNCF8@5SaG&bAYY znLDW)t>4vz^XG*s3O~q7Ber|@$0R#>(IpYTwLSbo{+*~$jDx$=66}`pQE4m$*hZ`0 z<~~h~O+|at3eqEz{J}I;q!&Y%Ys zoVe-oass&U&v5S-tZcIu^^5Z#iXKb zb-~r7qE`Mxdyb})ACu1YuV0Obi?y^oV1<3VysQw_O}`n-IO=--gD~;)eko<0g|JUGcaQE5YV&Pp^7 zpI}-_zMLc%O86%m?>V6kPMO7!^JErG!gxD5XPah-7^iix;3=gWkFscMJsMN(XJ-SR zcWAfJptXIzu|3DaCJKl!2Xb?TC;kye*(&d&*X`GNlb)lh^On;Q7kwDQ_@3H2#E&b`h19I8NHpbodaqSmF+WppRT2J-Om&#Zzcog#? z;Gx*l7d){Fkqx^03r2Kau3Km$%J)!{F+sGy?R*dN-qf6t6E9XOap?XK@@l5 z=bFH%e{gz)1QX6j^?X}f9^P7`&4>J2KubbJKWRZLQl|B!j{QO+W+OEe{J;TGlS_OF zxSFDTsn?%Cx8O0B&s18MLaP@#CywE_+O);%owcxqu5*N%M6l&7q_I4}!Ezmu5)*f@ z{BKHQX_1@tE*=8UZBFVsjb&2SLw_EGsU=tAF(frQ)qIW~Bjkl-ZbkY-;Yy#Ta7(zg9(kjSK->Z$n_hmJch}JZ?V|0n1WoUf z;bey4q}h8dg2*8xkJxOE^{_9k=QKTNQ_gTD_|MBxKmnRKGtF?y&9a=+{YmhZnVjG8 z!He4r!$CY+m!MwsAiaX3wK!r?@*v3ssZ!nDa(|vwrzl6YwPs%aVtf)2T;G6vc`2oL z{#y5N`F7+!?1KBQWh;nv74cEQ96z2L{g4c~v0(YEq`1km|3ZPei_p26c-tK;a-vB{ zM$Rx|$8Lt0l265dr{i))1NXkWO=@PrKk3l7h?eK|2O*IgZ%C^O zRglXrqg-e8to?GTrTW;Kwy|wFIZ7Fe+P@E`k?LS*9mtc63MwcV+Qv-fLuw+bdb7 zfYpDe6TY)K1ULChhR!L;M`=AZPYT`8Ps$O0d!Qv!f!AgEzZZ%{@jQ*i8{JKVVj2y5 zd?;TH@m5$&_Z`(E+;l;MUmuT;UTkJax^Z*l2xL+x2QEyBAGt63?0=7{xXG2_8>pxC zd|!~_k%h9s_`8v|P9w8wWlUv8 z&1a&L7fkD~>}F_O8KihVaKY72vMra`&5E?w+Y70&VCgn>a_PR0#XjZBH&e79iHQ_? z+Wre@;7eG1PtY6oId(-J?uz5cV;e-sXi)N9|F=?AB!0TsLbU@ILLPCqyorJEajI~U z8q3pBX48fx9lvXHBYs0% z30dxqePvIXz51>r%*zbr4d`yh2@O1>mbR`CZ8@ZYwBP4VF5Q)AAawjfka{k(=y%-5 z_L(!r#tYS@o&G#ST3Za(jU!KJ5U7HLH$2_*9q&)jPv<*wgV-4&xKXhQ`uA)-9}+}a zcC{R$&SsadXHEmJhxk#9O-qBf@*TC{ko1D~$E)9|IHSzXdY5%k6>|opx0U`r*Xt}I z3#KAA64I?T_9If_Afj%j6X9^}y258`1L?ony5e}AmihvXK5D@#@~!GyMywO%QFqNL zTF)_Y@gCXMX3Q^BehcBaw<8r44W4~5ILVSnWiVmS9e$iv4A`XilcRMbn)GLCDxDyR z`vfALPCPu3bb(**5FyH10!LX?7hU1XG$`m9#(!Z?^`B4-oH7WA6WT??Bt^*5k6*5e zRKAN1`o%}FbpNaE<2gwiCge@qIUiW;Z<;F_FM4!O$lV1!` z;im6*=r=P01$U~X1aZ?z_S-!0JJPwy^|bvKLU3-oVWMp<1{3$a3gi^g)F8?^XYH4Y z&1w4F&$c}{yqu89%xCYpZI~n{B=oWNTT89T{8^KqGfIB~MFtszMtv(DZaVgV2YAtQ zJzYOE#6teP=$+(T5TYM0yZLm1nNBC`bXO?Rra*FDzeOT>|$xTqf- zI1)kkgB4JV^OM$n~@W&%p!R1*im*(t_cx7rlq)2+4XJ^Q983{e{2z*7x}{ zfyemYlhU+Z#DZnvXj1lSTZVQ>R>XzbpGxuSWpI!}SpCYk`$g!-bH+9_J3${e3zS2$ zHUv)-$D^D~HY{rN6L3lkd6Dw%w_k5nbl#up1=`NXzQW(|^KgA~6t6R+^q$X%x;F0LbOKPP=bO45hrIbG2k_eEiQ6Rck)bw4o#!BP&&N8;dd#KKMg zfQ5cJ!uGux`??ID+WX|e$~|phm;nzrA>4QRm4 zj0OS-*qCW#qTr@*r zNZV!jJS@zJ5lHi+L&1LaZdj&ZPX&pK(+;xbWX^%)XQdl4=Kh9nOowr37WexA3Xh&9 zV*aD(G?yr0m}8VAYbBnDGv1P~pE}KQWFQuJXXi(3b1cm4TMmfd@yQk@p%N#lZJ}#t z3~9XBD@rk;4ooL4IFO$l?tZ}{lzc+}=Z16-K}v&p`l%vSN%4Lq!R$sA-BMAsayT}q zu!4fTZO9KyjjI{@p^Z2ALIqbmaG;%c>9p^*{|J>6lVTlt>Aw)+!{fVeCTt;GK$GQo zOWdsUB8U(%b}6d1$bCA=i;W54a^;`qbJ6ejmyWr08Uv@cX|b=^ilx7yRYEo%Ogd9$ z9|wS}5&m(bbh-b{SqRqG)t=f?m&E4+A55Q}FUzq(rtqz!*Ng(f-l5GsYN1U9`6H^J z#Kd>k&qm77u0XbIopQy21i{ioq&!$=Vixguhj1j>UrnyHmcuI=Pa*#k~c`H!Qkco{wFOp6lC^kuVCmD8Q4o6hXkrb6t1gSJOq%AEfd86 z=tBp*AT4ZzZo#b_3QD)q|K2@q;CWlC@dRT-3!=-j@72gpnJ47M9mv5;_rO?j^SL;` zLvv&C`yl9ZA&Rkb#fg@PwW`PfGKe4HINPZf38M$XLG+TL-s&E1_xe=R2DoRx!%r=3}mp>5xy&7 zNk4gqgDdFt-s~JQ$DklIi0xr6w$GoO zY?E#c&?1?}(Y@$X*;nNt3m zS9O=AFI@nYEK^%E<~wu;K2nd3GFaT~RA=|f3Z>;cL-sjjwxyX<3){DZkjgW?3G&o` zI@A>QME`s9f|21yk?1$pJ!FXC*v&YDY$pfgHxcJvYs`DMLB+yLAJYv!z5Ym(xUrC;?q z*yKoj^S@*=AAn^bL-6y5Hu$|R>Y;t&9#n!i(t{iGR~8T1!t1% zPvc&7SoaV63FM*8go!!g!89`Ga-XmYwhl!6Xc&=JtTAT|<|Sea+#cG|8p|p6WZzn+ z8ihtkRGZB3CQaqas0aqA=7nvUtvKXIJNz?+mFh?+pQijUST;g%pHK00C0RiLYeai> zr|tgKzAvZZzNf+vEE>NJB={0ujcfzb%neUu7UbW~Zp5VHzCx>sDBsRKn=dC)4+OBS zN9WH4u~m|Osrcsfgo4Wk1lW(!4pVQ*B^rgUhte=0?J)CkiKaqBnRFbOG;M}iaT8v8 zYqpwp`V&Z(#jy&?L!XU)-OpZq^V7e(ij#MP;gH(Do#n2RCBnn%ke1-f1zza4wox3- z8;{$KP(4lL|7(rmj;EJ=A2p-$7v2e&05K+ANiJ%{ZrOpwLHE6w{k$08GlHeTN-#D> z-WvEr%Ln`-|HwZC6UE%jGGfPTDub6TMUfgaTBSJkzY6H@2InLB8#Mp^cXsf9natk} zLi1lB`G1WF|Nj7{l>h%b`2WN^cy-u`!J-R!bJKvg>f1ej>3Y|}XyAEzZ?|hj*3+LCRk(ZNnmX)8bWKruk(fbu6LIUN z{C;=BliTSGd5_g6)qOGOcDTwoxfbSyuUTfqdQ>+Z_@?HkNwp;T+(~b?yl++HcvVaV ztRi$wh;_Vc)V#2Z9UWYm1OpCO#Ex6NC%b^%S7k<3-_eY9YNq1b48BCi#0g@Z^IF^U z!GV_UyIiZ**-K~7y}^lXA*r^A>G^4tSCX#SPaWq`i!vIVt*g0*S{A!buv6J|niTGb zx=xHfq?`AonC;#Tlov7H@%f*ALAkDaJCXXs=b%E=5@wmW7*HG!aMt@mA=OWt84YcY z_pKO%r`xb`YpR*xpC;x!HH)Nt8H$?gTt>IL4c?hj>DFGEO@tFG6@JwWTGTo)_hCY!ha#)ausqEdRZi;((7WJBN{n4dK~y_su&Lean_2 zcVg$sL{c32WR$E_{gcN2hhZoG8X>)J6M9yp z4Ebc|mTzJaEOsoWE<(ezTyj13XKC}vG-$`RqcEQ2vrHPA&W}!ArM}R;+WhDH=;@B` zcT0Y6cFO#U?wwD;TgO&Jqa+{`Z2cN?z#{5Ewq|Drts{G$Pga*HLS^W7k~!GvzC2Zn zMjqLAzpKc4yR}uNJ7I9uwzD!an%FnheA7bJeX{JHAHkF%;*RZh;8hQ$Wyr&6<)+LZ z+!+qPuk~FJI$6?n3N-j}y!38_U~UEk#HuBFyph*Q;(o4`&OQ);8h ze%m%ot<2hERmX;WCZex4ND0=aCwE`4c&$>{rg5M<_&qXJr>3grO9R5-vH5x3jLEYg zlwvF9`tM0zbWUVJks*zOGySve4-BrhTRxwEyt(Fk^Xfr`)Mc3WkEB-9y883PbK9+= z*XuQuNC{=#7bbz1TI*) z0OiImoTZ4N?&v&4nX0uS9@8i00^2;A8lA70{iwwuAGehd5#qOl5Oa;5osQO605X3j zCT9J2b_lPz6C?@z6zV>nX_JWHfYERQaQWsR-8>-!f77?9AuGZWh*7@HKwbhcsdt|N(;;-+PX z>2+;Li|4q=2rE32)p%K7Cq?S2D8d22f z+4E?`Zfn=TC()lIix)Nu)k?@oM|=0)YybMy1gt#r<`$d>9A1Wfofpf6x#)qrPu_u*Sye05@k2TR`L8E5%m>G2-cI&oP1ho@7~3cO@G{i`CERz zwZW)Q-lXEAQ`6fC)@Ah|Qx@XZ{pld?exHN+=AR3i!dD_8XU?@1~eFZ%x&Z8Rl_sN=tl|ybbE%w-O#gTx}Yz6{d`Suxn6A zRL|~ZUAJr(R_#B$f$TLIrz#Y9M}%D0Z8M~C7Z+4EyxTqii#EvF@Voo(>lQZ?{93E? zopP%W5fj`K%dQy>dg8d9Rw|FO-EljIzQ12>Es*%A+DwvaAD!rH$|72ipE6}LL*H*N zuU^Dm!9p&tg7?)de7uR~Ovm&^JFdbL4E3(_)o4fadQ!?6w#CR57l-^W;35mvCfif< zXv5GJ%ZPaz_Kjc3PL;Ob(wZnI1Z>P%Z&iizZQ5e>dPp#EMD;zb=I1^zILdLt!yZE! z=fv!eZ9XaTF+w(-=v>ia3D`$c-3va!A0)d@K+nq2LY z`qPtrCM2+*&*#ips^>OrD}3cuo$b5;VW7_M1@-SIzGP3IjxutdP3yn87W}ZNZJNwR z(mEMAolQ3*ls_mp{oyGpM(8b{NKx}$`Y*%HaNEsi`RppSlH)}s7Wwdyi+ku+{q|m9 zwf3Ey&8A%H&iKnoMtSAxMKdzqd=_Fx)N}Sif>G4?q}JG;lhMoLt(lo0_MjG>nwu7H z#yi&=jHHl>VXKYUmk>K0QZjH$H~W5W_~CvqQ|z|HYwx_8%ZgEq)zi3DYzwu>?1O6* z`5d}bPnOA?FRSO9$gNpe&A@F%4a8=KeKN10d*9@Z3yZi(g^GLrsJ7wl0-rw)%~=!K z$nMG8E*Ri4p9q)Dtale2@wgoiv5zK3lZjz~2bv*ghGDBX@^$Sn&M+r|AA1A}Q z3!NrxsW{Gm`ff~SF9^NNZ}avtyo%WV+%n8OOB!NAJFceL)TF-ft@u!Lm>FMpFtej6 zzopoc>h$Qs>gB|bHkh43-(;av(XD~0zPP)U7g>l?PV}B(fD&usFFAL$YJ3XUD9m^= z{TueceY4UzEfD!nn=!3E4GD%1xTo6st9acjG_l89I}$%iOF)`*M8GgYlB_oJbDMOe z$P<5>+KoGSx-@tZC67*l481?wf&9d>T<-4tK?0RQ>b*sN&7DY|$3*rtUbXTC3A{$v z1VQ4i8Qc38cU#Hhl@_9X4C`dm5GP7$`sKk39!v^I>7p~o#U4y-|wfH>>%PV=^YMyOk=~&ZY)@KeRji3 zCWHz1tDZ9U zaD_S*ueO(;s-U4xa$rG(_UD&kC?)I-*w~~5?!JvxwKdTl@E{Z6$hH#m*-b-1)cU#Og~VZWE9cloez;7In_?V(x93cwK8Z_h}) zFR+jYQv>~0+;X)-KzPj5AeZBTW8ao%O^!FrGSW}bV?{C49$>Ai4F}C(wzd*jndLcN(?1KON(@))BrdeaL?aDhI-UKM9)AN=*M#9>G_E4}^#0nQ+bho4x|%7~$=1VNk&(vHPg5rf@5$T; zH;F26)~~-;l;@qkL>2I!o9jd&F>Z2O)s&Cr-M#nBuO1d2E(x9gbd!14moR@a!UOTqj{ZXf9Gs1civ&!ds|n(4ncL$%kO zz9mH>zk~7gyFe|{n^R{jKP+~yu%E55!jJo_PkMhW1`R`IboCARr);5ViwTbaY&aSJ z=4I&wCzOROISu9a>Q-CxuG>XYy-+})QpTEH;aT%x`D@7Eu@jbF+y^&@@N%103}rgC znpfFwer~El;^_Yj@9_lzZfdH+Sin7%jkup!N#x_EkIe$#l+*fdrCyo=?xy6ra@vOZs5om@TBJC48Ghu8D-gi5rVX#)_0W zh&thM?`93#l zRth6ATZz4-qEo|O6vRPewi9eUL*YJ(nqiZ>wSwGL7we4 zPm`rAp8BLb7{PA(Zrt)RSleY#ALTkDUaha=*+}m?M9bd5!LT#ntEM{TlVew&An~d{ ztUQ>8&P^5DqivAlJioe1xUIF`GUJ1|vt&WiI_R-wOOc3piRRh3bib^e`rSkJ(w#6u z-NK6UfId0dr1ORCLvng`I%Lkm`!1(T+0DIXl9wmqy%y*Og;Oo>0L(8`ob{fTY|TS)KX&9n`pYjcTNT1G%i(fbKmy4B1)h3SSXL}j=3Wd-&xuCA zzGCqQY3veEOQjq&f>LQSQK-?6JTk1~q9VGyPQm&+_I0BF*7a&p8bkVJO?`b>@*Gzs zt?>I6zX4W-BRFpeU)B^KF@o}3#&&Uuq8^F!4O8%u`zz~Sb@MAbzx=xUwKJ_(k`+LF zS*P-Byx)uA+Ph{^jhfS}xMTFWzCA0rgAskm$h`ZlfxorkC=x;TSp) z#%)gC&N_>0zV$+Ox6YfsxVAGvuh7wBJX+&5p|m;Pn`M0zO#z>~yGtCm+4Cilta+1D z^Vcx%D;TaM;B#IAv9?hXe@=D^ zUBh?sz|>sd*amZ!we0idoABX)ZzRuWBkd#u7?OttTMxsRf)*;Pyv(c03`#NIIc7|* zZjFKB$H7jYIr7JdG-@kq!+hlM-i!~&0dZ`bec@(&1zp<`Bz0Z(f$gmmVVmd51aBJ< z+FT63Tk1&tYRs=R21$K<_5zwq<#ERs!(0dFQYK2BTJoX)HE2T}*elXETDE^Z^kWH_ zhpg#46K11Mu}4>3vyZDo%cSpZjzzs`SIhW>C~R)x{$O02-_V9T-?+4sm$s{ayjtHZUy>#3VJE4jq!fReXy5u9_s4Jd%g**)aWe@P1T5sR()@9QQl zd8Y;6n07HN{=&-Sz*Q&juoYdetpy`2)pW|6KHHiHGX=%xWu`bFH^$Vy7lyNa3t1Dr z7@k|g1Tw%kbw?{Xvo;03R-E-VPdQ;qH12!7?iyl5wUah&b72DO?HPx}o@=>ac6t4b z&lPBuIl);Y{Ii80+d$cQDE7YN1oCB6!j`DM5`ERo#~ zVDKop7ONLGUwSgrpc@U$lcm<4C%&l1qeswSSTd zEEw<%#GNNvfd$qI1XdQ4%|uSUvKK}XQ*D-JR~_}S>L7oY;m`hAsOr%CzLS!SzKN+| zpCd05X-kOHdd&KDQk>b^B0mhOMv?8od6B5tf;uYjfU&g2yX|fZDs;4|sg2y$tmhQOI+|L* z{)L#pJE0BmdUlYk#8(^m;M5lU3jMj4pAh!Giw9en!;<<>sCvY=o^RM+BuYJxe^T<8 z03~gBCyWm@vQmh!%Hik10)dN)(~n5@d+=lh_zUW$OHQ$Pt8XVt)d!)H`10QerdrSR z#pIKDcJ$*usn6m3a$>+HGTd}$UR_m)e)z9gOmzR_I|CpHd^T&C%5QCYy!dD+CG!d6patT}p0%H|qvZc*B;hVXqFYT9%$PbMkTHEmxyjGmE zsu=q_VEqc~o(#z@ft5rV zK%{K(uD~_NZdiV8vVm@GdIS<`g`MR_`fZ045}2lE%Q>~4TD4^U`S?kCv#ZVQedqVU zYj?j>YB`_4e7qs*x+Rd#+L{GK7v$Y=0t0N!ju0r+Y;eE*m!O*N3x zF+Dptdy`PP2PWX?qhmxeatK=L01|*RpW5f@(+uatvVal!Tg3laAJozhNfe z^{jtHAQcld0A+p&#;VVZm#si{NQw93{*}3S;wz5BZLaTm2oU}=7;@a29=r+C5h`?& zT;fzLpO`EfGyzk`Mj@jv&W?F-;JCUiHJ`V#k!p=D2Psh8}d zUj`kt5SMzsbwNd4OFQj6-Ak(@MvE~jiGUDNr3J!?#m_`=drmgd=~V_O&shP1vOif5 z?3bit^yjt9+Gc$g$Dj7#-M-^p;zS8^93%Y!JTR3a6=ImUUq72*t@V)J{pd8i@xg7g zu}YKw{AYJYTqww3Wzy_^mMwRHDG6ZJfHn7S8`i|?9e$O$efXhY5d&KMu6~lj!y7V+GpmI^=8=KN>~^}0YDJC&2-w>crR+1S5|ftLiLjn<5;Ft zYvv6zl1;T+tu=B0vX8GTgCani6sK{%uoZArZMF}yr;HNSfx)KZfXQZmxHKvwWBzfQ zfk;o5%fRP4hv{E~paxf~n2PQA0T*zI`TG4#0azC-C!;g$sGP{CAVgFV$`CWx7Ux>f960|MIAri0zr@#UXcmF^wHfg8iDBJSg26G)cTj|O3MFR;wtYnQ8qNr;_>xlv1 zqhZ{-?v>R|O8b_#0GM(3UZOVMy_S;sLB2lv`dQLjyd}bcu*Zs`b@D%>6t>joyp)Md zdAZ4OU7lu7qpy^J{>+=mLK#V1@ANB(N z$aOlcHO;Dss^fa&ol_?iei?acJGUF%*9RCA3`E#0Zt;^ZimY&r}E7qEuGir=G}_9J`aQ)rmLm+_0I*Fg1nxFg(>h^PfCyTSq^0E z0^t*k3PIF;l8s7_751ikSAod-4riB>EYy*7^+$6_74X%(0nj(@mP)Nj$zMU0lqrW1 z+h?%0w~}8n@ov!OSL#}->9Iy|+;z8}9(^Ms!&W!8M?2~1V6Y}V@IGgOSZY6A-4}=( zl|;mTfLbPLQ0I`b;v#d58Wjr?X%=j=$6a5H(sA7BVA0`00hy!*LQ89T`EP*xiQ5GJ z_dQWXBl|c3bdqUrR=nDJMJ2$RpAGsvJlAvbWyM2RMUnHHTw>aXq~7B6dbQ<9UCm<% zTQ)#Z1o#eTNioAlu*}V4U}AyVbq6x}1-5o!%fdK74rjyEMVvFdlqVoy^x^J&Y=4;# z?e2$_3Qiyk=_tRolYVItRp+>R4LT7oG=m_>0bgh@gFR?g=|XP4+hqSr`jzQiy^=)E zQoGN1P{~$|j$is@<=eN-C`W{^i+Fl znqhg@>fRDP%|A3=iy|HgiwK(eJkE z8^oH-Qh_~e|HOq!n#DBFhxzh~Nk}tmLvxUhwb}X;T#n6>_ru+1BF|p=+Q-S3-_sbX zMZ;DbM7osa#MLkLJ|F9ppATerZ7SV57d1Y}dXx2m+|YS~`#!BA=czpkc1mx z2^4cqw%Qkh6DmR+XS$})c4}{KBf_3x|5AaOlctJ5jyTov^PYW@v}Ey*Pl@t)n;&0b zUhiV~qs$sD)|P_7m539rw1w@Rf1Hg}Dy!?A6}LYy6xfxe>jMN_6jMZ%k8>)k>p#8Y zO}DToeQHzc;hh<4Pii}HHB-ME=}zvQX!DIEw2;#Ly5**I+6~~mRyq4)mhNhc)|;E* zE}f7^d$2SpQ`+yBVe-YW^(0}AR&bR53K~}(2pjsO;oY2aZiARDQ=-_FTko9BdJi*L zQ+TbXVwfWk<1t5P-awBv$3A^-K(yPmajRV(7==tcN8fnM>buO#KYVOJ7+;_?!(=!f z-bq?`v+jOWPZ!_bDjjSCYPIJQMSD$Ufp`RQY1EI%OgSFKtyM<^Itg|@ev6nl5 zsAn2y2!C_W4|QhY7EcsIJhG5o1^R0S?RDQtp6y;~25m;fPLc7`Kj-HsFYG3ls=8P9 zWxXL#RwbUoALT&elNi8%aift0uQ_UZH8dyt)t%X>Xc0ev#4~^*5C1~fR@869qprJ8 zdTKLeTCI{$kJ!lbvWooPPtWsJxuNbIH|v&L)AxB7q%CF~LeR~$%+<<24I51r@D%3Q zi`U^7`Q}$))XXGdrfox(i`J09h_nD8$!_~>36*p%?bJ)#1nqca2&C#&eqd*%BY$LZ z;NE5$#~N^~vID(Qa=IhUvCr*-1MKnG#qiV`iOW$jWGp_;K}CsZ5_qnW^+aA@{Qkm# z`IVob3aEs6NJAiBp*7(3A-x$ynhxRXYW2EyqHf~DtY~1bB2cRM9W`n00~b;XK5g=* z%UEKuBfLt9torQ5>K&i9UrTJ$hInqhNll5s_V)j2-*0`?-u+4i!TQs#>a;nqh{9hte9%cii9sItd;@m#g)ex%5X0d9!JsO7Torx%MQS?O zLNBb?y3j>*307=cJ8^CX91JY)=dsfRN}pBP2nQqaH!`A&Dp%c8o3EcY3G*CU>xif>W+_9s4)qOoG{ z2dbAPQ0>>zxGqXe*Uy4oXFlF#7B|E7DP}6Nq&BA8#^-^XCf01cdKQ|t;^Dfj-cI^W;r8DN_)AHFf z%~TjuHicTClR}@jv{?nz22ZqlkxNa2jqh}j{6ul187?IfrI7zoA>Wi?OKQwHBp8k+ zg3`YCYr%87t0M5TNX(zqOyP)vt7Lre!r$L1y4GnKS7Z4_GwTw%$%J~y0( zRx6p*h($p_4fLKA)^iI=panKkb0Llyw$9EZX<1pJ=b5;NNqnyB z0S*DTKQH0A92v4p$u-ZfpJ6}8(9}F_w7;6M6@`N6ZX}QA+N0Q`5ctsOkcD3vF z5qTNGhR>i+P1@Z~Gcp~WM2JcZ-7&lGG}%=vF6qYm^FZCmX*SuX1{A80FYR&D*+W3A z*_jmcu`#b@QTX>*Km7FCs^c6mc0Nf-LR4OHlZB?4om~m{J`_C)??gvOJ*0Lk8Myu_ zX^G944!*3BKGSP}e@(cj35UFBTWSjwc@8}~-0fRoVQRA2i?Lidt^ElVgM%#>_J+P* zEsrUtj#Sb%ocw+x>z=x2YtZP1k3b+Qr7cshi^ue31C7o5)A>QeniPe+86W*7VCvM7qeKS>-cs>&-r8T}s(S)&eLd4Pf|xvI26y?G*%W?CCEsZhN6kw-zr8-G@UXI_@Y=~OkEX&w?R|A`h_sN9b{x{s^O@1P zwVwr}<#q4LZM65~GxIB05F9;y8I4T9T-C%nd%8O-`P)?zpd3A-M;O}~eDYIxv}=7O zfT;Tc0F8vB?XI`3Ho_UiDed225FqK(zIi*d$&}6T{9OqwzQt+vERPP}ShK<4qr}vd z_9JVMuun`e5(&#d6fUCWTH&_1$2uFPdK3W%w?qJBnt{aNokL%>kRnutj@Dk>Mz8p6 ze%}MjL7b1~+lL8kgRWmH751zvZ`JRL;w=lCXX_nTlMAiQ+KPSB-Jgq} zUWg+`?utxRXDkPW*_4~+0r5)!)3rQPga%(zpC_1IDRhk^h7pfws@3bEmW=BlG?8y5 zRQS*+thp6k1}fVc4u-IgCdaDtO+51Q@7N&t~m`DH*1wFt0&_N%k99A%xb!l?E~F zHlwnPj?i1Pt*oG;MzlfG)m`fyv*mYItVswcc3^*5?5<@KX}9S&{^ya%7RFPBdIBh} zwAUT(Iy$GJ9-v|8yZrpf(bo-+fzf*H^<~Ry3Ll!Dt*B)LA)J>3dP7e+2qqObym$Ya z<6ceIX*jx;@KDK>Hyxd;Hz+0Y&WVUNBG>-22mH0KWBzE+JpxK8myT{_)%5f4^{G~R zVZ%!v%fEbpWjB*@&(9?RUkgIpYSw4Mj;%l5G?c=rD7d%Ig$ijj<5SrRGdY(1lPv8$ ztR^K&g)?uDSL22r^<;lJdm4E3G!WO7l_O{$dkgcT?`A)+Kk!y6hzP?EkBlV1;N~_I zdYKNThJf+YLJ&0=5*Pv)+1ILfNNF@<-<8tV2*7u(Rvi0@+Li5lZB4V%bg8AI1GkQQ z2*8+hXTedeWXhdWcWYCJvr|Um=H@?q^4p~sE&^3jm&f8s57Z90>;)_o-3Cue@shyvs%6{ay=>*|8GH8*^jM; zN{5&pO;@^Vko4vZ`+ur^fE}1|*tTLhIHG1DEkxF{1>U!Nb{>Tm+B+rh0pegwULaBEc7G+`gKiI4P?FXMXkE#H$5zf@4A}v zjvbIId1KuurRsLO-{D&)vq)XozzeyON?6}dKfROQ7A@)1Y!%MEUS>5*%JtuIb*MYG zb|G;9->VMDavt$q5e4AL>$0B0n^KJ zY4igMJ9x|&pKRJohKaV1K23)aYkp~K)IJ*(uWHEaEg5f`aIDQDX9*iI&w49vkeMC?u1>tY%AjoDQ zO!oY#>C9yd2JyrcKSs)>q$y@&nr0)-xPDNO<9m|2VOp~-ug}Z#%{t)mnS2krWGIn; z{hFw8oIRr~(HHbF)8}HcvXwvMru!ZB_X@D5aIevK#B`E*X zG>x#KbMRfjgX!=HW5y{@wJFqtfiU7A;zSn?zz`&J1vMP+KTg}MsT~Wj$-dVsjVp=& z=nf)yK^^rcqw@2x+OIp~=EbE+iHx^*fg$JjdZnx<&%{;{58IsXrnm2;n7nl_J%9S& zreDJsE^Bfpt!C(d60lyPGz96dh)f5Hi00F!M=yJSf_%u3$Z zw+DcJpr8>@6q%1%8S>ibF>Ayp*xKpQb^4Kuc_F~?i7AK}Yt$&(IiIjx2w<|8)ABH3 z=e6LOQeja81jiKstyuE|*jSOTD^FIBrte>Sh|ATIy%b~x4wPO4YFtMa@s#gV04D+R zHAF%TMHQVu`W0a92|U*qNy+hjfbtxIKgeTtMyoxNr?X2k|pKlNJ5N1h=PcKE`1l-a*GScG<32yGQzcjr)d$xT04+ypDpp*h~8)# zkR;R3TakI7!u(3kTK4cD@#M-qj|cKeNsz8#vTMQ<_ukYx%A7Hpo$L%6j$5vNZivA` zGrF$CxLw7mu*Q+hq#ZQnmi9{YKCpDBPo&Z`9_=EgeSh|S7IRHgGsKgR6rN-lg|}Y_ z*>nHa4_hD~22HBzvrGVtL+6knV&MY6i_Kb1HtfzUJawvnl@~NqGj{SjmanuBcak0i zV{|-5#L~VGkEqY9E*ENGNJBfM*X!v9Ni()Xj|YUOpOhdZW6pZPt17q}ueoa}n2yej zF^?UZeLNqx0(raDIEh6M--aRaS&-u&%Q^4TWH?5A+xJNurx3hP7$0(Cnnc-kh4rVD z-}%AF%-7F8BP)qyge}X<8;N)2@I+oBQlvMT(}*ybiM3~o-<7{zyl=$IJL-W0KLrYS zM^$iOD-U|O{*Bq;IapMYuIq}bl(A^3~;@G@dfPP(}i)_zt139(fbEX7&tTg>eSBsZfZOeoRF zZ2KXyU6LigKja>u2xXZaqVb?4gNXy&`4}NbG#D-|D%n30;BtTi!gX{V@ujn4oNg1K z6xRftU{)FbWdBhDq)}S(ry=Xt;jNml8V^R_Mtq}8Rem@37N==N1_SR0%U^n_V9+U` zBN3+eU8x73;(aX>?W09Ml(J|xt_24`T?QV7EJqC^8-0WFOkmB!2oFHpx;)j1`STMw zb*)FuGWX@wftqwTS2wr1>Uu22@wsMk!%!QM-mw@qJdP?K-+L=5O8gTK2cnosIU9+kMsrs#rIsZ`h`o1TP3O-Z3}J6HQg{CK;PB>k>g#8SYUvr#~96L5~Yvr&JP~>(a zSQa|NK&?yvoAt~^KMn;7s5g7S&&2rCHvKeE0_hCq2iE}HYio&T-*S?`zQ194vCpU8 zl};kair!WC+qnH_zlaVY9xffB0!?a@NtlaeRJ{~GacNnXinW9F@CZj8JKiKX_ z{dtF## zuiG-G*?dXF{W1YEuHx*MwUk8gc5SI*hNvLKPGsr5nC4v0_={Y20J4l^((SA%foq<`)3`$dE&%dg92wLZ6$tS{du zkSrlV8LDkC-v|2kUfEH9K9&gO5ZJa#yu@qpF04gp7k)~zdalmF=H_(At2>4`K;Mu& zW27lL?p2vkCiYa8ZDpaynR-|EKxCq^%|!T0^WIn9^cib%`2)$jS1p(pvN9Z!Cjv4u z9ABv3XnhJr6+R)@z&@^grr>1mlL%WMXEA&IvUsb2S4df{iXvzbW((>F9`+shiqyY9 z1+U~Hyuwg;e%~u6n5K*fk%JBq%9O6UE~26p)wkk&9V09FoZf>of5-WSN;#$bw^5B8 z-5^qI)b$_x8a=E^K^#bn@mVGV_gs3>&9&+9O1qSEdqA(FrvKfxRNM!LwKJErHJZAG zWf!_Dza39Vd(noxUi#bAErTkEL5Ytw%cYj`r!=D~^t}S*h0GAdwUlP3drUxT`bTeo5SWO^c(eK9opmvCR4;O-z!`&iIs5p!+y-cq zl}s5ao~bMzZ6oCipJYoj2bqN_OK~0(g&RORY3k$%C)qY5#?u^cKp4LWQy*rTQBB;* zdV5qC*Xc|~@FM8XM;hPeYUZ%n=BWA(yQYIWR5;{_9KIdghmW{z0ethXLF{#M z{^yqw?o&eayQ}Z9%E`QLg}T*oKnsDll$xZRkwl&n*7IU_jad@kARAhuR<9cpjO)wp zeq6p(bhbt($e#71&uXbhlaL<@#-0K0zAqtOndp}wP!vS6pKh9B%lnb1`y)b`{CF6* zW{Ul79#G!~#3X{5e){ z@xyF(|E~fPR7P?n%byoypXGW2J|5^f1hM1^^kG@Bs7jrlkcpJ1De-A53a5u#rh7gV z-;ZSe8l9(UTD6$0@frUaAg;(V)+m)%4B;1|!@IQT$%)gpvihNME`A{4>1SQ_`rT_- zDY1Np)gRSGsZxO$(b!xqEao9M|B}){tx>*UT8#1UvaN6%t`G;&x_amG<2v)YVQXw! zSA(Ao8BDQ5TApS(EJy0z%7}!)jKf^t2c`{?4dzw|8izQQMtm(gSuHEm5>o8VJ&84) z100TT#P8*u>G7S0;R5|w+aEb;_1t+m2)q<~B0R<85fw`8yPl`DVJhTqR;^{R#IK?r zx?~$tr2PKy=1q!gtoYdPaGD3lKg<~dw7!kjZpjDTbcpZudWYSNGImEX#{d;{aI6s1 z2%tFSi3_g7nsU?nA^sZ~X|=ipeYZ!1eu`(%YOo3 zi`0f^x6~c2^4GR%68r)Pqa9IKRMEf{JT7yd<%!Ry$G@MJ=lYandaTxt>8IkuRxdCS zT^e}aW8sR{x>bwX2|;78UkG5z%gNR9E}-B6EJv~1ovSU!m0&|e>&{T4bB0yrCt_hY z{qzlKt_=TCWVaOu89ZDXVf+A_&#|TvHoB;*SjLKxc4qOWJ>i%2Aiw4T@?j-UjT_{z ze9YmpQu$sCPzVEmpyIEV7h{80$J)jXAvh5SyCeH{1Nos2b-zl%DGrXnpvJHukW z!7+qSl2(iNV+i(y^0JS?Qe?y<+wobFIIiMXa&D8lXxn7%{S)OT9pMw}WaOLj+i`li zIL-8+{x3P}c+XN4fl2)5JONA4uEF8{=MKG?`_>1_~hxcV`~*m6mef4s}^=h3>amT3)< z$ck4HQK+Tt7!q8aE|dM^Ed|szXn^rVgcCabF8!7i%Sh$KNi1}p%nHpJA7lS244!Bz zwc0Mq?%mFM>{Y|Q_O7LIF*m(EH<|W*3Atl7TX@vFtFBH9(vw#~pXK31!7XfVc5I`8O}% z`o><+5jn9GgrK~pAF^OD)2*~;nEp$kX{&&o1qwF2r_)asc=c>@l7j|PKpZ40P4F6l ze9QW^A4f|Sd;N-FwMuvoh!K#&4SVkXKAsqrxTJCzOiX20X#zv!f@a}I63Ak)SonF1-^|6#iKELi0?3Zb4 zRNF-lyB(fe)qb@mia~ARAw2SaRP?GfbX-c zC%a$IfAG-#BnzDcLp6BsanovmS?0u%HqF#<)(Fne90B%@dv+SF+XIf8@ktPY*{EIg~xVqQv4mOPGaZ9V2bi<27Bj2Ba1z%5Ci zZLVpbiRH(>nFh z&6N5a5&fZ7)kqZxWf;uxW6eQ)U%%acrFx~S^qI}S!ikCE5FB#xwBdTU7Yp1dkzFV7)k zO}2$!Eo;5xLxgEKcKz;#k%!jJW?x%9GF6q z@~Jv+QZpa5 z)H<%xgyJj9Uj+73WO5Wv(w=R%FUSOdh@KnopMRxSlW5VR4R9@7nLK%*BG67!uZNSa zDj~;idM|o6!AQXF#nnxdhsoMSyYMP;o9l>F?A28lT4fQtP1vriF)UK)6_UF=POGF} zF#(?-$S&40TAKrDI*{A#Gt+YwS&a z?6K|o%d>Dv)q1x0w}DeMx`7*f_XDlR?{MP|gB%^0j}qwejYQZ+>TycAR;O9|)%>#< z#FrEwWI;vdUS3Lh7`65bxpU&LJr$65kVVhI;#u+RYY?;4LChxeD0xLcU7ZFidr$;7pK3Hp7 zXVsl|SpHJ?Gz>zBxZuoqbR*#{56JhbVnYG(Jq+J*_g}S2CR@$E_U_~QVkJC0#$-Le zxb2~(;ItE}W1j>C(7yIk0ra3hZodDHXRySao#bi1V?RgzpcC|@I3Ta!5)78tAWaXO zET#@kU6Q$;GS_;^MZdHxwtX6W25QJws>{dgbrfib!|q=$@{b0e1)sUZhl^EUpM!1< zw#r_0PRA2sP9?JggSKitM3%A2xLdEQ8)43l!^Af15O?oi_mxizNGNV1z9-$?R}i+t ze^n9wQf@Pv>f)N%jzz971`wCnk(-=qGimC@2b(yexZ8%;-BYn?U+t(etXkvluJJMS zNvUo(Ji4GCV70iE1T@3>KWb5Cc@IB*>lCLM&_%iPTlQ~{sr|l9t{n}Hj9^fAk6~hu z886F%7{E$qCuBZ5RQR%Ydi^)*p(23lPFI`oBnN{k^^aY(T{a1Jmg5 zcC7j^9*0*P@SUU;h=g*y4PHZMIXuFLA3 zS~4@2M?U{^HozKO_cJ#Lo@bw60%-jIZlg2p|B*TT&%cy${-eJ8pXLja{6~-RKi`ka z(It6ZT@(<-|401nU%Tvwbcg@AUpYB4(DTES!}d0@qkn5=|NF;VJG6rY^hqowEdhr? zgwiE9%>UOuz+BgUVSjlZJM-IQj6)o$s_@Sf!sbj?k>=xMs*G3{On3i!JOA^w^*bRQ z!EGTEXo4DLpM!xi7>yz0GX_okXZvCo6pNlh&)&!pQj4tG@*z)DpQ1Vbt7X%V2l(hY zRM!KgGP)q)05E4ec- zZQlE@H)DGMJijP)<%yYt0E{nBubA!xL?77gko!%hiInZ#Jh_T2up=$L2y{_nY-i2p z=KHS~;6?+OSV?dqf7<-Wxv5nT;_@y^U2UQp@oF+c0#l-%3EoS z1Jy0n8tYuB7gn0{KTPQfcu1<^25ou^qdL`Mg?{cv5UClXY$M#;X|*>`xfH~a{V2vi zPA5tjscObckxKv6^UOn(fA!+D>f)O8xx$1n6kTWzsFkSz{Z!UIMA^A~RQ^lW+)stl4A|JC;+@B$BT0}otyX1f3UvxOw|6O1<< zjD8O>?xgXyMC&iN^-_SmPg2UC+khW`+sHhZAtI`XAvrZC2LHZi@l5+U5s~i$BBHm!L_{ax zqqnO>L>~M^MC-4Jh{RKfh^SpYH)=frUtE5zsw5A7g8z=?nqc6^HJ4|GZ-|H}%n5)0 zDvYKMXY9{|8BJwm)mY31>p4!60-m_rSF*w9$z5aj`KM8D7 zl1M?8O=_S(WSYPWIa0LsO3ctgTRNlv55c3iUj;meKRq4pmwkq(<= zM(e{dE0@yNVn_AzxbR2K8+(NV8#k4GciO3$ZW1;$_Y`r|&L>3ygMI0F9o|X;KKlOn z=#(Eue@8E!Qa5Jv*b9RpJjl-_g_*-fpDs`%j-CuHpDC>e7~z=+-zc`Pc$|-)3;FfF zGxgtTS2Ci~HJ{%PnHrcyZIEz(SRkCscb92ndAt%*^zXgB z_i5Dn2R(#0y{+HcN<5)ZMwH`qHv(YtQ3`r^RBd%#RuLxkzd^W2NF0}}ME^SvgQ50}B zOCCZ+m}y?q?CKV8{#of^6-!q+{!D_nrU$cecJ^JFd!3}{WVSFkFtGdC35pe3c!)VK z_cX3kAdDmWnGN^i;>q`9#g|VF)E*8{X-Plff2lY!TckgsiGLTE)5XD&&!c=E=1Ed4 zt-H952r4W54`IT`!690DGBQ+mbj~va)7Upzi^?6OCY&|&pjtH=#f(MUCxx8E#G~gs z`kWN!m}*Yc9jG=x3Lp)yU9+I|sSb{ghXcXSWh4!|m=aHf$Qk2-!8Dur=nt`oc03QzN1|6mX9b6tSw=2|rytaF48Bot zNPaxsl=ZFPq^&-ajqo1Q@3VpS7)``UW-am9Y)G)&dF$PC!WXY*HW_x=iEqCMzO6I5 zq60O>rVQjQSDh+H`RKw1mt6_Z@OQTcs!Z|boIP*KMwo9yMkafwsdVQN<`*_cw73j2 zSR7qP=*yUG|Jf98Un;I{#UsBWYqSnRbj_|8ou)UNo}Ki>1uCwf&f8EJzuqN`+4$77!w@FfwBCJG z!rjq34r7N0DW+w)FVxa?RmZe7xWPW77Z4)xF~JsWxcnJJuweB zXdi_)+P?NHcp!t;SBISad2WJV8mkwzVuDQ@bn$Y6(FTaUqKBsS1q({;^`a!m-Ml#C zVX)H1qh19nDIQWsy=0h+Az>s{M6)^((NnXK`0cTCy0hSR-JZ17EM?A)iNAY|z4to$ z>P5{nd*kndwRD$XCe}lHs>4@$cpHt*x+}+LO?0>t!~Fy)tkxrRcK@`u+`UwDw3#!! zR^802F>#)`vD=;DkD5qidO37ZvjH_jb>QfByG>^_=!l3Szn)C?A+kD53ol6|D_S4I zw|yf=Qb)A)jQnh#Q}ewXUF)^u{cJc$IK8Dl{6z5)ynNyuw_)_SDr+PrbG)5|I1nKgD-*;43$O7S&zUwm|AfqTqr*T}cfI&FG|u-j?a@18 zeUegNrSSu>BE%U4#yc>L$GJ6>BqPo$uQUDKLd;f2$qSk93hBUCZEYMNd`woT2OPkt z^nl&!q=&r1EoGbT%hk(_pGIoTOykWC4wldH*4w9ym{X(dhW*b;h{}@0^3v6AigFGZ zclrL}k8NH^&xnJxZ|R1|3A}tJ>N7#}ejKQ-&3U-(v?`e3mTF#=C8Y&0#(-rI4qIK? z$LMS3lTvBidS>C#r<`8*jqC_?esK>9Q6k-UxzoiwKn8YrAU)DiE<$T&06TN5?mtcU zclX=Leck4{?7T#q#4sDMgLwI56t{eDvdWMbW@T7@+Rkl+Us^{WBDqDH?@Sx|c|BK6 zPO9Fvba^tsmoc#c+w*O6y@oySuG7ysH#_U;8QN<;>~S!GNC3yp7*lW@?9brwDC(tj z6k=;*2?C!P{Iy>fbot<YnX40S!l^I#qSv`eK9uM*x3~|(?9cs z&x_QpuJPGcD9848O+BpiLcxT3d2uFZQeQ*{WQ6#asli(-Hu9w$D=amQ*=T_!& z6e5o@I)7ynv2rH}CF)rx>i59AxoCI^W2(Ovuib`9oQcy%>Xjnu$~GJ(tRjbi^*jBR zF7-Cfcxc*K5ZBbChQjI{Wo5NqAx84fIC)DQ40u2-TFjZoFni7~1d|?~&s8R6n8dLz zIj^`+HZ?Bn%4LEILdee z*=oWT-xqPvT25kgHdT4Lh0K}RlPpCUPMoBBl%5`|=sva_uuMcyJ(-BYiY7>YLe}xl zKWf{W@rKlKkT97cq#J!u?rmb|UoRBl)KAL0J(s>)wVbZ-DGl)b3D{g;?=(mRTE1SR zm#57M7V{8>b<>yzu*KzSO!bjhW{__|sN1U9nfhSyPPdoYP0Ng`5;?DU zJbfJc+J0wJp=B3oP|c6HSGOu+a#&MWt`Kz?a!hOj!!|n4!VBANf)pKgOtlPPwdZN9 z<(mraVbETE@%SXC=_caXFHvR_w9R8#KOQRgTgaFj9340ZNjVCAvditgojTVMT)kUL zMX>B8rkCSmb>-_(2tT<)0b}h!nm*)JUv7dih@PRNY<={*hu0;Fji5Gq1~7Qj7I0Z& zT=_}x#xI}hAnPYh6S<7JHFXo!I{_90A1L=*mmn*7^55{O?1H%Kz0Q{ER+f1sbJFlX zQomu2Q>7zf=v8nI)xbZQ;&vP^-WuS|=4yXOrJ`0m@Uqf7|}#A`wPYQZYcbfU(jC9pf*IuDa&VE?s3I5n9+gDaD_g_g|Jsb1V z&uuk`(?9cP^OX#1X9bqSOmF`P9=nkp$7*r6^lZ^ysJa^qHNiJ!X}UF-K&2A!w5gq(a~uNF^pRA(VDkqsyb*nKWSNo6P!%mN+4tI>6U-n-Ze2hCCKSM znOGG*b*!&;tKcbTqDnVM6-HodyrGVrcTZmNSmJn9tdXh7%{m!DiCuhtn!@3~v~em)f5d`s7(_yA4Or`E=tmG%jZ}raJ zG5Bp2T}l)0!@x?Ls@>WrR8kxTM_C2?AF3Z|Skn47ZyNfcHtrG;WyLgd6)9F`8F{;9 z&x=#7{B*w5bVkdLop)xbI3um26gn-tgT)Gs4cx26LUfJY3#$=VWaE+$jm_mp-*{Bl zI!CzfgljE|I{x}9XlIo{N*n5ji9f_XO6aiy`s#7Mh}*5hzj__k*XUGOWYK=5eRU^K zTlr1QfH3rB@rv(pQ!-9pZEGY)a@IK=9FGhO$|HB;DZb?0yc7O0BOD{TFFS^f`(mv< zw2O5{%`VBGOMi;GUbFzAWuk^FPKb_MF;xXIKD=GBSHslu00b2z1^P0v-PTlIh+x!2 zR|r8>?_-^vQBJ@FlM%4(?dDMI3*?}@MdY1j>YR-6g_f)=07GdWkr5j>5|62Sd_873 zP>_izt=j5fRw&(#STEPBU~)R8bLg1DdJpW;PN0gSCUaa|)kPqiHUpNqmk)u{bMn7I zIxU_qR=WSe-5uYBY(?7MzgFn_+W@WquwK2O$rGX~k=TegbHaZ&+` zLTFPZ+xd2fRqQ~L{9a&3UUnovF9RX=H&yS+-)H-z3SLNej@ZQqJ`;|<>ixFof zm3m_PhX7ELPQ~8Q1)4sDDYXtMMj+E_$!o?AY!+{=|=NCJM2rpik;#p+ZXAnBD^GDtv7hi^6QP&*aDd? zL0~pa$}>3M9m|*GB*;VI>2IAE2q!8CjCpX|Xhx946u-D(wwKChW10V)|A%4)4b|(f zf?snNlMw02#_oE@)wi~S^d)ui{&k4M_zB;}fG)L9tCGtQ9KcKFFnz8j+-rN^qK&0X zL`3v8Ea@VW0D%gxt2o=CbcfKF>gMm`+)rFu?)C2=8FO2z4!6>IpKA-vzhfxI{1D0v^UF~EqHOc( z32+)ZvLQa2-*;9IcEg`(4$$m?gSUw=rX1sg#7LMbC9iAFcs_$2Corh^%y;Z7j^A zPHL2rK=327PD}kqU%4~B$qB`*bq0mH7H@oQ?LbfpiANwfxu9I7Ak4cTFqMm#WLg<& zX*?}_IlOU>_Ymu3XrM4D_4mu$d2#gPz>FJZ6bnM^(nxqX6IG3;1#b%6Hy*D*rD<*x-tvH>&p7^ibe9@kX-i8jglj*5fkL_aY^6m1T)_Kz z%L&q;=G4WoYwb%J;!TTrfn7Dcilj1zSdgeu!QcWYE{sIDiJF+;!;lu<^9>!!N_YBs zI6!KlT}XK_D<5LE^|wNyZg}{hej7ftYj{t!(VveahYyCWoVijKr>`vvnThn}8cB7R z)3Czx54z-ccY7*$c3bC56A|4gW9_|}}~%iJ)_frHaba5zRlb%4*Kh1a}H^Y=)?@h*B2 z+gli!@VjNX*u2r5xa~VQ#URG2BKMui2(5~QfG4F3o~|fEzj*#1sL?}+H*Ykh8lp_z zg(sXMuvCU#2YR95$eH0z1hTsm~=r1TWpbd_e-UN z!-eV;T^76*I;q=ZW|mKI#TDYi%rNc2Hyn0~d3C$nwygTRjBy_DP~$it2O z)3tulto(q$Yjy*JWm6&eAq%Wp@sdNZ)PYROtBhvQE@MlH2dl?Dsl6lJzMlkIa5 zwU0`PlF3nJ*a{xiiHWj}L<~H~{Q(05i6Fz~SFoDy@1Ze_oOe7Uh#Q-(WoP~ zbA~2&EVJBxUd`#Ugbw#Fn72alxkb&|9~KbS#v`egSW@j+Ebj7tHW^%>E;jPb_W6-6 zm8g$Ket!4_#{7#y_3xG#a4NoA?B&90CQK@Q`JQ3f_Fna7Ra?%&CMW#9Tb<==-7#f< zXZ}^QXf07ofQ>bD4rFZ}d0C?9n#|@qf4hB}a@gMy8u@yO=?I2iYu zS6qM@?)YVRb{K)TBI+O}zTkcK-v?g&+gDzOKpzrG<`52%=q;m`CV{(n8pBaQ_&7_6 z5>SssM1w5Xxd=a3Z~p&j_=kGYSK3a^i0r12CT%^HOf_ztyM9~(B0d>|)0Q>z_pO-U zd0?J!?Dhct{0fkcrW}PH>CAHjECx9-OrmOZ)=}AQYz3%|Uwcn{GQPIIiO|;LO74kc zg-pk9G*aq-A>Th{XNA8rb{9@gjTd(6VvStR{G5!dC=NG>wK9zRV)>{L{2wbw#S9MB zM9_T%2Kd_*Vm;C)13KL*3g;UAta?*i#OH?8=GUR`!%eenz?EoeTq`0X0@5i$Qb~ZErvv^CpPXkj2!r0HB;3FA zz&!8+yM3!N2cU|?)5oVI94Z-%+rt#{m{fbpPlhy~PS-9aO4`-p#h(mJZ*3J7p8D&} zYLt1lw2Wu+aUUnaB$szwgYaicEn@n47|K*T^Nq=JVM`6;#W8TxXE+mCHSNzMkRE z&o8$U4q6r15LLIZ)>#9+)v*E((0w1}WvEDcDgy(*=2z;)N?NGK0o7U~+8Tl_Ms!tv2`FOc(e4pENOytaO{Db`Eu-@xG^XZ*w9z*Kd z{8@EQR``#XzUrb7r0$8X(F1c`4$1_dX4lJzlMfs`J#lqg%5i|CqVE)QVHl6BIj=>$ zh&{`R5EO!!w_1?I8N@1+FNZYiY!p_R)^n_cq3C{z4~m^<7cZnnXt&e-7LdMf?WY81 z#WiuOKrH}Yc-Q_6M@*GzoK)+jc#`5(O8NPhKqo^Us)-RhF5hhI(_jYEn_`^vbCEcj z5uQG?WY}}9Fic|a60f?qGDYVK=^NyJ9OTsbYMY0fb4<~mjQe^K%@=DO0yYNJ;bk%1 zufr-62Sg2@e#lc68d1CxPy``;E4^k8yLg3K7iu0Ulup{ek2xA1CF(bY(eB?@W1vIM zesq0p9W;@I5MF4JFgD%x*Y=z-espRb1pNbBZ*O5!>ZVY-_PcHD*CWp@VToVZS5A{s zxtA1mj;2zU_DXL*NK8N&#!2xi$5amR(@^RPboq;oJTmA`_4v~(a_9M;MxUw%1Ku;u zBI)!s+Yynp$Xkm0wD2}I<}MW#Q-zb>WVle8-1k$XKTk&=E2uuulSmb?i`p>C74ki6 zyDxn7AJLb!=Y_C(V&*#%R2p$YR>rQ7Zrg88c2%sXJuAj2KMVe{lqCwM)TtVi0Hm-P zo>IhLq0P&drfK~9zGB@w24O|cQHrFGLh+y%b^Yoih3A>gY2H90?sg%ae)@ zEkHN7)Qc{ydbde9c7L&NyCKc+^wKxDZN|6zzAulAYcdqzq7skv=uD~v&D+vkt2qh= z$8}4yg}+_wp8YhgjI5JhEK@HqbU`gnrjOyehHa$#O(dH%t+Qi$3ny-J{@2?ximp9u zb2(lMnyFE#vgJ3j>{rDye=YpliGSNrZkDXEIi&q*W4GNAd0xSL#xcPObGg(G#g$gm zv}>E$v>h9po?#qhbCUI5sX??x@84b1@K0ghG+|Jj$JuEnKP0+EOhtYxos;2vvh!A3 zR4B&f1N@89ey@iRGjUW@bjZZbEq`&bs14itof~lV%VP4Jp9k-?@)rzME?ya#)nL!N z))Tdnc#VB@;m==}L7Z|@u<^XSowt$PW>_0qE+aU^$gnkUCSlI}Yoo|w{#)ILyJuAD zy&w78Qk`y*YtjDva?{UO)KhUEDpk?C*hvaYCt;u9@^OV+>!2Z~nhNiqC7_MQMR!zol9=9sZ>%(aZ(J*wHW$Vrz{qPTXVs_R%EZdtT`9jmeCuZ8hUOaB;Ofx zTakh8s5kX3M}f;nj+qIHP}=?5*>E|#KW)%1k&W4#mP};v=41zCWI{7_wY`PCGjrqb zelU;Lv0q9TyM2S0O8ix{;SWCi*+SmD#OGEQGZaNDREabjj*PIL{G9MP>0<1+?_|k# zA(FbeQ@16vJ@-aR0E=Et>awi%G$%{;%4I6FY5``OcFDy|7V5`uJ`ZoBU8kd6y^*&a z+*atmeZITe(#f8tQ~=?-ifzx*(wu*F={lBe)XO`hjYZMzH`AoGWNLv6>L!hd@JD8q z%ur0!)E>FCAA8n&M(W^`L+c`u=42N$((B+9g}%9%0h@Br{i@DBU1AeYiEi>UM^It& zt3}>2s|>MH*Vuh&OI>(i?b+%2v;YFR?EaeODwy%!%qb4YLWYR(^!6>HMSO zSQnr<_p~&#S>|s9!J#*XwiyC)@1TvDr#HVnV4m?}m4(VdNwG+}b-MdAUcvq<1(@s` z=!n0-JW8H#KAgDZCupK#`Q7H>7mfo%81pw_3>ntRb&F;mp36edCA}%AOU?}r{~0(r zwW13FMh9z=VA-ZOw+SN>@-xsj^%%G&>IN7=*vqFB+p9kVf#3u>PpHwVZC>(`M)iEz z@Gy}>@Wickx^?h;#>Mk2ftsi`3w>2mg3(n@8xMu?naDzwS_?vOx7PiAM1(-MCM)~Ch!ALou%iI@DlcfpYdH1>mG7is{;J=X*Z&J^iWk0}T~2|Y2I^X>C{ zd=<-ZlSN2kiJxVLI!G2AO{x?bS@yid{m8qeE~wI>RL55@qM-i{p+QeSx;Ra+6)EN! z>Pv(H2fQ=MKvn`O4f0y$*F$_U9ZzPwbP2K|!8*O!qA~wU*a>_NoMLvC?8-^P{L=!= zDovq_S!LhJ>xA&tvZ%Rlg>X`>lWOGx2vE}48_>&pEj}EHdMev2u8(_dy8O( zsK}|BH%OX7O_U~6D>PS&nAiF}3pkr#_WK{`#OT3c+yjU4!i-=>(Fq(gUccXbxO%Xa z$)9XX?^mG6F)CV3hxU6vfV@=30LC5NT%Tt8ccO-X3+v@w$tz(rG?T8CXi{yapAn*IZ z6xIcp;2%Yof6en<;B^x*$9g_8)J;Jy!l=W(-=Vl@qXI|)gE6Fr4$vbqRY#X2Od8``rxU@2i6xI?R2~o2%e#R37KK4KT?I`6~^4 z3&X`ZjeF&~ZM_s#d^B43fZiUdT91**hBs||3+$xW!1)IrgE^_^;WR{G_e+}da4>Fo z@M0XSW;U|oI+o!F&;{MU4|f};=W8s2apVHBP+T~0{}-!FA-I1QyWbbl4Pkqy-<&tc zkH7o&LhuCi;L)S3MX)n0gF2W5`CC!$o<3M$xA}$g6fjeOm{WJ&@o=VYU3HoTcy00C znqpJjg>}k>YogA8&0Kma6H-S1V8$y9*Z?IN747)T`(S>^4DAF92x{WJH}ZmHp!r2A@K1LS^guP9lLuY=~W0t8j0FJn;74Q$ldj_CO<6?hTX6LMd9v zN$+ICFWqdJ4RilPtVjXonOGzq1{znEO%B|e$PUdS~jU;1Wc_%3&u};jTra?+m!2ZZxjv*2@DdA7GH!lrvU1 zy|}-2>nm7Kt)4dQsf_jeR~u#E2FIqF9LP5MGy1spP29RGzIxA2+2r|xN}HE^UZ~JavSZad0Z!wymYmbl@W{oVEn;Dhxq>H?Nj` zF965wb@140WDM_zt=Vq{_YV~%yZVM96eMw9W=cQPcMgH)5+vit4(KK*US?o$Dw)qV z5+R6Nc*~4m|JRgRPD@SsU>Rmz|M*S2b(bql&-*oiGy6TisddqE28WTnE8Z@l9^mE~EhlOVeAwf<&|L z$~1k_VtiN&130F*Qg7%~XD^O*B{=tsa#6FPb5rxTEB598J1nJGmb~KA zc(PZ#3pML^Wv7*;q4L#J{*X1OBU|KXP<@7OEK%aMI%l0-;JS|8dc7$CyqD;gdAL?v zOjRAUPQnCEjm@X;FCZx3-JI$%Lx4`YYnMEl$Vthw;X!gh%N;jKxb)bd6*~{&`FF9Q z4K+TW&5$Fx30D~rI>;g2*F`%qx8hC@dsGcMx9F#bT9c_+l^f{92$#jJr-6V`U{wZJ zMQibP;3k?tnS$?3eCOl9#X8_^#j3W-?Y8T#Q0uQ4*Q_+_#iGpbjHz?dzzb6UJgp?~MsGD>KQ;6lyLz>8-Pm+AbZ|WY{YUDUTg}4?7IT{3z{51r518=vm)v z7)Y5C@6LtxcK%e~pQ=&9)ks9PGD?@_B1Xf7$Lm1`I5JOXGCn$Nb&|&(m}$j3qZK%f6y{^h3hu+fBqn zV0VOD=1q6~HFqNiOi7ogBNfw~!~h;%#JW<8U9D3Ox8JZM4nODQ7la(D0kENbc&PXn z-$cLngVG-mx|4ErkByDr`+n1~7Iyu(3BAlMwK3X>Oy4$--XvIhlHRB&BC$dSLzwGh+hi5&J`wm{Vd5(aPS8t$C|MvakRP7&8I|tgk zsmyoDB|M4s0Nb#3du>ko0nMY8fCWWtn2k@#6t&W?vPuIAbcq((#Ag>aZcZO6wy0RR5WV2r#M&Tibh>(sv+c&WH08p3#GTD; zhD)Kb=ds)xaUL^wk5(3*W`(cu)b?T|Urn6QXquQ76 zF8;=-81a(Ktw235QHp9m&}zUcu_=*o0owgSaV1j>Hs`yNnPvbgnhao`dT|L-vHFLF z$PW)@`d-}+*L5<|u!sbX6L4`qFr8udZs+%qe7SbO00m@;8ENRHR13Ln+Js*sbo_64 zsMNBzd~!dj3IWs3p1Q#XHHsq_&z*f<0O0_jmy1|ozkqR1;O6uH{KPIl4UYe|soRWx zBuwz+S#hj3<3qa!Nm!(_VUp?bA@>z2^|(i7{X%{3D)V_we9_tl8+x)@u4C(%Lv?Y1 z^U>yg-5EbOgNX}(f%+B#fQg99B0w*Mxt&{~O=Jg1lPe%oy)S-KdFIzEkSs{iHZj8< z)0$ksQ+p70+_@AxXsWL#f=n@3E19Pm(ZN|3j%KZ5;2wU$aBK6 zSeUQ2LM1EvE;|9-+Q|$K<#|11U?RE?e}MtR{|tEjs})3ghGyH{ zRP(#blclcL4#+$NxdE54BRjN@#`32of74}npO9m|NOfe{uRT=4DQ}37u09SP6 z!FB9d|6fefeaEHAZn z2UkToN7*h;Z8*IS%^qvNk(c53xRtTUeCdg zWqutSMeG0h2gB!^6j%n3jc9iMXp#&*@dS8goaTA{qu#4n1q9fO*AVgW)_^I1-cqd} z2eVUBT3MzyIZ`azbmYC9J_E!)zq0z(Ny^I)$d!#!{$-@?P05E>4 z0kM*V-KS4cl`p^?(IgR)nCQs02lvf?Md|LE{BU#AY# z3w+g!3lHhj_Q8OYlN>n(&Pzkj2hbV13f_wrYZ)8zbN5@`e3A7LxiU@Ov^ zn)90E*Rcmc-zC~^pf_Mf8#k9o(Q{F@^^nKet@R*>C8y8PJ;>Xdm4$vPyQCBYmZ1RV z0*O!9o2T^<@6dR@&>aEF3(*zEl42QvkTsi_Rl>mO-bB-JqgY0<9Do7|0A*>}!SVm8 z?q$oFmk3xOAl=PhWC}Ntd9I{@$B;AmM5ZO~NPv!4u~E;x@5edB#9W?-uU@*&MX%!S zq+7*jLJPOxL=&{(wWfnhq;5Ut>!M$JdTLFeS(-2r&V4Io?VinzAQ>R_`!m#dU<++_ zdwC%Lf6~rK0D!S{?JlSSE%E5`coC4CF%a@hQN~Oli_!m*Mb7KO$>fJX87SY>W1MU6 zmKWzfa%+%Zq+K@_9CLm@%q$1Z^^l*3vxqb;7LbH>-Cp-|2V7OU`&j zaE8Rp6r}%P82MKi1jnZILjJa=Z$d|-jmNWp1u|a^c#Kgmo^}Sb-)ba-yVEG}QNp95 zmaQu_W7bIsISmzX#5}DN4>KW35iVx*1kSW{>BvGB+Nm=$51&0!7vV2ad^qFvQVuFt zRT|`l^K3OwazQ=b)LnfSb7>y_m8pv19ooEsPAMMwk|pwQ*qP8?52_h_vg)E$0`@FC@0V%)p2Wu0 zie~iY{ZUcIVBEq-z?0fOZzHe?HMTjiECk))Q3T_R@1AdLrjcvyp7?F0WXJmaxq1)< z;=@0iiYH{9i%wqo(imFTej)VLq z6yqJiNwB4(NVR%Q3P8ANp}0fNQBfoCTBQi^IfyxOIY3o~n`!~0vUA6n5JYzFCJNT) zb1$cmZ%*!?e1T%>}{%5yXe$ZDf z!8R|GZSqYvk)Z^nRi9Ku#^%S%Ece+^t*I)Fdb5p+im=>9OQ1mneek0RDn0-4{tPg< zbviza>D?Z-W8;k8T>s822_=2a28x#^ez-I=HAZwsDlsMQmbO)K4oD6O7m){EZ#^DoHn>gU(4i?_8Azy?P>ow=%p3vPQktKmdZDhp z7fF$J!^?4e48~y*PliNznSl~6!{Q13#aX4*x5|dQdA8$q-{yO$+m0S_8V3v|V)QKC z<=Lfx3M5wO$ZQv^kU7av9b`S1#dvoob>|^dt{;GdqzuJ5lX-!NlC$ygcs5eWq@M2$ zPmVFzetQ4saZu}_Qe%IW?aQd6O5tPzsGsA4B-NaVw2u~~R66-wZ-qvIoblFZ2#&EU znPSqqLa<8txIJs$=JPzg3%ABY}cUMY2h^fpY`oLL!l z3bPpGD5!j0E&JjO&K44(byQ50dd&t2h^-zqIxEHjdAU>Vs=|C&(ER8P0ylYIZL)B# zXQhBZ??jlH)MExSex$zzIwSNbtL(4e7>7=^?j%?_P03=#JWoz1F;GU}+`?`ezwz2i z7baA-f=nb*0Hk^osD`qL0h7@X8@`_{W`m{M3s&W_1(;x4j+~gc8nuR-Irn|v56r0# zkB;bc+Ou5ZG98s0!#Z?YD*;OXO7KZXG;lB-pn43z<3y>%B-SO&p94_NJbs$ltAvG| z+RGW7?{E>1T@4Tasv#*0Wmlj<`^i(6fS8BiNVa`3Fo#xCEP#BGnh~YnomkmKa86$j zx6M~);*o_e0=Psz|BR%FTe>j^RO9ltd}9@Ka>ve^-0k_r8hKh&-h@SWr`0aZvaiYj zyDuBuPQRf9ymkTPbdy;+NWxq$pEi_3j}Eed5(h*&ANs4r_=7^g+HHLj6O_?l7Wb+q z9-}B4H`P)rn?%V-Q>-ew>~t>Nt?rGHpWkzEuX$YD z^Jqk|Yt3>|Xq`sPyuSRrg6=dE1VhhJLNM%bUj65_y3+ET>)GpjID+wm0O4|PhPvfM zmY&(H4Cz-;PbjR)xl|A6bw!|!{?cZ$DJXD}MNZ#+|_ zL17a?Ap&kNu}B-Z6%vhywxAk)Ty&h!uaT#bzX;?#HakP@ThNiAJhpU;fo?mY+ni$T z%f1w8Az-7({Q4iPRk73OeECbH;~EyAnO9+-T%V zR3Y>~h@P)JZ#i6?AXF`JOV{TVOCxBpQZg}z>JtEx{apa~Gmgr>P(`7?`feP)P}2qo z$ei{2Ti@kY!+1l&L=}Zr@3m;09H%b&bkye!l(V3zd=`!3puskcHmMAQW)a7I%VL48T8e8B>7++FR+r zG7+Tg#?;si>TywrR$m=?rK&hA0$0{?a5qsm0y2cAz_{TVL0_a8(+!{iZH;ZjNYIgTAZu84sHosg9U@h z=U3=Lr(?;FjnCFAuZINA9(B?AF0w;xEiB{+eIcnQ4QDame!dYkAvjJ@3u<>v*TV%# z)I0h%IJQWjQRtOG-JRBL9%On2w{#mo4Xud|pcZ7<^lD91THy&+K9hilf&~X| zq9tf*u(!bKUnLpx4t-+bHrqvXbK}?zTXsf7|BOjJ;pwqI7xe;7HGPcD+l&ng25(Xu zIMlq)x_qdv6I*5ca^J59tR;}PiSJq5m#i?}hFD#nsuECmcfrN+KY0zfIFRfLr%fF$ zR8cQMaBdDdk*eD5#qv1TRJEc7y#$p!(2`^_DHt?Ofq%V@=)JPv9zE}7IS)6s{6rRI z4wgO0taH$IdRgp`#sY1TOzN+H; z(0?r75(;Ui@c&T(g*5hY<-_Z)vq|h0!thC+9_=pfE>OtrVWWIO&^bN&Fg_s7Q?Hwt za5a>Si&?Lh+X!@?9Gfj&Y1ANRBgN|R^IToT0C(@jPM7uLW*uQ!K$;&5{oq0C^WeJR zJ1~HU^R6_lwpU5ZSvIo8&wG84%^o_0M4#~Yu!MKImaYsGU}|d@ir|ZH{Xmh%nH|t! zpUO57Kfe+)U5K{j5~zX2oYXA&SL{3lj8&!4HycMMN5^MzDtU3k>?7UCe!HES9H6(2 z`>kw%js4@?=w?k(&tG5kB6uFIGFjntDO$7j?*@5Og+zymE469-JVqkr#lJ&F#FJGo zNiHLI9pt_|=MpvqR9i;Z+sivM4pk3MGD#-{n5fT!=JuS{Q^0pfW-CVr(V66wx7l+B zY$Ka30`l>h43qgU!3hI;IuVgR0h(!4KCvZ=V6m4cIgLS49MBJu{q21@w4!F@vmYNN z!0P|LAv|w+!>`77CLwh=8Zol{0)=JEos-)U+-e%AUXv0TQT)GfZIVX+#kH-_N)6;L ze>W=m1kc3sE2^j! z{=qy8@<&gfX)^A)YNe|0wut@h&&`p;#nhy|rA_g(M=ja2t!IO^^v}Cw3Wh|M(k*R4 zPJ;eEl!O5)wp_b`l8VcE>Q_cZ?%ngt%s6+ElUBizAKxU((XH#<`Yy;3(^5u2+@3l~ z(`K*}Psm(wY~eE+p3*e5Xn<)k7A}E_r6TAL7mw_!VErbStn4G1uy- zfU1=sdjJzZ)j5OuUtVxH!IUvq$V32ppOC6;|6pv_wSxv6BpqUQ5FkCS0NsQlZF>>6 zV%pyI6)Dotl~PE_m4Ui8NmJ>YAy$UFwUWx(dD^jyq!9A=V)MV~cU%>kd%LQ&*+*O< zm!m%(yD4&pPiLD;N=hGjd`?g9Cl8Q(x(R$aMX2rm{LueFlgnCb7hfMIU8`bR$FjUvILoME3n>rCGM__zGUDaI-axTjfa>f3tQM7 zhun+lMv^|rdDeINwgipEpU2VTvxX!AF@@M`pcC}7Le<2hVz$QZUlDxpqxWBwD0`2R zHC>1YlUebxtj0ga#9^nPjTNsqLq}*RCJjF~*J`&(vSfT?dA{v7^XZcExU$Wh+?gq8 zZ-r^|<9;AiPIR@EhuLdj=Z3?GQS^D~7nJe|bZh0!+WR0VD6o5*t=BWeIzx?o@9`_M zZmDqCa-2N08hkNV01`;kpW2#KFr86CnQh`7=63)(TOc{X%qf~RwpXD>*LEr1T>{U5 zGU(zWZz?vMxJsrPc7Jai&Lsni~+t|zq}N9-#_$TmWMC5lcC~t z*Z}Z`@2r4)k@PJXOnq^^NHkzKl+_O3;sF2|920O+CHnK7i~fJrLezd3_+e25)+8;RtSC8eUxI8rahXbWC$uvaD+z&b!pJ56jb6jfILBSpjO2T-JRSV5X2kL&>ox>5*sK` zKi=MA1|H?l1`~>c2|wSC27kal5{iZi*M7&+kZ$N4_@hmb*FBLA^2!46C_8vmB%p?Q z!edFw9moV+S=c&&Ud{-=Oz^f>aebHN&i;LD_GpbRE^wm&bijfT0rJ}&cQxa`!Bc+| zrd+so2sKv*ezxB={}~YF_ZuJ!VF+jcjh)H4j(E7bD-De8WfH4cCq1YK4+L*;#oPvi z)gA*`76KIj9moJG+P67jBd{LlSFi`WUZ&%x$t#PqeBiN^R}ZYZl2gPPu7u}hbt8Xq zip7t1iyGvZ!+?=O&i0=pUp6TdYLMT0gNg#`^bc&m>#FsJL7hLSw*|DlMda{TLW?qo z*GSYqTWbXtq7F3Xc`7GR2P_gTfLYAXTvW$*TR61i!T54%~`oXtEvRd_+Bz8HOkUQYZN}VV^SpbA}kf3rE z6xbFy>IqrpC!{@ZZ_yw;3}%W2GZFd(hcLkXQ3aR`cGnqLJ~xgF{Le-W6QY9$1|Fj! z2O_vs@keuMwvQ8B0(0emnQJTzVW+M>>^J&nUm#Cm_+XVJjacXQl3>TB@Y;x^Ob#I3 z6PwcG5nG)X)4fHym<>eu>G1yqinct^&kb6DCj$1T;5eFHpe1k3ZvZ}4E=1%)eGL0c za-+?KV%{eWPj`S+-(~}1Mf|3!3>Epon`ntN z)qyT$32@e;YT7`*iGC7t)q6>S|1Z`K8i2*nc!F&Kzi|m@0RZa-3cM9+={~Luk%dd`NF=C*$TMOh8 zoK&VqV6#M|?+O!mHFCnP^Fo=+s5DYJ*_fVpXH-~C*OuJnMiU%5kq{8-l@EDg>!1gr z-~~?+=wk$DM9AV3ey1N`hWC;eF6@B_kX)KP#EEZOW8bt6EeL{=@F{PY93i&?EDred z--2^}3j_zG`pd%vblo(R6*Iutr_vfamrvkQ*z96pcBf8ep55c%9gjNP59$d$J9RDw zMJm8~T4j>Uevll{0iF1XrQyBRL&tAc=*ozD&bi7#wRfq%1)EXQ|0ouCf%vyr00})j z3sr07*jrMg4+A0P)qP-aK|nqPz|TrNp#_{SNH9UtySN62#A0yW$Zi7Y{Ja>w3(^44 z;n`xrAk~j__W(vkpaU!-L9o@CZwn+8V>cznFFtPEKV>6uRtQ%UZZnbx$QJ-e*E)$J z^Y=gO!=1LDXb{?ytEj=lIt?%Nxe`IWbeG3k1BeFiiRapa+$WSnh88gTh^Fu@@bwA**m-bBa+@s`C3il^{A;YE$vi6gOQYA(M~EK`{CL zQ?TatpR*)zq5kS>`|V9XXDx8E+<16cgPaf0D?D=5%5y6$mlViY5$?Tb8yR~`Cd=hT zGyVSKfxSPEn~q=nA6NXpw?Os^uJ{3Mr7hU^^&Pet4zf1T0-lJ$xkXD1-DoWsELKtZ zJ0t_}dQCY8UK3W5_MA9&N&}#GN+B+0)wfk;E*h+-i=ShRA6E^c694-Ozc`>XX0O=K zH{sTgMXw@>G!-@BGcDQS3fJ52bvZ@6gTk4m2OlQI9)nHqd8bZra?dYs5!jJD~+P=8^nU6R@c|3BWZ zdkE2uUnQcsk$Xua|1TPofYSC&NuI9rFO=A2wS@3kA*Zb-NwIiG8mBv7f%$|R3=P8! zhXK#EL1^e+Q#0x>VcAH^D~9>$p>V~RgXYcsLJ$>)f56lMACAQ|zc`Iq)0&VgT=#9$p&y&Ea=S4qF@viDG20yQa_9KNsd&%O4_}o%mK0 zL7LFLk+R(+zxco{2^6zFldw);w)Gwe4Q3yrL&n(3VQw% z)1GsRrR$z~nod?tz7lDP!7$lRJ~02XhCG+(WB^UMO8{hd5kPi}+=ndDF6bP9>BvJ@ z0G9|U1?fH-^!ASC<@TXz$J2Ohp z+=PE+izn)z=nj%3Nha$7$K)kl&uwux9k%RWy(xNr*k>!ziZXy#5Nr_yBB1{!iL7}V zUlO7AUOCsi1XJGM=jn|U0Q3haz92?0eI-EmxnExZhH;2#K3a%~dFCtsgL3^Eamd{N z#O=}sn*byLV%*A*&|(kF9;6b4I4{TlkPu4hS}R6Csn3?^TAsMNiN9_O&umLaa*f8d;rAN1t1gy1&^0$Q~w1UI>^4 zA3p_ravbY%2Eil!`Zt3BSvcrGN|nD6Eg>z9!jcl2xU!g9l{r_lTTPWrK?X6Y2S73w z8L&7092`aSLrDz`0V;=*f&~+3T@Zjc{#Se785LEwt!p0}Z86XSA|`BGVhNHZOCzQt zhXMp83kZlv7Rmw-iZqCzq&HuD#dZd+oL6n)93A{I;I}QAjca%9o(?fr2yxP+7~&m*)wtp>pxt5o_OF zou9?=m~YRFUJ@>j)%H=4e4XZO*+-#3@? zNUyEQpJ|bsld3jEtT(W&zyQzTkUpEWzN^j-SK*${(iciPJ9N*qeJG4fp7;9h>b<+j z-|(LEBmED7jBlk%Z`nqo8A#u&20^nf6D$bn40w~&@)Q}^`r!!la2p`tE5b+Vu$zSx z^s8-X@hczNHDbf&L)i2v8QcKdP_JZuCr4qcM7~^?DwL%zkEz0>}Rm>?kwf6to56wUSIlNK=%q#S5~6mxBum%K5PYk zDxCPQJN#wqe(>pdc4C+h0fNIZmVUr$Ms6!fY&a%J=$G$@p8MBM;P>bPn;mwU`rBAd z_O+cNKX>3y^u9)Ve^7{c>MXWpEcYb_w5FATC6 z{AWkw9xTH+b8yDKq{PSY$_bq0)6}E3zX87lR0BF(u7xAQCXClW@tknio9s-AiMt@N z?`)F`29Lqaqo58vJW_+-0ROz%lvI>I8+X@E8+p3d&ayH@nyUGJ@49>x1DsHsjMQxb zyKt0Kl)P_Z8MXOF=2&604SpgDE*f0biV^O!eEy@E7}Sx2`y+W797dkphm88>NI@1K zU+p*-V4otl4KB`&AeDw_{juJ!8XDqV{OiY2q-mMCzd!NZAAg9a>`x|O?LM@xlbre8 zs#ac&f?Rn}C%SGR>oqK_L%#n3l-ZDT4Ako24##OAieHT;@5u{va$e zT{Wa69ns+%fqZL>U>E0(8w(ua#}-=6_z4gy{uF!|U9mdb@ao;X*Z#!&62DiQDBWw( zuy3N+Kggvs!*z9ZaG5wp-1~cBhCrAdjm`oEm}Y_hsaVlXB&JpKnd+{0yNYGc?6s(( z^^!e+_NvB-*{vIXyV}h_zsR$m)+q5NGp}4myZgxz%wSeg*U{v-3-Az^J-loi&g;AaNvKT-3R6n?VUeW8drD>diM2q6fmt{1T zYQ0YLVE(MB#)7JM;8=qR;XrEe{I;a%+bVB_`Lt!bGzJg%41L~XnaWD2-fQ(&NDjrx z+M>wgE>w|_51BzdNqlseWaA%NgXGoar!cCF09wFA=@khX_gNS!Gc3gvopIKt9s91S z3C0#%_4F<5Zxtyk@%@#x_05D6HauM|Z99w>yWd9Wid{EL64$N{;3`1}XW-a9TrZyxe!PEQkXo@j-Fd~5t{f9DD zV~`vmPzueq69&?p3hnM9G|=={vHHJ$yeK62&zkMvH?wE%! zT?@az}Lc6+yCALedH0ZdMFuP_1y)tKHrth;}Zz zFHai5r6i7PNj(umEfK13Xa%imU$rb9E?^`HAiz9_cqg2&{w-z!S#1m`88a~ZvbkwmNUs0xYASIf^m(6t3he7v~+ zRc;Eyh8@eF@$V?vX%$zFDx)00tQ}3M6qGzQJeGL>xDOHf-+ggK(?@G#E3G3gmrmsRG0Z;OEG% zhVAnSgggz_eS`LCe`kE@@vV-3aHo@xju;IRAn9XcZ1}DGpXBLqf8(uw+VD|@n(4jOmkeNl zu-YE1iWoA|K&#Mo@tE$!&9EgYPWgd^m|}`UMaz zV7?q$x)>th+^Ubi^*L7i1<3rhc-k=Dvo|I)#bl3hYZ0EzBdqH5s1W{|y47=AnSu&7 zZh8-|KQ~n=i9vHCVBH4Iq^39bl!kgf8S}NwP4{*0v0n z`)iKJeJgG;+<#OE9E%-gykrnKxdR|0qIS1zSBv|~0f-kl=}z6BIiAyzjofmfX`r0w zPg(0mpxmc*Q2r4<(IyWPkqb3LBCXvp&8hF2(0X55<1*!R`inEvJ59-6SX@`1#*N$( zvYB0J;hlIt2QwekoDxKuyIzf6=EVGTqlatk9YK`Ini0cs6wvM>-p& zj)5t!aUx0C%M6cE3!k`%ELbp!jsCf0)zHsDEmpTJT21OaF%Ier0ImV`83V8;6(hJQ zl%K$jnxr=+t8J+v;+ipq|0(#fV3xsI==c19(b2I_V9u1M(k#roIE4>*NpB|KNbKt= zvmTw6y`Vpen)y;GLp|wroX2Ps1^5dwiFT@4Q1(lc+!wu>@hn0l!1v5|QS9AyaV$1k zHoPT%Y!KT61jH>&^gOANx`r+8n|D|?`Is{@`FAAR`2+vP6ruT#kG893#K2jKOy$Ye z=h47vK*T0tl1V+>Itpoq^}RE-b`AJqVAWk>G8}UlI+gUtF!?uG??SXdF2B^G_3}2_^Br*|cy)4Ii^ow+>9oBj3b#OB*a_H`s0mEV_ z4TES9YOH{m28;#SP{W#%)Y-V)d`kIw^a3bzE&+O70-+kDprC8{&}&29ps!~LSW(90 ziI_5@u>qDN&#pik^k7-w!6iT>p@Cl=8-t@sF_mAZx2l;YK9=ZK$_+#BoLtC6pu3^q zEJ`cuF-U5=1*ai-5N&>=e_caq$nZi*gAz|_T&7lhSUGzzM0XU9unHMgW3(}JKC+ZfsrEZipg z2X5*DPQMbN0Lj4HIgA%d)_bctY_}Iy96YK_s<~F=rxrf}nMm5};rTgJMRy;iFL@V-!WLrHRfxt# zMPy(Qf(owtH)G2XV074U6{kaJ zB+`OJFe^bmZrRO1;y}--0Y;Gtyrft=Id9 z^sR69!(hI(#Y3y{OaCN|1@XxEZP%HxiHOV*X32<`12Ta+N43J<_O2r%k6!*1br;wNlAu3Pim=m^xifHT0Qw5>B80a0rREuBjWf)XNjll2B@8lM%U=18;4VUI zb&^Lv57(>W2j_E~H!fg_B|dBjXIhOKE|DeCW!zpf^LcSs`?70W0?id ztSxaZ=1L$leQ8q)(qF92!aPm3zi|aYwhWor9pVDh_fjPE0nA)c((({^f#~Pe6e1+w z$hdr_>xHYths-11$wx!}exdeT#0-7U`0FI&YtK51y?c0haixAIH0uPt&K@y-%={&!91%MD*8s@=4TpvqN(sP{+yS4sWmoER7Uo}&?&Jzt-)T>&V=nb{SS&I{IyE0+abdn{y` zt-oYxSg-!*y?L1{aso*p;|Ut;Ah6u6omH}N$tgN|cW9}!b@S$J#`-Zog;kw`%sh+e zc(O5(b#lm< zje@~AwOg(#IR|rIR|mg5zdx`~wx`xN=b;IRtA8TL7}C!`WSky#;HmA7>}Q2HGc&y- z%;+4{1C9(*Gz#(!Q}*5=?yS9=f??hYwiSi11($0^U3!qorclzyfR!4^sg(mgC%yb( z!0Q<`<@7D+<9lo9frb?2nbWy&?yoRaB*~?HWkzWcb`iOKJM&Jo>7nybPTu)YIa=}7 z_;Et)U5EhialJK?8h=u`4mD;$I0Y~)5)T}xi0EmsTS=)F9zK`-%~vcU1Wv5%nI`HW z>ExfX`@En>r~&}Asn2Xdzx8oZSdc|!9rb!Qh+ILHK@4D9MK_MHs%1T9dkpMKP-Xna zKav(>Z8j*&c#PWD-nL=onxU$7D%kf_l=YeVq%4Hr>X&=iSy*8j=6ZKH%h50ho z$s2W1@Tz%s-l!_I-NMI*bX@Au92fnnd4CcQ(NM#Rp>&TulQ#K-$-ius79_oZNedZ9 zI+-5y)g^HrQ};F>}niN_mxyTnUS%=?Ub{i&+ydvd8eH(l9xCa-J@ zHTV3K0MIu*D7V=Vpf9<-Whmd~Qsg;_=&rS_#~QzXb`AzwChcZ_i;Q9F>t8ZlU!Wr| z4$7aMAd3=d2@foQx&~=3>b;8E7)Gfmw!i=L+kQDry965S8$>%JjF0;}Z^f>@K2v>i z5h+(4RD}rC<7mx__bMP)l_J=U&_-n9vgD#rvoGB|;U=L7=)#bXLnm zCu?LLsUeHd7@%J3px5HAoY_J=*A=LN)8^R_;Zli9`BObzGqxo|ZJ$p&zK)L`*Yb`sH zS{f@{9PIeOr4Knfjs_U`qo}gkU!@!W;MKUsVlptZf&)?X4FU;keW|@HqmPEA&rs=X zX)(0v+gPlzT~_P#{hM{;7u!x7?wv1HTC1Uua1U?Pugl+i!($ziYd`ao;RQt>-|8j( z1Z%}V80mCot#)6^AJ)oRik%SzhmCtmteYFjGn1w6^DkWH(Bv`OA&)aG{(1yR@)U<9OOC7Ykpe^8Ic zM73D^&NiW!-pa5O$1Ncnq(`W3YT?t=6!6|mv*W~Azh~f%D5F4)<7zl&LsPfICF|?Y z7rlzoFIlQ?t%M4n!w0MdOsV&Km?C>I>>>6%*4`=lV=GZ@=7e`tYjOzhoff*Lan}u`>fr{H#(Z}dT9N<>PR7@Y_H_(iA~+n z&u&BtWaz=GC{>JV<;&1p89OTf8;$G??l#wCAD%i}-?e*egv8xGY3kI@aHkC-c91xy9MN#iG`vCP1Z%-e2+!!-y zKmHh$)gM!j0Z`1eU9=*g06~f@4rk6muiVL+o&g9CY^Xt@&QFbjGR9YZtyT9gE&^LA z9JGUBsa0n^esHcn6(N~s*oj{EEx6_06jwrZGMI2WJzu_Y2yPmEoWR!O@=|S3x4)_U zzKpsAznp6WM#-)}deR`?m%r2?Di~ZJA4%x)WO|O`)h6G>AFoKKU>{qx-*}UoJ{)*& zIH6lFi&nP3Qw0BphQA@K<}l(Lk-mZT2Husak1sl|tqO#m6WI1T4fr}1ZB#GN^IGFP zz)$59x&5U?_ht$J)0JNxU|9iG&(z`eZk^N5ss*$8dp9;N^_I|NLjl>-`=9_&cfM)1 zP(IKiS68D=fV-LFFG(mJ)fp z^T#!e!ca|HjOPiS=C49=?<1>d76<%fIeE)R>-1gu%SEIeTNf4AhK|7BVBSJLyTf3? ze09=Orbf4e$$_<$wfOi^B~>ejqej>vNVn!#9&pFs3b$eNVr+`J**dKa)$3#6K8>Hc z%w0R9Xer)u(9x@iw^c2)PuLT0d~;!Q_cK!pgBq=FdPKiVUavGnT%=QM{LU4kbuj*{ zCA;3b__ewE@QpL9p-~miq_vXHeRlo#$iDiQDqC~Z8mx2;a~!jWiYX@NNkQwKyw0r= z;_ccG;)KppPK1_T6M!Lb%Ug2l*A9rq^~9E^F(aI*{FW0&UXf}n)kmlz+61*3I+dDu zKb39O;=r8gNL7+i!(wD};+)S-PluUj{UY{R&6on;K8o^g%LvDGFh&>y?Srhd4zera z^Es7At=w=;U4_DqWo1@>9Ot5~)|_6}IJoHXs2ZZYHQyPt^o8gwy|=yYA3d68VlPMp z;XhRn4$H5M^KJ~QYlThDJjmwboh;Am&QvH?T23mZ9G9{up;fwkX*2_{9uBWPM+~%0 zgh|Johm3sB!qoRh>$Q{`JiHNNbt?GuQL3XmE9!h-iUp)503uYU>ED!`#^AsxMyE{J|+SLD>>t9@lA zCyBbs_*DNIxSZb-EKc74g2=c|I2j$^>Zfp+RL!fXC=3C40Qki1*0uQM-zwNfEaFGM z;f`w2#geU6}FZ%0&Ud>|Y&5zX})_H`_I2>AY-mYJSYc!8u!LK}df z^of#h6Az2clg2}m=NS_Tn zJ0&m~l>tEdOpK<<>Ym9Un4h~NEOZ9AV>#c(Orh2$KKVjoijhVXz!vqah{oss8H8Mpgl z3d3s`>Ekk$(oVNE6*R-Dd+S{c_7Yp8+ zIw3Y(T2c;{`53jqh0;w6*OQFNt#V_^Lj*!IRZ7>I8Aklu7` zbVzJBE=k5Kc#9-9&z-1AX}+Cml?#0~@zX)Kj92l$f!x%$+NHVW8VJP#7sDHhKYWw8ens6j5?OpGo*i|(MLv3Cve^W#*mj*yNZ7qF-pvT!qHRClfs-ZLhuh}Fd(Q{Pd9 zqWYhF#Nnpv83aodsk%q(xy}0fM4*O6=BGo=*nZdS+;lFJr9*EMGVTOxpn*(F$o-lQ zt1U)8DVm{jWnk1e3aw$k)vVFOCKB<2tE0^kmlmxW^(IZ61e`uaVydGv@oHEZw9=_- z@x!i1qXFJdRFMV=x$a-c&TyF{BAgS|F)`x$K>mGgKa>M2#K^*o_mE0hY?(oKW228d zb0hBVedC~+Y0y!VV70x^ld&)RUjg7g6gz9hsehxxz5?}{klM5Bw?8p^6BRSzq~725 zE#wCv(Qr#APqJ`$c4f*-+;hP(CcI4xoJl?%=18ef_)=WDU(^ylJv?38VSB46-48#q zeG^TJSYnbpC)taTdYxUTiiFi0dD9XFKm-K7PWi)-?c{xIdGGRm4aNM|$Imv#-YHK3 zrep?Np%m;;Y!&iSY32`+7%78<+|-n!yQy+^KP_I7n}y$gW79|#&k;9HU>S(zSvaon z;8xSIyMce`J9?RCc|WeUZ7sq2)`$2z_}}OWkFX-&gwUl%EhADF)#9*3WwRBuxKuCq zzF@?&q=NWt(sjG1JmpiZ_GxJN-IHo7$%8_2>G3}4Fy}1Jp z=DJZI7q{1W2o&@JpOgCf;~1z~+m2kirs=!oh3*N@k9$D-pl8#WJK@|el4X}ENnHTYFQ%=BU8WjV@Yt09t zi2MAq>S~?;v=?hIzLPVggPG@FH|<3}^|x{cnQ%R|A-FD>_HwuHMPlCjfw>pTK0EI! zI1pi2jTsw0JeHvaFSvY0SWhNI*Ke^q85Wmiuh%8}WsI2RQczP#4xR_2F6$x#@)w>I znKi%75)2$dGO*SyNgFXEP;#zZHArn|-L~#zt&i&W3Jd5V1lDh|lSQ(5S%KxZYgc`S zZ)45<&p`z-C}9FzC8hU)NZ-Yv-G&(D8nM}=g_$|FEW>S8v^gyE`a6Sk*Hg`+1Eb$e z2!8rHlqbr|@D@m^38F9Gvg9hdGAf~0wq!lj-wIXb89bAPoZ?SNhY+|4q^(sEfr zS~OceKGKTbvSr;#TV^rX6eHR8_B0b?}1mSE}#2pKmHp-Co6!H1z{sUN?Y(|3)`$p zAo*PmM_!m}#(FCFEYj?FX2P#`%LJzjvymzNC}`=K`NrqPr@scL?##zSE68^@^!oPh zckiZor!UTZfZh1quiS9IZRu_!Z|!OW|8_};Nl1x^Ns5R|VZ>$RC8gx0WY397%ZrKW lEZ88F&wm}@j{ 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�!5CWI$KLv`KK)$rE<%fa zuXB)fjCXoPUteDbE(f!xL*YE&}(2w_@r;>HQ~;EmI#u z^c?_X&f|z`lxR?SSs7rrgq?#H&*T6X3t9O#aPRR(<;v-o4IWj*`#%654dJwumv1UA z=IxZ0GpJFIHpEyYmgK<&KR4~$K_d4FCd8%9y`RW|`=? zhtdLxq9%}^0V70&_3rYIzbtDh-UzbfYW@V%Jf{*nE-@zLZ$C*npl0tT$SCH~qLM41 z)aq#2WKE`cgqoo(*aMfouZhoJ(X6pXYa7=qm>N$eBQb$x^F_nnW!v+3%>}th!tfTf zqVI_t!T!=0>)2PA&*0}~O-ojFhFHa6@ML&yxOGAYWJ#ZA^fY5b>L1sRcN_~So4-Zz zcAHhTbMtSv^*x-n)-xgSyK%|6mGF{nMKg$rH($!t&GJ~3K!-wHvHl*3ddecyLCI1@HA zXfBmB;3RlFCvYw%FS33-1lc@@JSY}@2lcd0LQn1M%Xpj{C<*RZ-6|2d)Ba$yoqE(v zaWG4i%=NcIV9(hykLwztrfZDr^5bj%!5DxN9#>I-E;jR|uhQiImEl&=YR@?2)T1Lj zumuIJ?>P2J+f{7AoQ7JtkYGm`}*?CiCy9^wA~1wZ(bU{ zalE;(0757nOQZ_6s!a1Bt6t#k06o$akSV(Y8>y0bVF@xzslJ=;RECylSa z@)~_jeQ}##)uhu}9WIhnIMk|~=k2-Bde>AqT{fCjF0Ht$2)f0`Y4>iomR7_+c(bz5|M+IJnh%C#WU=Z9q1^|4dw}k(+qSXf zpPN{im$F{CI~0V=^+={U*?vO2p+*T=`;s!R(-tHNmTboWk!Ixf@ne_thp1{H&E3(Z z)yqvC$_6zqS_uk5MzEl@XYI*ULsz33$ut20`iku9Bz@@~!C8T>w++A&0|C{PBm|H6L)q~{w4?!fZ;uocpq1JfO9(;+VeM4afqT{~?YLY7Af6r}D!eu#M+(6`Ex@vvLg z7TUA1FqaR{e}kPPL~eUr1PlAQScYNp)9kLNdbFk{cg{Kdpr}2V0Ly`#$G^r%c2ae? zmEd(ixgB#-LMzT?Hf}6zfnr6fY+%tJL6-tBVOC)lZT>;Jv5{fYc{QO6!Wr9Wnk||6 z$={OqnEpFL?&dH52`KuR^W@2Mq~V&-#tkMVDWAvVS7>GddJiQC^fIcq?21o1`Aa`L zQPGRoXsf z#u`>$@?|qN0TBQNJ&5N=nwC_o6N2U_@2*lB?(oUF2D)tQT#Fy~h`hJhQ##%}JXv zW`C?uq+mDU2PslPCv&@pySFFWL*hKMx$^PELobozeXLR~u$N}_%4eK3l~Aqj&L8Yy z<0aXkleV)1rgCcgPNJ3*r`np=po2}qUyoKibZ#?R4-7PGTL;d&CkUx>5<)Si_B?_Y zJ}dp!kk{7Cr+Z)Vp?A$KYek=b#KZCLHvVsM{1%E49+1a}dcSF6S~TV=%2OZCSFCJ* z%%U3G>xc!W*u@=^zA)$dIVCkLsUq1}U3aPP3mf6nGr6a=#6&bX8RxGT zZW;bhtp8=lQ&0SkEX2g>veglz?QhI#=T?$tw|%3?8zJ7;9c1B*LDWYU|Nn;#c>Z_> z`18Np!N*Er9(0WI9CoKW<13L;g^Dd6G}%z^g{@XZIz5BqVx{S-|MGSwA?JdR^$k=M z>4N|4v8yfk7tk+BxUS%;&$DupsDMjp6~W6m6SP72Y~bqo`dTq3;NAzh$$M_Pf7aH? zqHYTsuqb>Q6tL}Y`U1aVE%QRHZ}9INRimA@$P4=!n2h!9^2QdLf~qZ4aH^c7`SpbI zidREa0)ot7e?YUbh)?c}3#L|uQD!gp`b+&b;_-03CnDKtWbQs}DFe$1NZ`JKjIYO9 zoto-+3~A&LiXBka(eyHTVIPBB5x?ADD|WSfv5Q7Q&6GBPrnj7A{q->U6t?JWEAOp3 ztM@vP>}FRK+>DI)(Rdx~RYZj3_kTU`&UJ$HB=55N^Gohu#_B&lGujq3W@csQKObA% zO!=22i5sDc9`4P}$Q1tTTzpA!On)cB37TX;;4V0oMcKt=FXY0Ujb$lPuWt_gJP;Nx{w4qVaxa<=Yo$f|IsBt?jE z^VWA;kjpWL_xrI8S|w287;%Ko*}$F4uLuN}lGUwz7w`4hAw>mF*-DNx)E7c(nBwp< zROhYtfKb@e-NMMee%(#4xW~mLA_;@(8)!K=zocdC>-j?VJglAXzb1d{y$%Lf*S{3W_TWp15st8C%9#?vr8~8-uEPUzrCr&=jQS0yW9mb7gcFmSKMSe?*w`>Bbn*)kuoFJVub`cB zbf=iL*05L@jt?TDxIa(R@tpEBuBk~_8rK>xJKdz_&%z)WPI1e)oFm-g7;mQr+?P2E z-WT7z=lYcaGJ^EBGfLyLjx-yNL77;#R-_FY2FN*G!d}nSk=q}d!_Byu@d zfGCGU`Ou;kHxt$Vg$29Z0sAt|s#w=8DrXJW2^Lkvz*#H58ScCWTNO6rY6P=5ho%J) zT(qcPZjc$3tG}jQ!6|2nqq*n5wdK8%FJIk`vpGfNN?!_0ZyXJeiSV-$Yke$^{_99S3l9PsUAL%-@`q!&Ssl$TZpOs(6a^>y zq2d(*x-OBJyFo1K-9EFr80hP!78ZAU>d$>jVHA#ST!|)kHIAD1Q&5ko= zwgiTmcl99c?{SOW@5Myq&7zUdf5|zPVD|#KS@FTkf8KneLHQG8h>@8E_?w?18V)hZ zLJ4&)_ugoTT4`dhr2EE|OfYrwT&KuJ>t%PBe0TYL9skS9E}Mz9ukOW^R&YvKtgJ-~ z%_x+vu1Ma%CxnaIPq{z4SQQS}etQMeMeDb%AN=}?@8r6w#i7#UP!1=FhVx8*H*vo$ zr-%XC6>=Pxfh9O+F=apUy~16EujA8Rh*cnR@e=O2II~b?)|JATBGtE&vd1$~((~)7 z$S|e;BQrmJ{yMu)ZPm}obmhTo1RR0{@7KusQ21GKRUjdcpR%5$NK39 z&s_mu&-2opHLAlI6~-@fH-{T)(=rWaco}c$TW2h8UA4RApkeRn0DtivQ#z(BuXJ4g zsG8Z)6B@^kX(*{9l+-kolrE6sUjEwwZXQ>iuKEAp56~G>JjfdmgEJRS=bgHI_kRG% CxO;p6 literal 198102 zcmd431ys~)_cqMYgF%Sr91tW8P#Q!KX%!`g?kKtQ^? zJBJ$L-SZsldDr^C>wCYozO}wty3m>54EOJjy{~;;*Pa)O@{*)P)IWgHnToIE@?L+uRSzx!7h>F`zAtk~A<(k%$H#(} z{MOxBDO;@IO6$yNY4@o}jl{F~JNfsqc=l+&^=QAR+()e7^R0+g@*gh{ysusF39=TZ zeA)eXfau!$){{r1KVKt=o6G0hue|c_d;KV)#0o|W23LN){x;^YVsz$Xz4AiNe58iH z+x>DyC(ix-w#A7LK3pV{Ovhl2emrQl4bSdjD21oJ4c^(xMG@VjJn=>>R&U0R-c>j` zy|&F4_v1>KP;FsNx;+fjLF=Ni=?6@bqBD2J!vPZ!ssPTMvj;TNVu@b+48(^+Z|1)_ z*;e|B{qggyh8*YA{SHIYj`UY|^81n;$7Vmyw_Pnpa95}@3sSlqYPOFccuX0BiZDkE zvHA3RH{b<0w7coaN`iDDW#HB|IJUFx_{`dcF6G|CC z9e$`FEf#aIdlchkoBQF{2N1BE8AZ4t?tYzpg~vhFtN=9EfF23vS~L- znB-S=t21KL$4Zp;Ku3)%y|SM+_2&Qx-o}?dbd=DC!9G7cnw*MqtcxWsYQR|5+;=kK zuK3~*nc}$d;zlF!?V}a3!?lp;8FkuX zmGjZOJXz|xI`g;LI|SKalE@g&N+78#D*sz>e=Bn8ptHiWZH;wlIQ~#)-IX-FvgHu< zIxO5nE@9ZFv-6&Al9gu79iexkR>Jvw`bj^AX}IKlxRG?^qo$X(d%0P|Pn7BZhdiL=Af8zA*N48L zKjd;VnmvlrxVUE!e#jubZN@;l9w6eA#`L5u{Z8A-nR8xuni#Wx4RrM^Zv*k&Bb{)z zIWZNK%P^Ui)Ua zTbHilY~*jlqUWQOW)&-uHTO}C97y&yLad&1#2esW=m`p3nO>W?QgTdKcfW8$n_UkU&C2Uq7t9M-lg zHGNX5t}ueFqH$jyL4TcmP;W*3`(3}^nv@k{9b#*6){~Qy>#7t8Pn(`LJ@0qXC(yw3 z)vi>ccs1_94l#>!hnj_%OMNV1k^{vEzy6A;HBGaaMbyYlbbehK3dcl#PmTzgUL%uN zK}JKgl!vsU*Yoc1c(#4Mab#_;_~_=(2qgR^#^u3CLG{B=W#waEBqEzk`jFOI9yt`^ z@0UE!VCP?Tl3I*bpi$>jhvkMvNyNvVj=7iJA9zSBIYG$9IQ-QxLf~EjEAlh?>=M)2 zA=P9NdeDmy-VDC7QG^ia~56LKX!&(F%T;3uo&ZWjj=L z-pXx>c&Kd4FbAlaV8WkNrk4(3Z5vuTN(bVMd2wphIzJBHK;S~ffS~N=uBU_Ec9^Jt zv${-Dgm)H_ZH<{*PGx&#WTeyU?|}Pi6Q$_Y>w_f)YL{B6sLO_eR!;pp5(1Y{Nu$H& zuKpe7_*zpB+Sct= zq8A8OS-GMf(PUCWIB-rxY^(0Ipuu9!eqv>!ie#F&O=~erC%tm3kce9OGocAq`1iC! z#&BjaYF_~nQ-)@k<6jucUb^fdf^MM{>RKy0Q+?RK!0N4%gM3w*P@x*o{V~BsZND^Y z)bRu93VOnft}w8ak;RKCceI0MWX7~XcTF@RMKU#VCSzHl!Jby&m3(zv*<5=WBT|AV zXm>{cNS0cdlaFR$#BSS!#iw$wTteKkEN${HlzouK-d!!~cNd)*Li@GnhpfI&^rI5i z=%xVYI&u-}uF<*=*(TMPMYR!>Xq`b|Q@;)BXz0+LzpT_TmL0uvH_1eWB*eo?M;zp>k=7Qp_-g9ZlBKK&)m9>qUkURR> zA`W`e#$1v05)+=7*M3)O5_|W8vp$q2sC3pWR2$L^x6c$`(9sScDsTKYr3q~DtYD}uRc}J=*g!GgBx2B7`C91SBT*4+Z4lW&L`4w;rEl= z7#QP{+d?}>y?Q4D+KE@BRjl?$1(15wW$EKBtmfa3@1uH&l^6PiNyOPW%Ar8Y8&X4d zE@(}5Ru5;~F_u1g)s_igr(TZRx$h#@xa6a#V&dV|^nk1dcq8N_Me=!%05Ff>VSk;k-_| z4!WqND)O6`oxR6>3)4}%&I8^HxdZN|hvoi%J-3typbunqU{2Y5s2x`OSIJSao?d-r z1SUqKTvvTv)jGGJkCT$br>Vf!;ACi@0Yg!4p}|cId&m zX3U*w)@u{_b?GN8c!jjFpIdYr@UQrBkuD61C8%VHq?I1n%nP+?sNKLH8GWA(XWui= zI`?GJf|uy1Yj~>`?N561zv-^dRik_&w3LlKZ})uYYvjxOde_SH&>wT3Xm6LQH;!M| z;IZ_`$aUB0>3Y9%V)M=pVTou*HszVBH;x#Qs}`l57`BX3!?^w@HuIhZMGnIQ_bk6w zdert$5k{0wcs-2BNbfCDevqUQQ{KJ0emlr7LhK@iJmPo}KieQg`=*VBG&|`rF{uy4 z%Bxk|McecH>pN!cpOC{CT)xMGlR=)1&i7Mu>wsc~T#fyl2FWws@_Es=+|}fV)p0u4 ztwPcv-z4BN9c9iO=x|1>RcPQ3%)D^7*1*{cQstt)s?CS!qQ@vqoxzGqesSjZ8-6F- z`VO+0&?uH5ZxIHEsG8_S8)e1F@^Gbz5E^s<$&yDYK3ElS)${HQzv0o~f%8fusy&%GE&6W3Q1?mcCyng$MLv_w`=J=X2JSMbn>?U4Zd$phkcc`mmL^WAl9{{rS3QH zr(nZpUQsu^{8GpcGrQQenBuUz_VHbRqJ_$&;@vG|X}DQ<G}VR3W~uW0^bc_xO*6blpJ*~YZBGq#mEx;R{G)SZ5IOCbD#gk4 z_UfBu{t8Oc+{%RWq<-zS7U$*s1XB~{h59rol!J8Xl_oXshLelXsx7lQ0rx;A|6h}TPYSlvFmgdX&>nNwqM4}+s?n3&GUBv)faH|iwvf>q^OnWdZMn(=qF zX|5{qD*4;vP=_AJ1>ujv9lTxkS>iD=8|R0=O#S6c=J%i6L&1l#V%DzF(BC{!WH-P% zG!XyXYccRzWFylq2PS7oeabe3NxbL0#bo1i7%Vn%HjY>@BHqUUz5J@QCVZ!s0e#r4`PgRQ*$yT2Zi+f(LOOGRsXhRvMhW zo9V^yfm3$VT{yIU`E}d$k2m0aA0ly)m@tFQE4{(@TM>G=^qr|(w#)fnPYPZhN+K1S zSW-Sri@^EvuKPV`9v298DAjC%v&4(US-PAWTd-Tx z&vUKx%DMiA56Gt4xj6>5h-jN(j#e<7q`J|2XWVvgwch49(iVA;x6s&c!-5pa z>}|ScVJaF}xaFE3XBVxIzCJx^tHk#b2^N|2Ehm}^A1rNghC=8G zSLKVh+tOA?k*O5gRL<|>#0CwvcJ#R1jBl9bn^YH$$GM?yM{*adZ`p9&yn&1%S|nCY z=JNy%M$XnNu+EJHw)d5Q>VS}_=5t&!U`v0y}Iy8E8)Tr2bo+wZbM~3 z#C+3gWz0u;UhEQKQuugMcV(TvVM0wrcW>|OW37L7{9(2<#7$pLybdZC^BWsp@Hm&xJBZL z?D;35s$TV9j{lM1Rj)qsLX-l-nT=brP3Ov_5Gi$MGTkxMJj~o@_106Je-*)d*_Z6u z)Idoo&wUO3V?DjS?vx*J>E}-l9X+tY^?xb-K9i69uXdm}iv^C}8)MX5$3%FFC9{&NkL%3Ni5j!0Cy4}#4-O|bG5 z!zrurt!ItfmT@ZW);v>IYZm(p_Jmu64|uJo(~xngs|n<8?jNMW$du+h<_7uf_G*?c z{2jy$z%E4eP%71jUJa7oVpk3Xn_X>BYFyLn^|JN(o1Fy~^^2YbDsy7#)eB3SPCELR zn;=?H3sNahKD_H^k%ddJjgd1oSyq6GWoX4I-(v(ec794nXil~Il+m87^sr)i3F|qt zmAAcCEP#eSm_2nE>TjK zGjK-CS_%;&Ju#IV7n`5*fi2uJzWIQf6ouAf9YiC!TtAADqBo>60o{d9+!Q=m=!o1E z2}A}2R8y;rKe(?lv%e@foIZ$+FYGA{aJEU>mgkti;c2_Jkg~6^+tu5f^)Y(*S-r7A zFsh(HY5663yzCyJSU$id$2^YlAY-iheWtVd?aVi&R2w!Lb|<`bRA<8EDQqb$Yp#D3 z6S7aU8KB-7dX(Y)I=g&P)P+4GdAlmGZO}wr^j+HS+YZit03RxO3+jIRddzRR-rVAT zb3Zw&Wg>y-&tt5S2usppRyR@9mk-bT`v)dBc3G3>J{q}{1&&XSpS@PB!xNV#dz*&@ z<@S`H96-r8-`!ntCe-d#<)gN~ns^!`Lx}*d>0B|s5?8Sx(qYkdWBq|A3esb@YzBT5 zdGlPbEqrwdo%eIZGkv_Ylb>FMbf?>+2BGbMa<2Db1fLzvr5y*wV)syR^ zj<~i%Vy{?Sv5EI6d zZ75K+V}=iVn0iWFbYM;#G7^}IvdRVS&AiS)t$l3onXXljR^%-fE6%9=+kJRh38!Fn zr08&k&hAiNnobPOdHT#E@t1z9h8i2I$@%B|qDR>{Vo^HPZJ{BASFAGRgHp5ph(q?= zUK#Y&(F_aLVki=ts{j$GiO_p;X7yTK3p#XDt-G)ExVq_N4CE>%F2+bq%=R%8i~$rE zF@7ijtJGXCn-W}1V)aXG#%1q!=;t?&B8XNZ_f4@I=@wk4M7(;5FY(vvUg$S>y=}U_ zx?k9mnZDSgPdEo~QP9i3s{9V6AYE9CN%iQ);mgiJRou_$v}Ck8{zf?|op%-Y2R42- z%tQ-z1rY-Yn->d*Rhin#mHVU;#KTz;Q7m<08-7K4fp<;kW{#Uhja+fJ#~#QZT-a6U z&Qu_&{U*uanFis0-Po-UX``i}wYR@FQ@EAm?S;g2Ra-x-7%WUD+E*XwaasMumS460 zEbZzfY5Ks0{Pmry;fM0!2FihHn4<}Xqn$W+{w<{kBPCsKpU}tXszvvtyx*55Iz$SU z7yR84emVVfF|%J%?ACG>m7w}cQBM9Up~gQm3<>sS-|J;VG~mx{34=jqvwo#H+Xl4l zK-#5*uKss@Gpo#+OYu4i<*~72xK-bef3O@_R_hcT2)l9|?9YfDQA&$R?U6~3$goQ9 z*>25Xr1!S_rjA(VFpNM&Pvk4p`L_EO`BJ$o$aH{}K@NB7W!NTzLN{cB0oMHZE>q=ox9*n$k`G=B=BF*Xc=r zz148w8j1LnLpk6k^>W=PBdU;10qaujy-(ITc;@Ayo<>kmoJYagfFCFLkxl)|23nQV zrb)3tmlOWcu(FZwd4^+Po3=DZL0f(KRqsal$isypU28L_59O6alk8NG1BxpfKR$uL zHMH*mpeG7fXi zwy_u&{^QJ#3kV)HkF`jZ+odI2<+%f2XMLZ0FV#JX_UG#aRHVw2S}YYKitg5qlGm8X ze`GQOg10tz6Qdeirk7v+&RK4?jmpiG$DI0&A6+#6wV(t9|MOlT_&?L1mw*4=sek=k za@cHb|9|;)uI9=N84=Y{Lxl$+fS#bV)>!HIbVK|XkNe03IF^V#ZncBSmz`@x!5kvX zy_Cl7U#FM2?5`vTCpoK%==&@=ODm6|p9o&sXsxffPa_xweAw3d=dFveVEc<+p4M0ISJ*O113`n!+*AHx{|&8**1PWNEas^s7k>to04t2M<-OKzJj zvmILE$tTikF-BZsE`UnN-Vwq{5nlD(?<lLe}Pzy+2dxyv~tyQM*#bHXsRD1 z7c`Ig#?`?axyPM87!*$(B;j1$nZEkr?VyFmKV?^)_V_cIq_!6_6M!=bFC0j6mO8=xZb&YV&KDH_&BU3ezy{W7zGdWOP`6=%v?qZOSNS6(|*+U3Zr zO#zrWUw_~TfjF7>uG9&u4ZC+*cg|LNxfs2fX(13iVS{95FKW;&4H^?S!q*F5#-2kB z#nh}`)?ZqdWFa|ZheTsz)cZ#I0lcY~(pB6{o7_$F6iuS74>NM@D*bS9J6%+YgXmtg z2OZoMjD!_ykMJX@KHORm^qMc0?dUA`5xffI5I`-Cdizdfib9l0L%(qs&O!HY$6rCf zP<-%wnexRst2GwS3pr~#6X9w5xmA}WXQE4%?9kR`yi}2An=RM8EAlGMkLv6K*H_lr zR*NY!TxjPNz1dfmeAx3_%riSLocBxqlKdrmsad~Sz4-;T2)){TM+8s<38HS=`0940 zSH_k`lq!mvF{$+`x-Ofxb!G$Qrcu<`GA?jSuRMT$gH>FvBcf!WUDeI9`5?YBMr9^& zxI8uk1?c@V@dT@vLH1@6qgGUU8#>h?Q!ge%>-4DEX3^mv+>J8m@Ajz(Q=QWI}RWIyu`f3Q?g z#oDZ6ETb;MX^o+-Vr^>lo>VKz>lTxEdJ$Q&s8ob0?A- zHl*<^n#Ws>@G90X0>sMf9lR91l#1(~4oWzZj&Bjy)y@+k=lvtuxFz#nW=}lyS1;oJ zlvCI@r~TB)V4Dpi_$qi($6XCLD4e#P$n<5}}>6 zHvN&^TP0%RW~528L=j@Us!`l3iND8W41LGMt$dMGg$6>xbU>L8^0V6V-n#g^7LE|w zJo@`(t7=9y)awH&4*U*8CI0k?qrC&~zOw3M_aO*hzAqYiQX4`KhW5E@#*Q1M`*%c^ z3I<>9ah}@7RdYK>dG!o@<|fgKf_)dBaV4{}%F3Q;36U=jOypArlI){97=EYK9N=71iO&^b-zfhQXPbCpNkCqR*t?KE>6`ZQ1Sob!bs_a^3$HU+ke|C2 z@~iW3*S9Hr*z{4%i*A{cP*L$YnB4VF!mx(E1f61Cwmr_QqmbNFP*dw196YFu56@ws z;$;J2;qmqfRo3VSRDOaXPOR?i*vjyHuvxBcn(Cj{D7GNe;fo`j))QeZ!qG+i|9q#e)wGL%t+= ziB&F&+^2Z~H?7x)D2}i=^&4gz8?QeH*OLqUt+b!}&hLRSbQ_h#DM`6mjZZoX2SX%&Q|{%%oF#BQ6} zo>l3*r7PcY3`1zweaPvod{SE?I`E2cM9?Wx7&TB_Vksd+mS_LM{@0$ zR?Z^@=_95&A5#XONGegvpPSZo5})xqGf^hdGkG)Qu2&QtFR)6duOJH9t-M7w>xa5G z{PLcSIsQZ$k0j&s>oPxVpNQ6@7bVx{C0n!{xBJZJWG}VXOM~cv)i+R<_YQHufFc zdOI0!_B9i4{WzJ5{7jX2tyc%z}gDJ>5b{Sh34@+0?)#wLe-=^yFKdU`|K~Lh z_59Ey|BD;x;NDPviYmRHcg!1QQ${Xk_{BOKx$tAO1O(RUbaVlNd7a1xwZpCbzKZM0 zV?rxo2aRe+_TnGF-N5qm(nq<4ss61?ho6Y=9#=r1dPt^PsbX(hnQzjG7r3A{pOWL= ztF7r*>+G4&f>=d)xJC$Ki*V<}l@`X$k76}%3NSB4_FpB2>F?B2;-6Su4f*NFdjygO z+dUQjD$8%9D$4Vu;-8;fFY#=jyX=>9HGMKk53A?Gw;nj}tUh$)&jM#oe{+APuhnX~ ztAOh>FCSm}m$5HVn;)PwqTcOz4$x)ryoPs@0Td;W`O79<7sguN%|CZi_2!S0-SzT@ zCn-d!@{k(@hLQpFA=$c|Y(AF_Rx-Zd>U;45NAWhyyYRG6ZBw-^c{Ay4Pbd?oSERP8d!P$|6?E?iDOY+d z@`s$90?IWr3u?T~>8o)RkhMl6mU@w=-U=V7cspad^qdc9Nc{qk0SGKVX^0QwiKt4@Xu6HM|cw-OQq>h9StC4u0}z(6mS zyzWo3i=HI)(Am$(N+$Een+fXd0;n5Q%bb&8a>LUekB~8YaG=);)|kYVko{^PX#l$q z6eUQb&a}&lJ!`u?7q_G1d1}u?`~f-g4o)0csC-6?MJ{7JNjax4onhggKla2%1p;ez zY$TMhTj4$Rc{1jY>LrgV4-jOT=`r&&15a$ItFL7TKc!n3xHg}EJAf{v`3P6{TAAUj z(|7Kxch_YyK4mLyy8~l|b;i1+5P8IU3@ z#lGp6ER`3{M3l#dEmT+%mp1Uq{cBy4RzA$&pETOJ<*M{Wb0_-(z^j2NG&L*#j4u^P1PxO|j7!AL zu&l4*6}lHH6qz3BUMb{{g`L6qWo3iSlbO8-d#8OcNOx+#H9_PmE||kAM2*7oTn#I; z{f%T?$2MSBC1aJ;f3r^*BhZYzu=-HA;h~LJxHdV-A3_Nw1InO=^`ZN+B_ZcEnOSV^ znODa>cP3&u)ih{g2~*BG!p63vs~Ba{RjKuT!@iwzd61sfy6GJi-__%6+Ox)=yP}C| zRYrJCtM&bvbS4{|FO58a_(naR7HYFY(U0GZ0VC(&h^jBvy#~qX)yRy-3YQ1vQW@_Y z;mf7g5{+zGe=agMB`dKl-9yu`fa57s}UWM!O`XMVL*n! zlmdF3s>r*~RiEvrMO!X-N!-s}VJo`;r39D}Z(dpU>-ijTVlI_TG`y>DopJ><6!UE1 z^gARHt$z7^r`4yop$1i9rqV99uHw!cY>wX>p7UUyi3U8k>8fh;xYU23VBmS%17-)_ zOFhnf;pfASq%rP3L+DYMeec(X2CCJg1b0a{^wMw~*qFJlk!(3I9K8;xHmiRo z;`)@0PTp{Lzj1>#4?6hx;$6HhGdEVuKk4-JV(JHvR^Hek#1TvG;}KGG;CuqA7fGx8 z?ca%mriSp@U;TL1T6R+EuAh-Bf3<97VWtg54LdXJ=j7wbji>&MyJ&x9Ol^>#4}D-* zS>e-`I~g;Xf+3@6qc-pA>{RV?+$t*t(;yjIh7C4t$Co6D>_p>U=YJ>E(4#LbIg7Dw zO9pj~#lE3y6z%ttsf8Dxpb>{jQe&At$oSyez!~y{4r|{0%7Y9G^@C+7BBAaBB!)0p zyYoCf`z{l}wvSr4cmRyf}-99JDf(x*RP*?kYHXAUZ*6G6cJuv7wMXT~tm@vFV7cCg2fEv*Szv_pwkFT4Qu>1m3;gn zcvNx0x&QJ}YGy6NU;Ys#kAi&p%|o0>m?jj?QqKx$I|L)@or6ay^(hdOAY!MB$uw=o z%nP@(KxyoSbioj33qHj?oxjy#H>WRpx;(#{h)#wvjmO7B`)MgAZN3bPe`XUP_u#Eqcz8UtA3g6GaQ1 z%q!AOL&^rDvt&*)Y~6W2Skjm57=4=QN$Uv{DnB?z0G{%M4R$gVQGdq9={N~^Cs9%b zQ%?JTi+?Agq-7hMA=?4!509J*NSEk?T^I1vxf^`3O&+IP37pG|uBhS)V&JBXpZx3) zIWwItIWyhjs8`lLy)`qyriOAHXd%2fcAu)>O20LqLYlRS4@@)I?pfR zEwoTyM^uZ7G0sbw-US*%|K{ow!NUUa=E~T}8eP5Q*hAhW-@AI((na+Lo?4Q}iG zmIY)RTz7|w`MO!X@rpJ#&w&2p-p6UqT0gs-1(jQGk8Z* z!8?&-O45C1BLQrnb%NigI?mlRt;O8T_X2U<~Joa;JpV$Q+)==S^G5*ZVgcjN)h z1}6$KBCA-G#@?&qD*^vl?%Stcu~l%Tz|>c=4rGW*vxr4Sd$rOaIunej?k;*Zn-(4W zFu!eEps2bqtS&t~qXR5HimaPTFz-I+qCKtTaeSEtbH5e zgsr4*A{r&y?AA$&^#8_$-ZL)N%&gLn&sj`H`-N-hQLIS2G!Vto|gc-^Ok_@$KlDuBG@sTU3_GGOCt>k5msu~E$&h)D_Qe?t(ig4gi3M#CgQ)*AO zIiij|zGb2VVfky?a`P=<4awUZ-{GCa>H-F`UWD6S0Zk( zvS8e^P&rpbqf1mNUb8p>7#jo=7kQ(8Q@8i~lYb_WHaZU>9^S|l*2?p|!ESZqEFG9h z+sYT_Vfh~FENZ=k2Ctv3ea|wpe4tiPC54@ zPeoAWBzQI)14LafH#Zg&4e^f3yvi&QafUN2AbBkn((U?_GEfy+hz-s(kVRcLNHJ8j0W zw3&TulzPjCmkQw%l^3hv!k4#@r)g9Jy-ALON?j8hopf-@VdH3?!&x}oqk3dZ0*yWDx)=$=e!mXD3 zTyvfIo-9Z~E0_w@Tq2Q!{i?(`c*6Lq9G$ZaJ_*_-+WZI9zz6=c73f5X50ZOPtgd&ZGN} z+LP2es?x3tHMWVgscCLMcKN6 zdss{lX3{vXKL;eMl=@WA3Y?Doacs+62Nv3S3xp0~seggf79vNZesg1jOCp>m1atX<+K#n+eC@%hKOrWXYw@U%Y{Uln%x$-uY6P?FkEud*7o6mY-6 zynl`Sn$q~u(Bq-fH{HFwG$5K9W;R%yE))v{y$)+nO2-Q`N2tE?VjCSO!1}G!_PD^# zIjyGv+V)%iQNrg|t&7nhjH>M1(gcLK63a_U_~dbj z0wG;PJHx)l!es*|C|j>u<)?SwLc`XGX^M$NLgN5f$QbnYr4D9r)tH;thvn#jtBD-D zH8ah9gVXhK@Wjn|kIZ~`1~4K4FA_Q9!0%`!_TdD_9y?G^+0ZZoYXDold-iBOO6XPa zeZ2w%l`!9&uT12PuY%hHj{1fk+`?kCdoOvnqOXxw3vIqN_(%lA6TTT?%E7HI^b6bp zutfr|g8$C^TdhgrP&j3D<2IfI!n@Rrw0jzBY}kCR=K})deQ0zGEbe16wa_jSEi^G- z<6!`t0H21LX}(z(NY0?aG}Rbe%~m(ht&I2F1AKv+kn+ciUMpTeJKr^QxuA>hA-X0}P zpXiEj1PmyPnBRkkh5^IgQ6XqaWWFHeEGEf7RLkQ+>GAjD@s@|J}H70BmgEE&p?b7T{fu zZ48-;td3F}x4x4%(YP6d@ClE?)a93&mAX7{*EXp21ty`f-`HYw`?yRC8MQT8qkTM6 zG}PD>BGh;%Ja!Z)>H=Z(<{>MNeYr{NKFxZK`QXZ6D zl!7wWc3!*(TABc^LZ^pY3yY9``Z&#i-OY{B!#5!K6B$rMk%%za9d=KBC1n8pS$)}5 zUcL{t&GKDQc<+bj!+BSiA3=)~+o9U(u4km%ErzSRI>W0))tT;m4~Nl>qzq^9MvOYU zvXRxa1W6$#X|TXj?;Ac8#{rkhe6TjL9s7eCbHiI|+Fz>EvGO_2t=KgwQG;+QZ-y6J8v!;l3L*MetuwC}@je8w zuri{c*a7l}NgC>xAYD2ol&Z3^aVk`&M4~hi{~^SHso=c~l-&LL`_Rh}CE^WCsc$|J z-WSVPVsR1Z$!SXofS7!T@032wJc05~D*SJ=zuUh)aW>Nh5eVRK9y%#%fmj+05azZ}XmA%X)djxXbH@<&J>B@zlK@lqxG8BS5SHTM2c!a0)~c zw6GQ)CqW}wB;a);1QhNdv45#C1BvsJRarWe&k!x}PjQpX)hn-Xxts8wX9bt-p0ai| zW?s*8^gIhz3jsYBd}S7G?yr~#w@!3A=g8nqHQWAx<-tb+2wy!{2!Q;t$L}ll%+qU_ z;r&~dE)CyG=Xaw0@U2VTwlbhqPvuQPs?xF_`8n6)%$jUp62TSZKk!)x>e z$m!XtF5T@JCxL9u=P3g3t~k8fl2&9c0vVAfPMIp<%z>{EMVqKv2Q!2?> zs}FL}Lk{7-Cn0ckP52Ak<7WnA51zmpeElC|hG@K_*MscRT*ff*w< z3@BH=&BIW4pFT9)8nCKZW4(gd?7IxsDiFmQyn2z=Q?}Ec2i@atlEfqA50*;Lm3VQ$ z5Gcy{&z(%zKEipMd>IT{{1NS-r=09g8!1%{FPK!)w`QhmGUNSH3veuzf&2GmTe$^G!H0+t=hxVI~Pjk?XuhnAj7d>NCZ2{f?9 zu&!)cxm@ZKBU2jSjo2MZaOv8a_$=4Q|8rsK8J?vqL;(5Q_kfd#2Dp9DAn?{J*l}=c zA5T^}Lx_Z?Lyc{kAvKW|`AV=xBTO>Adb&G1$9E-q1~N_p=VQX@_BhLeQ`FC^6}(WK z^vcK}_4z=PW+{+I@GVFnqCyWTbT)vh4KyuKEIk-I0yQXVJ1b8M=`Rd-yYv5$a4+0x zb7qNd(kC>2%39lwP~I{3U_EcM3GTiC z9Aapug|GwXq+sG2^oLBzSFZ1R22_*lY}foTYD5E}d_w3n=B?Wgneq|!W>p__-C7I6 zXdx%e`;__gO+knv5~bAL^n{L%KAWi69!IAC_}NAE9OKT-yQ5_E=C!?d*Ye=|2?D3~ z?#pkQ7w=V(fFr(Wv`QOFN0XI`EmA`h)oY^E)AMe~ai3@3*9pF%Bh~%aq7l5`8g0x) z{!{wrf3+h+k2?(yKiMxG@~z(QVs0qod7k;9XB@YGnI=Ki!#BT!Tx~ZlU+_zuePf&T zU#3vJP%EVQUy|;vA^ej+9)^g!EI4;E}nt!>#vD?B=?U9 z^-$*l-uBq^p9{v|0@dH_c#gbM>P?^h?7hI6;`XBZYpuw#Dg8i=F?!Yc_7uRJ^HuQ2lOG-QG?HdSHJ0~k(TchJzgg`T z%|Sk+*wwlVSvgwQcBF)#gWUNFUC@DvbsvFCa+p|9)~ed=3EwsUcCrL6mqtK)cGD0Z z!E#!)mLPiRH^24U2@cBVwx#0BHmcySsGjmV-K ztuI*}U2OS3%+Sm4RL~t{4U_gFg4wDMU!d=PR?A~X-F7fb`-oJY&*R6{>&|nRJG<-jjI&+w(*1lH$;&SG^j-1+$bqEQivXuZ;jPKowZV zj2sQFa?E7s?)^+4O|Z5 zhrE|?c^u%K0woquYnyQ!hrqD=yX$$-RUSFgd_@J^7VxB8%wUf_E%3eIuFW=}U))ab z9JR~I&R@vdpg+&D~3PbXRhYrF1; zt?Ed1G;2ix^9-F7eOQoL02Be&VB24iAT9a9?8!QAAEY7ZrH}5q!(3sU8qsM`waRSo zwEMPb!Ofz0)HiciNZECyKV;&%m*sGm@X;q~cPHoyifx|eIDM~3qlkK^_7Nk9@-coa z;NeOp^H;4>>6|l28Xo=Yh5^XEDjh1U!z}ZIcCD!022;YM;ojbEfX-@glF*{o(ewB_ zWL+pX#n%Z8BpM}L5F5Z`4`c~Xu}J-uANHtQ>qK4-{OSxJor?maY3tiujXb-s0d>uE z((9Y~3T$9R1WppV=wwc$PBjz)NrE?)LO*+)i!}^u{ec!dD^ZlH`l6*jEZMv-EFKr$ z#ZKtSmQT}fmbIFI9!D+^-xCUU%34Uz%btN~rtgDu2Ah~wV~jEo)0Ux^{4WJy{)!e_ zQonLGG45`!Wx-}!Jp+p)Q!4D8&9=G_u)JaK|0+=60=^;BO4OVet0}8wp0Od#9WhKJIGwg0v-~a(YtN~Af^%;T*fKI0TDBuaG zs|8u>?H`nA22`IzSK0q#_BXf~I=`J12NQk%IRCw%2NF@F^e4H_Ai__0i{TxYpX)!f zC7VNpysRNPDJ!^MwgZI*T3H$la(J~K+y_Ya(o0)!HU5eNJ{WvIh(u|S`5*SdcW~+B z6souI{S=__0n;6mfdWA=GW%{o*TR_(li3 zMIQPsb|G3S z_D&r1uAb=JkPqokvf3_;I?nVc(Zoe`=R(2BCdP zdL`4RXMRCjp~Yqb5vOYteaOyH%MBPCpG&}30(sfeE2E@+1KR95>9xsC6NEhE@%

    @@ -1888,9 +1874,6 @@

    User LogOrder History

    View the order state transition for every order placed by your strategy in-depth. Order History

    -

    P&L Table

    -

    View comprehensive trade-by-trade report in a user-friendly tabular format. This table provides details on entry and exit trades, prices, timestamps, transaction types, and trade-by-trade profit and loss. You can display these figures in either percentages or dollars. -P&L table


    diff --git a/search/search_index.json b/search/search_index.json index 1486fd52..e5a30104 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Python Build","text":""},{"location":"#algobulls","title":"AlgoBulls","text":"

    Welcome to AlgoBulls, the AI-powered trading platform that unlocks new dimensions in algorithmic trading. Our mission is to boost your expertise in designing and executing personalised trading strategies using our cutting-edge product - Python Build.

    "},{"location":"#introducing-python-build-your-gateway-to-algorithmic-trading","title":"Introducing Python Build: Your Gateway to Algorithmic Trading","text":"

    Python Build is your ultimate companion for crafting and executing trading strategies with the precision of a seasoned professional. Designed for both experienced traders and newcomers, this platform offers a range of powerful tools that empower you to make well-informed decisions and trade confidently in dynamic financial markets.

    When it comes to strategy development, Python Build lets you dive into coding, backtesting, and deploying your trading strategies with remarkable ease. With an intuitive interface, you gain the ability to precisely set entry and exit points, handle multiple instruments, and take actions based on informed insights.

    What sets Python Build apart is its adaptable strategy format, suitable for various trading styles. Whether you're into backtesting, paper trading, or live trading, the same strategy code works for all three, making the experience straightforward.

    The library covers all scenarios (backtesting, paper trading, and live trading) during strategy execution or generating analytics. This unified approach ensures seamless transitions between these modes, eliminating the need for complex adjustments. Additionally, it simplifies the creation of progress logs, helping you track your journey and anticipate completion times. For real-time updates, live logs are available too, offering transparency and control over your trading endeavours.

    Python Build's strength lies in its seamless integration with real-time market data sources, historical data, and trading platforms. Its adaptable nature enables connection with various data providers and broker APIs, ensuring access to the information you need for well-informed trading decisions.

    "},{"location":"#powerful-stats-visual-analytics","title":"Powerful Stats & Visual Analytics","text":"

    In the pursuit of successful trading, Python Build equips you with advanced visual tools for strategy analytics. These tools provide a deeper understanding of your strategies' performance, helping you manage risks and fine-tune your plans for optimal success. Visualisations facilitate data-driven decision-making, giving you clearer insights into the intricacies of your trading activities.

    "},{"location":"#multiple-platforms-to-use-python-build","title":"Multiple Platforms to use Python Build","text":"

    To support our diverse community of users, we have the options of two dynamic platforms for our users to use Python Build - pyalgotrading and Python Build Web

    Explore our Python Package: Pyalgotrading

    Dive into the amazing Features of our Web-App: Python Build Web

    "},{"location":"#join-the-community","title":"Join the Community","text":"

    AlgoBulls is more than just a platform; it's a community. Connect, learn, and collaborate with traders and developers. Code your strategies or explore ours \u2013 AlgoBulls is where innovation meets trading expertise.

    By becoming part of the Python Build community, you tap into a rich network of traders and developers. This community serves as a platform for collaboration, offering guidance, valuable insights, and collective refinement of trading strategies. Diverse perspectives help you approach trading challenges from multiple angles, fostering growth and improvement.

    Join us in this journey as AlgoBulls revolutionizes algorithmic trading!

    In essence, Python Build is more than a product; it's your comprehensive guide to mastering algorithmic trading. With its user-friendly interface, diverse functionalities, and seamless integration, it's a valuable asset for traders of all levels. By simplifying strategy crafting, integration, execution, and analysis, Python Build empowers you to navigate the trading world with confidence and precision.

    "},{"location":"#open-source-strategy-library","title":"Open Source Strategy Library","text":"

    We maintain an open source GitHub repository, pyalgostrategypool containing fully functional algorithmic trading strategies. These strategies can be used for Backtesting, Paper Trading, or Live Trading across various brokers and exchanges. The same code works in all trading modes.

    Keep an eye on our GitHub repo

    Our team periodically updates the library to add more strategy Python codes

    For those new to algorithmic trading or Python Build, exploring included example strategies is an excellent starting point. These strategies are pre-built scenarios showcasing different trading strategies and concepts. By studying and experimenting with these examples, you'll gain a deeper grasp of how Python Build operates and how strategies are constructed.

    Here's what you can do with the example strategies:

    • Analyze Structure: Study code structure, including strategy definition, condition setting, and action execution.
    • Modify and Experiment: Once comfortable with examples, customise them to your preferences. Adjust parameters, conditions, and actions to observe their impact on trading outcomes.

    • Learn Strategies: Each example represents a different trading approach, like trend-following or mean-reversion. Studying these examples introduces you to various trading strategies and their underlying principles.

    Remember, these example strategies lay the foundation for your learning journey. As you grow more familiar with the library, you can create and customise your own strategies based on your insights and preferences.

    To conclude, the installation process readies you to use Python Build, while the documentation and example strategies empower you to explore the library's capabilities and apply them to real trading situations. Whether you're a beginner or a seasoned trader...

    "},{"location":"#limitations-of-python-build","title":"Limitations of Python Build","text":"

    In the exciting world of algorithmic trading, Python Build offers numerous benefits and considerations for traders and developers. Let's also acknowledge its limitations to help you make an informed decision.

    1. Python Speed Limitations: While versatile, Python isn't the fastest language for computation. This may pose challenges for complex strategies requiring extensive calculations. Our team is actively transitioning a major part of the codebase to Cython to enhance speed while retaining Python's simplicity. We're also exploring options like GPUs for the future.

    2. Cloud Cold-Start Speed Limitations: Each strategy runs on a dedicated virtual server in the cloud. While this ensures secure execution with dedicated resources, there's a short delay as the cloud fetches the resource before strategy execution begins. This minor delay is part of our ongoing optimization efforts.

    Note

    Our team is working round the clock to make these limitations a thing of the past.

    "},{"location":"#references","title":"References","text":"

    To unleash Python Build's full potential, dive into its comprehensive documentation. This roadmap offers detailed insights into the product's features, functionalities, and capabilities. It's your go-to resource for harnessing the power of Python Build effectively. The documentation includes:

    • Code Examples: Real code snippets showcasing how to implement specific strategies, functions, and techniques using Python Build.
    • Python Cookbook for Algorithmic Trading: A Python Cookbook for Algorithmic Trading, explaining in-depth about strategy creation and execution from scratch using Python. Explore the technical content of the book on GitHub.
    "},{"location":"analytics/pyalgotrading_analytics/","title":"Pyalgotrading Analytics","text":""},{"location":"analytics/pyalgotrading_analytics/#metric-values-and-statistics","title":"Metric Values and Statistics","text":""},{"location":"analytics/pyalgotrading_analytics/#cumulative-returns","title":"Cumulative Returns","text":"
    • The Cumulative Returns chart illustrates how our strategy's returns value has evolved over time in percentage.
    • Positive values indicate gains, while negatives reflect losses. Bigger positive returns are more favourable.
    • Keep in mind, this chart focuses on gains and losses, excluding risk and timing considerations.
    • There are 2 sub categories of cumulative returns chart depending on the scale we are using. One is normal scaled and other is log scaled
    "},{"location":"analytics/pyalgotrading_analytics/#end-of-year-returns-eoy","title":"End of Year Returns (EoY)","text":"
    • The End of Year Returns chart showcases our strategy's annual performance as a percentage.
    • It quantifies its overall performance, considering gains or losses throughout each year.
    "},{"location":"analytics/pyalgotrading_analytics/#distributions-of-monthly-returns-histogram","title":"Distributions of Monthly Returns (Histogram)","text":"
    • In the Monthly Returns Distribution Histogram, we see the frequency distribution of different levels of returns over consecutive months.
    • This histogram helps us understand the range and patterns in monthly returns, shedding light on our strategy's volatility and performance trends.
    "},{"location":"analytics/pyalgotrading_analytics/#daily-returns","title":"Daily Returns","text":"
    • The Daily Returns Chart portrays the percentage change in our strategy's returns between trading days.
    • It provides insights into short-term volatility, trend analysis, and risk assessment.
    "},{"location":"analytics/pyalgotrading_analytics/#rolling-volatility-6-months","title":"Rolling Volatility (6 months)","text":"
    • A Rolling Volatility (6 months) Plot showcases the changing volatility of an investment over time using a rolling window of six months.
    • This plot reveals how the investment's price fluctuations vary as the window moves across the dataset.
    • It provides insights into short-term volatility patterns, helping investors understand how the investment's risk level evolves in response to different market conditions.
    "},{"location":"analytics/pyalgotrading_analytics/#rolling-sharpe-6-months","title":"Rolling Sharpe (6 months)","text":"
    • A Rolling Sharpe (6 months) Plot illustrates the dynamic changes in the Sharpe ratio over time using a rolling window of six months.
    • The plot shows how the risk-adjusted performance of an investment fluctuates as the window moves through the dataset.
    • This visualization helps investors understand how the Sharpe ratio varies with changing market conditions and provides insights into the investment's consistency and risk-return trade-offs over short-term periods.
    "},{"location":"analytics/pyalgotrading_analytics/#rolling-sortino-6-months","title":"Rolling Sortino (6 months)","text":"
    • A Rolling Sortino (6 months) Plot visualizes the variation in the Sortino ratio over time using a rolling window of six months.
    • This plot demonstrates how the investment's risk-adjusted performance, considering only downside volatility, changes as the window progresses through the data.
    • It offers insights into how the Sortino ratio evolves with market conditions, helping investors assess the investment's ability to generate favorable risk-adjusted returns over short-term intervals.
    "},{"location":"analytics/pyalgotrading_analytics/#worst-5-drawdown-periods","title":"Worst 5 Drawdown Periods","text":"
    • A Worst 5 Drawdown Periods plot displays the top five periods during which the strategy experienced the largest declines from peak to trough.
    • This visualization helps strategists understand the most significant loss-making episodes in the strategy's run.
    • It shows the magnitude and duration of these drawdowns, providing insights into the strategy's risk and potential vulnerabilities.
    "},{"location":"analytics/pyalgotrading_analytics/#underwater-plot","title":"Underwater Plot","text":"
    • The Underwater Plot visually narrates our strategy's performance concerning its past peaks.
    • It showcases how much our returns value has dropped from its highest point over time.
    • This aids in visualising periods of drawdown and recovery, offering insights into historical risk and resilience.
    "},{"location":"analytics/pyalgotrading_analytics/#monthly-returns-heatmap","title":"Monthly Returns (Heatmap)","text":"
    • The Monthly Returns Heatmap offers a colour-coded view of our strategy's performance across months.
    • Shades of green indicate positive returns, while shades of red signify losses.
    • This visual tool helps spot trends and patterns, aiding in identifying strong and weak performance periods.
    "},{"location":"analytics/python-build-view-results/","title":"Python build view results","text":""},{"location":"analytics/python-build-view-results/#how-to-view-the-results","title":"How to view the Results?","text":"

    Once you start the strategy, it may take a while for it to complete the execution. You can switch to the Analytics tab after you run your strategy. Even if the strategy execution is not complete, you will still see intermediate results.

    Analytics: In the analytics section, you can view a strategy\u2019s Stats & various other metrics in the form of graphs like P&L.

    "},{"location":"analytics/python-build-view-results/#stats","title":"Stats","text":"

    In this section you can see the total returns, sharpe ratio, sortino ratio, volatility, Max Drawdown, Total wins or Loses, Total short or long trades, hit ratio, number of trades, average trades per day, max profit, max loss, average profit per winning trade, average loss per losing trade.

    "},{"location":"analytics/python-build-view-results/#cumulative-returns","title":"Cumulative Returns","text":""},{"location":"analytics/python-build-view-results/#profit-loss-currency-or","title":"Profit & Loss (Currency or %)","text":"

    The trade by trade P&L in Currency or Percentage.

    "},{"location":"analytics/python-build-view-results/#end-of-year-returns-plot","title":"End of Year Returns Plot (%)","text":""},{"location":"analytics/python-build-view-results/#monthly-returns-histogram","title":"Monthly Returns Histogram (%)","text":""},{"location":"analytics/python-build-view-results/#monthly-returns-heatmap","title":"Monthly Returns Heatmap (%)","text":""},{"location":"analytics/python-build-view-results/#daily-returns","title":"Daily Returns (%)","text":""},{"location":"analytics/python-build-view-results/#underwater-drawdown-plot","title":"Underwater Drawdown Plot (%)","text":""},{"location":"analytics/python-build-view-results/#pl-book","title":"P&L Book","text":"

    View detailed trade by trade report. Premium users can analyze this data in the form of heatmaps for Gross Profit & Loss, Trading Volume & Total number of Trades.

    "},{"location":"analytics/python-build-view-results/#user-log","title":"User Log","text":"

    Real-time logs from strategy execution are displayed in this section. Use these logs to debug your strategy\u2019s behavior and performance.

    "},{"location":"analytics/python-build-view-results/#order-history","title":"Order History","text":"

    View the order state transition for every order placed by your strategy in-depth.

    "},{"location":"analytics/python-build-view-results/#pl-table","title":"P&L Table","text":"

    View comprehensive trade-by-trade report in a user-friendly tabular format. This table provides details on entry and exit trades, prices, timestamps, transaction types, and trade-by-trade profit and loss. You can display these figures in either percentages or dollars.

    "},{"location":"brokers/broker_alpaca_guide/","title":"Alpaca","text":"

    Alpaca is a technology company that offers a modern, developer-friendly trading platform designed for algorithmic and automated trading in the financial markets, particularly focused on equities and cryptocurrencies. The company provides APIs ( Application Programming Interfaces) that allow developers and traders to access market data, execute trades, and build their own algorithmic trading strategies.

    Key features and offerings of Alpaca include:

    1. APIs and SDKs: Alpaca offers APIs and software development kits (SDKs) that enable developers to programmatically access real-time and historical market data, as well as execute trades on various exchanges.

    2. Algorithmic Trading: Alpaca's platform is tailored for algorithmic trading strategies, where traders can automate trading decisions based on predefined conditions and rules.

    3. Paper Trading: Alpaca provides a simulated environment called \"paper trading,\" allowing traders to test their strategies in a risk-free setting before deploying them with real money.

    4. Market Data: The platform offers access to real-time and historical market data, which is crucial for building and testing trading strategies.

    5. Order Execution: Traders can use Alpaca's API to execute trades on supported exchanges. This includes submitting market, limit, and stop orders.

    6. Customizable Dashboards: Alpaca provides customizable dashboards and interfaces to monitor trading activity and portfolio performance.

    7. Brokerage Services: Alpaca acts as a brokerage, providing services that allow traders to execute their strategies on supported exchanges.

    8. Regulatory Compliance: Alpaca operates within the regulations of the financial industry, ensuring compliance with rules and requirements.

    Alpaca's platform aims to democratize algorithmic trading by providing accessible tools and resources for both individual traders and developers. It's worth noting that the landscape of algorithmic trading and financial technology is constantly evolving, so it's a good idea to check Alpaca's official website for the most current information about their offerings and services.

    "},{"location":"brokers/broker_alpaca_guide/#advantages-of-binding-alpaca-with-your-algobulls-account","title":"Advantages of binding Alpaca with your AlgoBulls account","text":"
    • You can run your strategies on American exchanges like NASDAQ or NYSE.
    • It helps you access the historical data as well as live data of all the stocks from Alpaca.
    • It will also help you backtest, paper trade and live trade on AlgoBulls.
    "},{"location":"brokers/broker_alpaca_guide/#how-to-bind-alpaca-with-your-algobulls-account","title":"How to bind Alpaca with your AlgoBulls account?","text":"

    You can connect your Alpaca account with AlgoBulls in two ways: OAuth and Non-OAuth.

    • OAuth Method: Follow the simple steps mentioned here to connect using OAuth.
    • Non-OAuth Method: For the Non-OAuth method, you can follow the steps mentioned here.

    WARNING: We have discontinued the Non-OAuth method in accordance with Alpaca\u2019s recommendations. Please use the OAuth method for seamless integration and improved security. Be mindful of this update as you proceed with your integrations.

    "},{"location":"brokers/connecting_alpaca/","title":"OAuth","text":"

    Embark on a streamlined and secure journey as you bind your Alpaca broker with AlgoBulls through OAuth integration. This seamless process ensures a robust connection between your accounts, allowing for efficient data exchange and trading activities. With OAuth binding, you can experience the convenience of a secure link without compromising on the integrity of your financial operations. Follow our comprehensive guide to effortlessly set up OAuth binding and unleash the full potential of AlgoBulls with Alpaca integration.

    "},{"location":"brokers/connecting_alpaca/#an-overview","title":"An overview","text":"
    • Navigate to the Broking Detailspage on the AlgoBulls platform.
    • Here you will see all the brokers you have connected and their current statuses.
    "},{"location":"brokers/connecting_alpaca/#how-to-set-up-alpaca-for-trading-in-algobulls-with-oauth","title":"How to set up Alpaca for trading in AlgoBulls with OAuth?","text":"

    Before this step, please make sure you have an Alpaca account. Click here to visit the Alpaca site for creating your account.

    "},{"location":"brokers/connecting_alpaca/#add-broker","title":"Add Broker","text":"
    • Click on Add Broker.
    "},{"location":"brokers/connecting_alpaca/#search-for-alpaca","title":"Search for Alpaca","text":"
    • On the pop-up window that appears, you have a search bar for finding your desired broker.

    • Type Alpaca in the search dialog box

    • Click on Alpaca Paper (OAuth) for choosing your Alpaca Paper Account.
    • Click on Alpaca Live (OAuth) for choosing your Alpaca Live Account.

    "},{"location":"brokers/connecting_alpaca/#provide-permission","title":"Provide Permission","text":"
    • After clicking on Alpaca Paper (OAuth) or Alpaca Live (OAuth), you will be redirected to the Alpaca website for permission.
    • You will be asked to login if you are not already logged in.
    • On the dialog box that appears, click Allow. This will bind your Alpaca account with the AlgoBulls account.
    • On successful authorisation, you will be redirected to the AlgoBulls platform and you will be able to see your broker on the Broking Detailspage.

    WARNING: We have discontinued the Non-OAuth method in accordance with Alpaca\u2019s recommendations. Please use the OAuth method for seamless integration and improved security. Be mindful of this update as you proceed with your integrations.

    "},{"location":"brokers/non_auth_alpaca/","title":"Non-OAuth","text":"

    We have discontinued the Non-OAuth method in accordance with Alpaca\u2019s recommendations. Please use the OAuth method for seamless integration and improved security. Be mindful of this update as you proceed with your integrations.

    If you are seeking an alternative to OAuth, the Non-OAuth binding option provides a straightforward and reliable approach to connect your Alpaca broker with AlgoBulls. This method ensures a direct and effective link between your accounts, maintaining the simplicity and efficiency that defines the AlgoBulls experience. Discover the step-by-step process to establish Non-OAuth binding and gain immediate access to the powerful synergy between AlgoBulls and Alpaca, facilitating seamless trading and data synchronisation.

    "},{"location":"brokers/non_auth_alpaca/#how-to-set-up-alpaca-for-trading-in-algobulls-with-non-oauth","title":"How to set up Alpaca for trading in AlgoBulls with Non-OAuth?","text":"

    Before trying to bind your broker, please make sure you have an Alpaca account or follow the steps given below to create your account.

    "},{"location":"brokers/non_auth_alpaca/#create-your-alpaca-account","title":"Create your Alpaca Account","text":"
    • Go the the official Alpaca website
    • Click on sign up for free.
    • Follow the steps there and add your details to create the account.
    "},{"location":"brokers/non_auth_alpaca/#api-keys","title":"API keys","text":"
    • After creating your account, login to access the homepage.
    • Click on View API Keys on the right side under the Quick Trade block.
    • Click on regenerate to create API and Secret Key.
    • On regenerating, you will get fresh API keys under the Key section and a secret key under the Secret section.
    "},{"location":"brokers/non_auth_alpaca/#add-broker","title":"Add Broker","text":"
    • Click on Add Broker.
    "},{"location":"brokers/non_auth_alpaca/#search-for-alpaca-non-oauth","title":"Search for Alpaca Non-OAuth","text":"
    • On the pop-up window that appears, you have a search bar for finding your desired broker..
    • Type Alpacain the search box and choose Alpaca Non-OAuth from the search results.
    "},{"location":"brokers/non_auth_alpaca/#provide-api-and-secret-key","title":"Provide API And Secret key","text":"
    • After clicking Alpaca Non-OAuth, you will see a dialog box requesting your API and Secret key.
    • Enter your keys there and click Confirm to bind Alpaca with your AlgoBulls account.
    • On successful authorisation, you will be redirected to the AlgoBulls platform and you will be able to see your broker on the Broking Details page.
    "},{"location":"gen_ai/gen_ai_prompt_library/","title":"Prompt Library for Gen AI","text":""},{"location":"gen_ai/gen_ai_prompt_library/#here-are-some-prompts-for-creating-strategy-using-genai","title":"Here are some prompts for Creating Strategy using GenAI","text":""},{"location":"gen_ai/gen_ai_prompt_library/#moving-averages-ema-or-sma","title":"Moving Averages (EMA or SMA)","text":"

    Create a trading strategy which takes a BUY trade when EMA cuts SMA upwards and a SELL trade when EMA cuts SMA downwards. While placing a trade, if a previous position is open, it should be exited before placing the new trade\n
    Create a strategy which uses 2 EMAs of different time periods, and it BUYs when EMA of timeperiod 1 crosses the EMA of timeperiod 2 upwards and SELLs when EMA of timeperiod 1 crosses the EMA of timeperiod 2 downwards.\n
    Create a trading strategy which takes a BUY trade when EMA cuts SMA upwards and a SELL trade when EMA cuts SMA downwards. While placing a trade, if a previous position is open, it should be exited before placing the new trade\n
    Develop a strategy that generates a BUY signal when a shorter-term moving average crosses above an intermediate-term moving average, which then crosses above a longer-term moving average. Conversely, generate a SELL signal when the moving averages crossover in the opposite direction.\n

    "},{"location":"gen_ai/gen_ai_prompt_library/#relative-strength-index-rsi","title":"Relative Strength Index (RSI)","text":"

    Create a strategy that uses RSI indicator to give signals based on over bought or over sold conditions. If RSI is above 70, the strategy should generate a SELL signal and if it's below 30, it should generate a BUY signal\n
    Create a strategy using RSI of MACD-signal of close with fast MA period as X, slow MA period as Y and signal period as Z, which will SELL on crossing the upper band and BUY on crossing the lower band\n
    Create a trading strategy which takes BUY when RSI crosses lower band and create a SELL when RSI crosses the upward band, set a stop loss of 2% and target to be 15%.\n
    Create a trading strategy using RSI technical indicator\n
    Create a strategy using RSI of MACD-signal of close with fast MA period as X, slow MA period as Y and signal period as Z, which will SELL on crossing the upper band and BUY on crossing the lower band\n
    Please help me with a strategy that uses RSI indicator to give signals based on over bought or over sold conditions. If RSI is above 70, the strategy should generate a SELL signal and if it's below 30, it should generate a BUY signal\n
    Create a trading strategy which takes BUY when RSI crosses lower band and create a SELL when RSI crosses the upward band, set a stop loss of 2% and target to be 15%.\n

    "},{"location":"gen_ai/gen_ai_prompt_library/#aroon","title":"Aroon","text":"
    Create a trading strategy that utilizes the Aroon indicator to generate signals based on overbought or oversold conditions. If the Aroon Up line crosses below the Aroon Down line and falls below 30, the strategy should generate a BUY signal. Conversely, if the Aroon Up line crosses above the Aroon Down line and rises above 70, the strategy should generate a SELL signal\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#stochastic","title":"Stochastic","text":"

    Develop a trading strategy that incorporates the stochastic crossover to generate signals. When the %K line crosses above the %D line and both lines are below 30, the strategy should generate a BUY signal. Similarly, when the %K line crosses below the %D line and both lines are above 70, the strategy should generate a SELL signal\n
    Develop a strategy that generates a BUY signal when the Stochastic RSI indicator crosses above the oversold level (e.g., 20) and a SELL signal when it crosses below the overbought level (e.g., 80).\n

    "},{"location":"gen_ai/gen_ai_prompt_library/#bollinger-bands-bb","title":"Bollinger Bands (BB)","text":"
    Develop a strategy that generates a BUY signal when the price breaks above the upper Bollinger Band. Similarly, generate a SELL signal when the price breaks below the lower Bollinger Band\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#atr-volatility","title":"ATR (Volatility)","text":"
    Develop a strategy that generates a BUY signal when the price surpasses a multiple of the ATR above a recent swing high, indicating increased volatility and potential upward momentum. Conversely, generate a SELL signal when the price drops below a multiple of the ATR below a recent swing low, indicating increased volatility and potential downward momentum.\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#moving-average-convergence-divergence-macd","title":"Moving Average Convergence Divergence (MACD)","text":"
    Create a strategy that generates a BUY signal when the MACD histogram bars cross above the zero line and a SELL signal when the histogram bars cross below the zero line.\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#volume-weighted-average-price-vwap","title":"Volume Weighted Average Price (VWAP)","text":"
    Create a strategy that generates a BUY signal when the price rises above the VWAP line and a SELL signal when the price drops below the VWAP line, indicating potential shifts in supply and demand.\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#miscellaneous","title":"Miscellaneous","text":"
    Create a strategy that generates a BUY signal when the price crosses above the cloud (Span A and Span B) and the cloud changes color from red to green. Conversely, generate a SELL signal when the price crosses below the cloud and the cloud changes color from green to red.\n
    Develop a strategy that generates a BUY signal when the price crosses above the Parabolic SAR dots and a SELL signal when the price crosses below the dots.\n
    Implement a gap and go strategy that capitalizes on the momentum created by price gaps at the market open. When the price gaps up significantly and continues to move higher, generate a BUY signal. Similarly, when the price gaps down substantially and continues to move lower, generate a SELL signal.\n
    "},{"location":"gen_ai/get_open_ai_keys/","title":"OpenAI","text":""},{"location":"gen_ai/get_open_ai_keys/#what-is-chat-gpt","title":"What is Chat-GPT ?","text":"

    Generative AI involves creating new content using machine learning. A key method is GANs, where a generator creates data and a discriminator evaluates its realism. Another method is VAEs, which encode and decode data. ChatGPT is a specific AI model using generative text, like a conversation. It can understand context, answer questions, and generate text in a human-like manner. It finds use in various fields, from text generation to customer service, but also raises concerns about accuracy and responsible use.

    "},{"location":"gen_ai/get_open_ai_keys/#why-we-use-chat-gpt","title":"Why we use Chat-GPT ?","text":"

    ChatGPT can assist in generating code for algorithmic trading strategies. It can translate strategy ideas into code snippets, provide coding guidance, and help with customization. However, human expertise is essential to validate, optimize, and manage risks in the complex realm of algorithmic trading.

    "},{"location":"gen_ai/get_open_ai_keys/#how-to-get-chat-gpt-api-keys","title":"How to get Chat-GPT API keys ?","text":"

    To get your chat GPT API keys, you can watch the video given below

    Or

    You can simply follow the steps here:

    "},{"location":"gen_ai/get_open_ai_keys/#step-1-loginsignup","title":"Step 1 - Login/Signup","text":"

    Login or Signup in your open AI account, you can use gmail account, microsoft account or apple account to signup.

    "},{"location":"gen_ai/get_open_ai_keys/#step-2-open-your-profile","title":"Step 2 - Open Your Profile","text":"

    Once you are on the home page of your account, you can select your profile on top-right corner, and then select the option View API Keys from the drop-down menu.

    "},{"location":"gen_ai/get_open_ai_keys/#step-3-generate-new-secret-keys","title":"Step 3 - Generate New Secret Keys","text":"

    Now that you are in the API Keys section, you will have to create a new key.

    "},{"location":"gen_ai/get_open_ai_keys/#step-4-get-secrete-keys","title":"Step 4 - Get Secrete Keys","text":"

    On clicking Create new secret key a pop-up will appear, where you can enter the key name, which is for your reference to remember multiple secret keys, once done, there will be another section where you can copy the open-ai secret keys.

    "},{"location":"gen_ai/get_open_ai_keys/#step-5-ready-to-go-with-algobulls","title":"Step 5 - Ready to go with AlgoBulls","text":"

    Once you have copied your secret key then you can now save it on your AlgoBulls Account for accessing the gen-ai feature to create a strategy, and there you go. To know how to save keys and start with generating strategies using Chat-GPT, click here Happy Trading !

    "},{"location":"pyalgotrad/brokerage/","title":"Brokerage","text":""},{"location":"pyalgotrad/brokerage/#brokerage","title":"Brokerage","text":"
    • Parameter Name: broker_commission_percentage
    • Type: float
    • Default Value: None
    • Definition: Brokerage is the fee charged by your broker for executing a trade. It's usually a percentage of the trade value. The broker_commission_percentage parameter lets you specify the brokerage fee as a percentage.
    • Explanation: Brokers charge a fee for executing your trades, and this fee is often a percentage of your trade amount. You can adjust this parameter to match the fees your broker charges.

    • Parameter Name: broker_commission_price

    • Type: float
    • Default Value: None
    • Definition: The broker_commission_price parameter allows you to specify a fixed broker fee per trade. This fee is added on top of the percentage-based brokerage. It accounts for any flat fees associated with your trades.
    • Explanation: In addition to the percentage-based fees, some brokers charge a fixed fee for every trade. Use this parameter to include those fixed fees in your backtesting calculations.
    "},{"location":"pyalgotrad/brokerage/#how-to-use","title":"How to Use","text":"

    To incorporate slippage and brokerage into your backtesting, simply pass the desired values for slippage_percent, broker_commission_percentage, and broker_commission_price when calling the algobulls_connection.get_backtesting_report_pnl_table function. These parameters help you account for real-world trading costs and execution variations, making your backtesting results more realistic.

    • Note: When both broker_commission_percentage and broker_commission_price are provided, the function will automatically calculate the brokerage cost using both parameters and select the option that results in the lower brokerage cost. This ensures that you pay the minimum brokerage fees for your trades.
    "},{"location":"pyalgotrad/brokerage/#example","title":"Example","text":"
    import algobulls_connection\n# Fetch PnL data for a trading strategy with custom slippage and brokerage settings\npnl_table = algobulls_connection.get_backtesting_report_pnl_table(\n    strategy_code=\"your_strategy_code\",\n    show_all_rows=True,\n    force_fetch=True,\n    country='USA',\n    broker_commission_percentage=1.5,  # Adjust brokerage percentage as needed\n    broker_commission_price=0.3,      # Adjust fixed brokerage cost as needed\n    slippage_percent=4.5,             # Adjust slippage percentage as needed\n)\n# Print the PnL table with custom slippage and brokerage settings\nprint(pnl_table)\n
    "},{"location":"pyalgotrad/introduction/","title":"pyalgotrading","text":""},{"location":"pyalgotrad/introduction/#introduction","title":"Introduction","text":"

    Welcome to the Pyalgotrading Documentation \u2013 your guide to practising and acquainting yourself with the pyalgotrading package. Pyalgotrading, built with Python, is an algorithmic trading library that empowers you to design and implement trading strategies on a variety of financial instruments, such as equities, futures, and options. To embark on your journey with Pyalgotrading, ensure you have an active AlgoBulls account, a platform designed for creating and testing trading strategies.

    "},{"location":"pyalgotrad/introduction/#key-features","title":"Key Features","text":"
    • Powered by the AlgoBulls Platform
    • Everything related to Algorithmic Trading Strategies!
      • Free pool of Strategies are available at pyalgostrategypool!
      • Create & upload strategies easily on the cloud
      • Support for all 150+ Technical Indicators provided by TA-Lib
      • Support for multiple candlesticks patterns - Japanese OHLC, Renko, Heikin-Ashi, Linebreak
      • Support for multiple candle intervals - 1 minute, 3 minutes, 5 minutes, 10 minutes, 15 minutes, 30 minutes, 1 hour, 1 day.
      • Support for Regular Orders, Bracket Orders and Cover Orders
      • Support for MARKET, LIMIT, STOPLOSS-LIMIT, STOPLOSS-MARKET orders
      • Support for INTRADAY and DELIVERY orders
    • Support for Backtesting
    • Support for Paper Trading
    • Support for Live Trading / Real Trading
    • Support for multiple brokers for Live Trading. Check list of supported brokers here.
    • Real-time Logs for Backtesting, Paper Trading, Live Trading
    • Multiple real-time Reports available for Backtesting, Paper Trading and Live Trading:
      • Profit-&-Loss report (P&L report)
      • Statistics Report
      • Order History Log for each order with state transitions & timestamps
      • Detailed analytics with charts
    • Support for calculating Slippage
    • Support for calculating Brokerage
    • Support for importing external P&L table and generating analytics on the same
    • Plot Candlestick charts using plotly.py

    Backtesting, Paper Trading and Real Trading can be performed on the same strategy code base!

    Prerequisites

    Before you commence development, make sure to establish your workspace and gather all prerequisites as outlined here.

    "},{"location":"pyalgotrad/introduction/#support-seeking-assistance","title":"Support / Seeking Assistance","text":"
    • Bug Reporting / New Feature Request: Create a new issue on GitHub.
    • Engage in Discussion: Join fellow developers on the discussion forum.
    • Discussion Community: Join fellow algotrading ninjas on the discussion Slack
    • Additional Support: For further help, contact support@algobulls.com.
    "},{"location":"pyalgotrad/introduction/#overview","title":"Overview","text":"
    1. Check out the basic structure of a strategy: Before coding your strategy, refer to the basic structure guide provided by the Pyalgotrading package. This will help you understand the trading strategy methods and flow.

    2. Code your own simple strategy using the pyalgotrading package: Use your Python IDE to code your trading strategy using the pyalgotrading package. You can also use ready-made strategies from the pyalgostrategypool package if you prefer not to code your own.

    3. Upload your strategy to the platform: Upon coding your strategy, upload it to the AlgoBulls platform by crafting a new strategy and uploading the corresponding file.

    4. Run Backtest / Paper Trade / Real Trade with your strategy: Once uploaded, initiate backtests, paper trades, or real trades on the AlgoBulls platform to evaluate its performance.

    5. Retrieve real-time logs, review reports and stats, and inspect order history:Monitor your strategy's performance by fetching runtime logs, examining reports and statistics, and reviewing your order history to track executed trades.

    6. Reach out to AlgoBulls Support for any queries: If you encounter issues during the tutorial, contact the AlgoBulls Support team for assistance.

    "},{"location":"pyalgotrad/introduction/#conclusion","title":"Conclusion","text":"

    This documentation serves as your launchpad into the Pyalgotrading package and the creation of your trading strategies. It also steers you through the process of uploading, executing, and monitoring strategies on the AlgoBulls platform. Our goal is to equip you with the expertise needed to craft effective trading strategies using Pyalgotrading.

    "},{"location":"pyalgotrad/introduction/#contribution-guidelines","title":"Contribution Guidelines","text":"
    1. Fork this project to your account.
    2. Create a branch for the change you intend to make.
    3. Make your changes to your fork.
    4. Send a pull request from your fork\u2019s branch to our master branch.
    "},{"location":"pyalgotrad/prerequisites/","title":"Setup your Workspace","text":""},{"location":"pyalgotrad/prerequisites/#prerequisites","title":"Prerequisites","text":"

    You will need the following to start with Pyalgotrading:

    "},{"location":"pyalgotrad/prerequisites/#algobulls-account","title":"AlgoBulls Account","text":"

    To upload and test your strategies, you will need this account. You can create your account for FREE on the Algobulls website.

    "},{"location":"pyalgotrad/prerequisites/#developer-key","title":"Developer Key","text":"

    To access the features, you will need a developer key. The key can be obtained as follows:

    • Step 1: Activate the Advanced Developer Plan from the Pricing menu.
    • Step 2: Get the Developer Key from the Settings section.

    Please Note

    For security reasons, the developer key will get reset every time you log out from your AlgoBulls account.

    Once you have the developer key, you can access the AlgoBulls platform using pyalgotrading functions.

    "},{"location":"pyalgotrad/prerequisites/#python-310","title":"Python 3.10+","text":"

    The Pyalgotrading platform can run all strategies that conform to Python 3.8 or higher. However, we recommend Python 3.10 or higher.

    Python Tips

    • It is a good idea to set up a virtual environment first while installing Python 3.10.
    • Once Python is installed, most packages are easily installed in your venv using pip install command
    "},{"location":"pyalgotrad/prerequisites/#pyalgotrading-package","title":"Pyalgotrading Package","text":"

    To create and execute your fully automated trading strategies, you only need to install pyalgotrading. You can install the pyalgotrading package using the following command:

    pip install pyalgotrading\n

    "},{"location":"pyalgotrad/prerequisites/#jupyter-notebook","title":"Jupyter Notebook","text":"

    You will use a Jupyter Notebook to connect to the AlgoBulls platform. Using the notebook, you can upload the strategy, test your strategy (Backtesting, Paper Trading, or Real Trading), and fetch logs. Install Jupyter Notebook using the following command:

    pip install jupyter\n

    Pro Tip

    If you are an experienced Pyalgotrading user, Jupyter Notebook might not be necessary. You can directly integrate it into your application.

    "},{"location":"pyalgotrad/prerequisites/#enhancing-productivity","title":"Enhancing Productivity","text":"

    For enhancing your productivity while building and executing strategies using Pyalgotrading, you can make use of Python IDEs of your choice, such as:

    • PyCharm
    • VS Code
    "},{"location":"pyalgotrad/programexample/","title":"Create your Strategy","text":""},{"location":"pyalgotrad/programexample/#previously","title":"Previously...","text":"

    You have covered the basic code structure of a strategy.

    "},{"location":"pyalgotrad/programexample/#now","title":"Now...","text":"

    You can either follow this page to create a strategy, or you can pick up a ready strategy (shown below) and move to the next page.

    "},{"location":"pyalgotrad/programexample/#before-you-start","title":"Before you start...","text":"

    If you want to use a ready strategy from the pyalgostrategypool package, then you can directly jump to the Upload section.

    "},{"location":"pyalgotrad/programexample/#lets-start","title":"Let's Start...","text":"

    Follow the steps given below to create a new strategy of your own.

    Create a python file called strategy_sma_regular_order.py.

    You will add the following code snippets into the file and then save it.

    "},{"location":"pyalgotrad/programexample/#import-statements","title":"Import statements","text":"
    from pyalgotrading.strategy.strategy_base import StrategyBase\nfrom pyalgotrading.constants import *\n
    "},{"location":"pyalgotrad/programexample/#create-the-class-strategysmaregularorder-and-subclass-it-from-strategybase","title":"Create the class StrategySMARegularOrder and subclass it from StrategyBase","text":"

    class StrategySMARegularOrder(StrategyBase):\n
    Now you can add the methods mentioned in the structure inside the class. First you can add the __init__ and the initialize methods.

    "},{"location":"pyalgotrad/programexample/#constructor-def-__init__","title":"Constructor: def __init__()","text":"
    def __init__(self, *args, **kwargs):\n    name = 'SMA Regular Order Strategy'\n    super().__init__(*args, **kwargs)\n\n    self.timeperiod_x = self.strategy_parameters['timeperiod1']\n    self.timeperiod_y = self.strategy_parameters['timeperiod2']\n\n    self.main_order = None\n

    The init method does the following:

    1. name - variable which should store the name of your strategy
    2. super() - Calls the constructor of the superclass.
    3. self.strategy_parameters - Catches the parameters and saves them for local use - When you will submit a testing job for your SMA strategy, you will pass parameters that will be used inside the strategy. For SMA, we are calculating crossover for 2 SMA timeperiod values, example 5 and 12. These 2 parameters will be caught by self.strategy_parameters and stored for local use in self.timeperiod1 and self.timeperiod2.
    4. self.main_order - Create an object that manages orders for you throughout the strategy.

    The init method is specific to Python's internal workings, and it is preceded and succeeded by double underscores ( _ _ ) joined together.

    "},{"location":"pyalgotrad/programexample/#def-initialize","title":"def initialize()","text":"
    def initialize(self):\n    self.main_order = {}\n

    The initialize method sets the self.main_order as an empty dictionary. This method is called at the start of every trading day.

    For instance, say you are submitting a backtesting job for 5 previous days starting at 10:30 every day, then the initialize method will be called every day for 5 days at 10:30.

    Now add the two static methods, name and versions_supprted.

    "},{"location":"pyalgotrad/programexample/#def-name-optional","title":"def name() (optional)","text":"

    If the name variable is defined in __init__(), this function is not needed.

    @staticmethod\ndef name():\n    return 'SMA Regular Order Strategy'\n
    The name should be unique in your collection of strategies.

    "},{"location":"pyalgotrad/programexample/#def-versions_supported-optional","title":"def versions_supported() (optional)","text":"

    not required it will take the latest version of AlgoBullsEngine by default

    @staticmethod\ndef versions_supported():\n    return AlgoBullsEngineVersion.VERSION_3_2_0\n
    Mark both the above methods as @staticmethod.

    The versions_supported method does the following:

    1. It notifies the AlgoBulls platform that the strategy is working correctly for the platform version 3.2.0
    2. Since the platform will be constantly upgraded to incorporate new features and improve efficiency, the version may change.
    3. If the version changes, and if you submit a job for this strategy, then the AlgoBulls platform will spawn a server having version 3.2.0 for your strategy.
    4. Having this method ensures that the AlgoBulls platform always provides the correct environment for your strategy.
    "},{"location":"pyalgotrad/programexample/#def-strategy_select_instruments_for_entry","title":"def strategy_select_instruments_for_entry()","text":"
    def strategy_select_instruments_for_entry(self, candle, instruments_bucket):\n\n    instruments = []\n    meta = []\n\n    for instrument in instruments_bucket:\n        crossover_value = self.get_crossover_value(instrument)\n        if crossover_value == 1:\n            instruments.append(instrument)\n            meta.append({'action': 'BUY'})\n        elif crossover_value == -1:\n            if self.strategy_mode is StrategyMode.INTRADAY:\n                instruments.append(instrument)\n                meta.append({'action': 'SELL'})\n\n    return instruments, meta\n

    The strategy_select_instruments_for_entry method does the following:

    1. instruments and meta - Creates 2 empty lists that will be used to pass the selected instruments and additional information about them respectively.
    2. The Loop - The loop will iterate over each instrument name passed (while submitting the job) and will decide whether to set an entry position or not for it.
    3. crossover_value - The crossover value is calculated and stored here. Crossover values are interpreted as:
      1. Value 1 - Cut upwards
      2. Value -1 - Cut downwards
      3. Value 0 - No crossover
    4. If conditions - If the crossover value is 1, then the instrument is selected for entry position, with the position as 'BUY'. If the crossover value is -1, then the instrument is selected for entry position, with the position as 'SELL'. The selected instrument is appended to the instruments, and the associated action (BUY/SELL) is appended to the meta.
    5. instruments and meta - Both the lists (whether populated or empty) are returned to the platform for further actions.

    Note

    • SELL Entry positions are allowed only if the strategy is running for INTRADAY. DELIVERY strategies do not allow SELL as entry positions. This is taken care of in the elif part.
    • The strategy_select_instruments_for_entry method is called once for every candle time. For Instance, if you submit a job with the candle time as 15 minutes, then this method will be called once for every 15 minute candle.
    • The actual Entry position (BUY/SELL) is not entered here. Here, only the instrument is selected based on the crossover value with the proper action mentioned in the meta. The Entry position will be taken in the next method below.
    • The meta contains a very versatile dictionary object. You may use it to pass any other additional information that you wish.
    "},{"location":"pyalgotrad/programexample/#def-strategy_enter_position","title":"def strategy_enter_position()","text":"
    def strategy_enter_position(self, candle, instrument, sideband_info):\n    if sideband_info['action'] == 'BUY':\n        qty = self.number_of_lots * instrument.lot_size\n        self.main_order[instrument] = \\\n            self.broker.BuyOrderRegular(instrument=instrument,\n                order_code=BrokerOrderCodeConstants.INTRADAY,\n                order_variety=BrokerOrderVarietyConstants.MARKET,\n                quantity=qty)\n    elif sideband_info['action'] == 'SELL':\n        qty = self.number_of_lots * instrument.lot_size\n        self.main_order[instrument] = \\\n            self.broker.SellOrderRegular(instrument=instrument,\n                 order_code=BrokerOrderCodeConstants.INTRADAY,\n                 order_variety=BrokerOrderVarietyConstants.MARKET,\n                 quantity=qty)\n    else:\n        raise SystemExit(f'Got invalid sideband_info value: {sideband_info}')\n\n    return self.main_order[instrument]\n
    "},{"location":"pyalgotrad/programexample/#or","title":"or","text":"
    def strategy_enter_position(self, candle, instrument, meta):\n    self.main_order_map[instrument] = _ = self.broker.OrderRegular(\n        intrument=instrument,                           \n        order_transaction_type=meta['action'],              # 'BUY' or 'SELL'\n        quantity=self.number_of_lots * instrument.lot_size, # number of lots (int)\n        price=None,\n        trigger_price=None\n    )\n    return _\n

    The strategy_enter_position method does the following:

    1. If conditions - The conditions read the action from the sideband_info and perform the required action (BUY/SELL).
    2. qty - The quantity is calculated and stored here. The number of lots will be passed by you as a parameter while submitting a job. The parameter will be caught in self.number_of_lots. The instrument object has the 'lot size', which you can retrieve using instrument.lot_size. You can then use the formula as shown in the code to calculate the quantity.
    3. OrderRegular,BuyOrderRegular and SellOrderRegular - These execute the required action. You need to pass the instrument, order code, order variety and the quantity values.
      • instrument - the instrument on which the BUY/SELL action will be performed.
      • order_code - whether the order is for INTRADAY or DELIVERY. Possible values are:
        • BrokerOrderCodeConstants.INTRADAY
        • BrokerOrderCodeConstants.DELIVERY
        • BrokerOrderCodeConstants.DELIVERY_T1
        • BrokerOrderCodeConstants.DELIVERY_T2
      • order_variety - the type of order variety. Possible values are:
        • BrokerOrderVarietyConstants.MARKET
        • BrokerOrderVarietyConstants.LIMIT
        • BrokerOrderVarietyConstants.STOPLOSS_MARKET
        • BrokerOrderVarietyConstants.STOPLOSS_LIMIT
      • qty - the quantity to BUY/SELL.
    4. self.main_order - The main order (for that particular instrument) is now populated (BUY OR SELL) and is returned to the platform for further actions.

    You can also punch Bracket Orders instead of Regular Orders. A typical BUY Bracket Order will look like this:

    qty = self.number_of_lots * instrument.lot_size\nltp = self.broker.get_ltp(instrument)\nself.main_order[instrument] = \\\n            self.broker.BuyOrderBracket(instrument=instrument,\n                order_code=BrokerOrderCodeConstants.INTRADAY,\n                order_variety=BrokerOrderVarietyConstants.LIMIT,\n                quantity=qty,\n                price=ltp,\n                stoploss_trigger=ltp - (ltp * self.stoploss),\n                target_trigger=ltp + (ltp * self.target),\n                trailing_stoploss_trigger=ltp * self.trailing_stoploss)\n

    The additional parameters are:

    • price - If you want to BUY at the market price (Last Traded Price) or LTP, then just fetch the LTP using get_ltp as shown in the code above. Store the value in ltp and pass it to price.
    • stoploss_trigger, target_trigger and trailing_stoploss_trigger - You can calculate these using the ltp and the values you will pass through the job that you will submit. The parameters will be caught as self.stoploss, self.target and self.trailing_stoploss.

    Note

    • If you plan to use Bracket Order instead of Regular Orders, then create a separate Python file for it, say strategy_sma_bracket_order.py. You can also change the class name as StrategySMABracketOrder. There will be changes in the entry and exit methods also.
    • The strategy_enter_position method is called once for every instrument. For instance, you want to run this strategy for 5 instruments. Say that the strategy_select_instruments_for_entry method selects 3 instruments for ENTRY positions (BUY/SELL). Then, the strategy_enter_position method will be called thrice, once for each instrument respectively within the candle time frame (say, 15 minutes).
    "},{"location":"pyalgotrad/programexample/#def-strategy_select_instruments_for_exit","title":"def strategy_select_instruments_for_exit()","text":"
    def strategy_select_instruments_for_exit(self, candle, instruments_bucket):\n    instruments = []\n    meta = []\n\n    for instrument in instruments_bucket:\n        if self.main_order.get(instrument) is not None:\n            crossover_value = self.get_crossover_value(instrument)\n            if crossover_value in [1, -1]:\n                instruments.append(instrument)\n                meta.append({'action': 'EXIT'})\n    return instruments, meta\n

    The strategy_select_instruments_for_exit method does the following:

    1. instruments and meta - Creates 2 empty lists that will be used to pass the selected instruments and additional information about them respectively.
    2. The Loop - The loop will iterate over each instrument name passed (which are in Entry position (BUY/SELL)) and will decide whether to set an exit position or not for it.
    3. If condition - The exit steps are executed only if the instrument is holding at an ENTRY position (BUY/SELL). You can do this by checking if the self.main_order object is None or not, and proceed only if it is not None.
    4. crossover_value - The crossover value is calculated and stored here. Crossover values are interpreted as:
      1. Value 1 - Cut upwards
      2. Value -1 - Cut downwards
      3. Value 0 - No crossover
    5. If condition - If the crossover value is 1 or -1, then the instrument is selected for exit position. The selected instrument is appended to the instruments, and the associated action (EXIT) is appended to the meta.
    6. instruments and meta - Both the lists (whether populated or empty) are returned to the platform for further actions.

    Note

    • The actual Exit position (BUY/SELL) is not entered here. Here, only the instrument is selected based on the crossover value with the proper action mentioned in the meta. The Exit position will be taken in the next method below.
    • The meta contains a very versatile dictionary object. You may use it to pass any other additional information that you wish.
    • Whenever a new trading day starts, the strategy_select_instruments_for_exit is called first. This is very important for DELIVERY strategies. Many instruments might be holding in an Entry Position at the end of the previous trading day, and they might be eligible for exit at the start of the new trading day.
    "},{"location":"pyalgotrad/programexample/#def-strategy_exit_position","title":"def strategy_exit_position()","text":"
    def strategy_exit_position(self, candle, instrument, sideband_info):\n    if sideband_info['action'] == 'EXIT':\n        self.main_order[instrument].exit_position()\n        self.main_order[instrument] = None\n        return True\n\n    return False\n

    The strategy_exit_position method does the following:

    1. If condition - checks whether the appropriate action is set in the sideband_info.
    2. self.main_order - calls exit_position method for the particular main order of the instrument. If the Entry Position was BUY, then the exit position is automatically taken as SELL and vice versa. The platform takes care of this automatically.
    3. self.main_order - set it to None, as the order has been exited and no longer holds anything.
    4. Return values - returns True to the platform if the exit steps were performed, else return False.
    "},{"location":"pyalgotrad/programexample/#def-get_crossover_value","title":"def get_crossover_value()","text":"
    def get_crossover_value(self, instrument):\n    hist_data = self.get_historical_data(instrument)\n    sma_x = talib.SMA(hist_data['close'], timeperiod=self.timeperiod_x)\n    sma_y = talib.SMA(hist_data['close'], timeperiod=self.timeperiod_y)\n    crossover_value = self.utils.crossover(sma_x, sma_y)\n    return crossover_value\n

    The get_crossover_value method does the following:

    1. hist_data - The historical data for the instrument is fetched using the get_historical_data method and stored here. The data is in the form of a table (Pandas DataFrame) having the following columns:
      • timestamp - the data and time when the data was measured
      • volume - the volume of that instrument
      • open, high, low and close - the OHLC values of the instrument
      • oi - the Open Interest of that instrument
    2. sma_x and sma_y - the SMA function from the talib package is used to calculate the Moving Average for both SMA time-periods. The candle close value is used for calculations, i.e. hist_data['close'].
    3. crossover_value - calculates the crossover value using the crossover method from the utils package.
    4. Return value - return the crossover value to the caller method.

    Note

    • The order of values passed to the crossover method of the utils package is very important.
    • Example: you have 2 SMA values, 5 and 12. The strategy describes that there should be an BUY Entry Position when SMA(5) cuts SMA(12) upwards (crossover value should be 1).
    • In this case, if you mistakenly pass SMA(12) value first and SMA(5) value next to the crossover function, the answer you will get is -1 (Cut downwards).
    • Though, the crossover value is correct, the strategy is expecting to BUY at crossover 1 as per the code, which will not work now.
    • Therefore, the strategy will work correctly only if you pass SMA(5) first and then SMA(12) to the crossover function, thus making the order of parameters passed an important point to be aware of, while coding the strategy.
    "},{"location":"pyalgotrad/programexample/#whats-next","title":"What's Next...","text":"

    Next, you upload the strategy into your AlgoBulls account.

    "},{"location":"pyalgotrad/pyalgotrading_analytics/","title":"Pyalgotrading Analytics","text":""},{"location":"pyalgotrad/pyalgotrading_analytics/#metric-values-and-statistics","title":"Metric Values and Statistics","text":""},{"location":"pyalgotrad/pyalgotrading_analytics/#cumulative-returns","title":"Cumulative Returns","text":"
    • The Cumulative Returns chart illustrates how our strategy's returns value has evolved over time in percentage.
    • Positive values indicate gains, while negatives reflect losses. Bigger positive returns are more favourable.
    • Keep in mind, this chart focuses on gains and losses, excluding risk and timing considerations.
    • There are 2 sub categories of cumulative returns chart depending on the scale we are using. One is normal scaled and other is log scaled
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#end-of-year-returns-eoy","title":"End of Year Returns (EoY)","text":"
    • The End of Year Returns chart showcases our strategy's annual performance as a percentage.
    • It quantifies its overall performance, considering gains or losses throughout each year.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#distributions-of-monthly-returns-histogram","title":"Distributions of Monthly Returns (Histogram)","text":"
    • In the Monthly Returns Distribution Histogram, we see the frequency distribution of different levels of returns over consecutive months.
    • This histogram helps us understand the range and patterns in monthly returns, shedding light on our strategy's volatility and performance trends.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#daily-returns","title":"Daily Returns","text":"
    • The Daily Returns Chart portrays the percentage change in our strategy's returns between trading days.
    • It provides insights into short-term volatility, trend analysis, and risk assessment.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#rolling-volatility-6-months","title":"Rolling Volatility (6 months)","text":"
    • A Rolling Volatility (6 months) Plot showcases the changing volatility of an investment over time using a rolling window of six months.
    • This plot reveals how the investment's price fluctuations vary as the window moves across the dataset.
    • It provides insights into short-term volatility patterns, helping investors understand how the investment's risk level evolves in response to different market conditions.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#rolling-sharpe-6-months","title":"Rolling Sharpe (6 months)","text":"
    • A Rolling Sharpe (6 months) Plot illustrates the dynamic changes in the Sharpe ratio over time using a rolling window of six months.
    • The plot shows how the risk-adjusted performance of an investment fluctuates as the window moves through the dataset.
    • This visualization helps investors understand how the Sharpe ratio varies with changing market conditions and provides insights into the investment's consistency and risk-return trade-offs over short-term periods.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#rolling-sortino-6-months","title":"Rolling Sortino (6 months)","text":"
    • A Rolling Sortino (6 months) Plot visualizes the variation in the Sortino ratio over time using a rolling window of six months.
    • This plot demonstrates how the investment's risk-adjusted performance, considering only downside volatility, changes as the window progresses through the data.
    • It offers insights into how the Sortino ratio evolves with market conditions, helping investors assess the investment's ability to generate favorable risk-adjusted returns over short-term intervals.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#worst-5-drawdown-periods","title":"Worst 5 Drawdown Periods","text":"
    • A Worst 5 Drawdown Periods plot displays the top five periods during which the strategy experienced the largest declines from peak to trough.
    • This visualization helps strategists understand the most significant loss-making episodes in the strategy's run.
    • It shows the magnitude and duration of these drawdowns, providing insights into the strategy's risk and potential vulnerabilities.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#underwater-plot","title":"Underwater Plot","text":"
    • The Underwater Plot visually narrates our strategy's performance concerning its past peaks.
    • It showcases how much our returns value has dropped from its highest point over time.
    • This aids in visualising periods of drawdown and recovery, offering insights into historical risk and resilience.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#monthly-returns-heatmap","title":"Monthly Returns (Heatmap)","text":"
    • The Monthly Returns Heatmap offers a colour-coded view of our strategy's performance across months.
    • Shades of green indicate positive returns, while shades of red signify losses.
    • This visual tool helps spot trends and patterns, aiding in identifying strong and weak performance periods.
    "},{"location":"pyalgotrad/python-build-view-results/","title":"Python build view results","text":""},{"location":"pyalgotrad/python-build-view-results/#how-to-view-the-results","title":"How to view the Results?","text":"

    Once you start the strategy, it may take a while for it to complete the execution. You can switch to the Analytics tab after you run your strategy. Even if the strategy execution is not complete, you will still see intermediate results.

    Analytics: In the analytics section, you can view a strategy\u2019s Stats & various other metrics in the form of graphs like P&L.

    "},{"location":"pyalgotrad/python-build-view-results/#stats","title":"Stats","text":"

    In this section you can see the total returns, sharpe ratio, sortino ratio, volatility, Max Drawdown, Total wins or Loses, Total short or long trades, hit ratio, number of trades, average trades per day, max profit, max loss, average profit per winning trade, average loss per losing trade.

    "},{"location":"pyalgotrad/python-build-view-results/#cumulative-returns","title":"Cumulative Returns","text":""},{"location":"pyalgotrad/python-build-view-results/#profit-loss-currency-or","title":"Profit & Loss (Currency or %)","text":"

    The trade by trade P&L in Currency or Percentage.

    "},{"location":"pyalgotrad/python-build-view-results/#end-of-year-returns-plot","title":"End of Year Returns Plot (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#monthly-returns-histogram","title":"Monthly Returns Histogram (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#monthly-returns-heatmap","title":"Monthly Returns Heatmap (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#daily-returns","title":"Daily Returns (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#underwater-drawdown-plot","title":"Underwater Drawdown Plot (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#pl-book","title":"P&L Book","text":"

    View detailed trade by trade report. Premium users can analyze this data in the form of heatmaps for Gross Profit & Loss, Trading Volume & Total number of Trades.

    "},{"location":"pyalgotrad/python-build-view-results/#user-log","title":"User Log","text":"

    Real-time logs from strategy execution are displayed in this section. Use these logs to debug your strategy\u2019s behavior and performance.

    "},{"location":"pyalgotrad/python-build-view-results/#order-history","title":"Order History","text":"

    View the order state transition for every order placed by your strategy in-depth.

    "},{"location":"pyalgotrad/select/","title":"Select your Strategy","text":""},{"location":"pyalgotrad/select/#previously","title":"Previously...","text":"

    You have uploaded or saved a strategy by:

    • Your strategy is already uploaded on the AlgoBulls account and you want to search or select it

    OR

    • You have saved the strategy from the AlgoBulls Website
    "},{"location":"pyalgotrad/select/#now","title":"Now...","text":"

    You are now ready to select or import your strategy from your AlgoBulls account for Backtesting, Paper Trading and/or Real Trading.

    "},{"location":"pyalgotrad/select/#before-you-start","title":"Before you start...","text":"
    • Make sure you have an active working AlgoBulls account ready to go!
    • Open a Jupyter Notebook.
    • If you have coded the strategy yourself and not used a ready strategy from the pyalgostrategypool package, then make sure your strategy file (.py) and the Jupyter Notebook are in the same folder.
    "},{"location":"pyalgotrad/select/#lets-start","title":"Let's Start...","text":"

    Run the following code snippets into the Jupyter Notebook one by one (or all together).

    "},{"location":"pyalgotrad/select/#import-statements","title":"Import statements","text":"
    import inspect\nfrom pyalgotrading.algobulls import AlgoBullsConnection\n
    "},{"location":"pyalgotrad/select/#import-the-strategy-class","title":"Import the strategy class","text":"

    Perform the below step either to import a ready strategy OR to import your own created strategy.

    • Import a ready strategy

      from pyalgostrategypool.strategy_ema_regular_order import StrategyEMARegularOrder\n

    • Import your own strategy

      from strategy_sma_regular_order import StrategySMARegularOrder\n

    "},{"location":"pyalgotrad/select/#establish-a-connection-to-the-algobulls-platform","title":"Establish a connection to the AlgoBulls Platform","text":"

    algobulls_connection = AlgoBullsConnection()\nalgobulls_connection.get_authorization_url()\n
    The output of the above step is:

    Please login to this URL with your AlgoBulls credentials and get your developer access token: https://app.algobulls.com/user/login

    Get Developer Key

    You will need to log in to your AlgoBulls account and fetch the access token from: (See How) Settings -> General -> Developer Options

    Once you have the access token, set it in the code as shown here:

    algobulls_connection.set_access_token('4365817b795770ea31040a21ad29c8e78b63ad88')\n
    Replace the token you have copied with the token in the code above.

    "},{"location":"pyalgotrad/select/#view-all-the-strategies-in-your-algobulls-account","title":"View all the strategies in your AlgoBulls Account","text":"

    You can view all the strategy saved on your AlgoBulls account.

    all_strategies_df = algobulls_connection.get_all_strategies()\nprint(all_strategies_df)\n

    "},{"location":"pyalgotrad/select/#search-your-strategy","title":"Search your Strategy","text":"
    • Search your strategy using strategy name. Make sure you have the strategy with given name in your AlgoBulls Account.
          strategy_name = 'Exponential Moving Averages Crossover'\n    strategy_code, strategy_name = all_strategies_df.loc[all_strategies_df['strategyName'] == strategy_name].iloc[0]        \n
    • Search your strategy using strategy code. Make sure you have the strategy with given code in your AlgoBulls Account.
      strategy_code = 'afd6214c5db94dbeae7502e861fa4ffc'\nstrategycode, strategyname = all_strategies_df.loc[all_strategies_df['strategyCode'] == strategy_code].iloc[0]\n
    "},{"location":"pyalgotrad/select/#whats-next","title":"What's Next...","text":"

    You are now ready to test your uploaded strategy and perform Backtesting, Paper Trading and/or Real Trading with it.

    "},{"location":"pyalgotrad/slippage/","title":"Slippage","text":""},{"location":"pyalgotrad/slippage/#slippage-and-brokerage-parameters","title":"Slippage and Brokerage Parameters","text":"

    In the algobulls_connection.get_backtesting_report_pnl_table function, you have the option to specify slippage and brokerage parameters to account for transaction costs and execution variations. These parameters allow you to fine-tune your backtesting results to better simulate real-world trading conditions.

    "},{"location":"pyalgotrad/slippage/#slippage","title":"Slippage","text":"
    • Parameter Name: slippage_percent
    • Type: float
    • Default Value: None
    • Definition: Slippage is the difference between the expected execution price of a trade and the actual execution price. It often occurs due to market volatility and the time it takes to execute an order. Slippage can have a significant impact on trading results, and this parameter allows you to simulate it.
    • Explanation: Imagine you're trading and placing an order at a specific price, but the market moves quickly. Slippage accounts for the price difference between what you expected and what you actually get. Use this parameter to make your backtesting experience more realistic.
    "},{"location":"pyalgotrad/slippage/#how-to-use","title":"How to Use","text":"

    To incorporate slippage into your backtesting, simply pass the desired values for slippage_percent, when calling the algobulls_connection.get_backtesting_report_pnl_table function. These parameters help you account for real-world trading costs and execution variations, making your backtesting results more realistic.

    "},{"location":"pyalgotrad/slippage/#example","title":"Example","text":"
    import algobulls_connection\n# Fetch PnL data for a trading strategy with custom slippage  settings\npnl_table = algobulls_connection.get_backtesting_report_pnl_table(\n    strategy_code=\"your_strategy_code\",\n    show_all_rows=True,\n    force_fetch=True,\n    country='USA',\n    slippage_percent=4.5,             # Adjust slippage percentage as needed\n)\n# Print the PnL table with custom slippage  settings\nprint(pnl_table)\n
    "},{"location":"pyalgotrad/testing/","title":"Execute your Strategy","text":""},{"location":"pyalgotrad/testing/#previously","title":"Previously...","text":"

    You have uploaded your strategy to the AlgoBulls platform.

    "},{"location":"pyalgotrad/testing/#now","title":"Now...","text":"

    Using the uploaded strategy, you can now try:

    • Backtesting
    • Paper Trading
    • Real Trading
    "},{"location":"pyalgotrad/testing/#before-you-start","title":"Before you start...","text":"

    Open a Jupyter Notebook.

    The steps you will follow are:

    1. Establish a connection to the AlgoBulls Platform.
    2. Display all Strategies you have in your account.
    3. Select the strategy.
    4. Optionally, print the strategy once.
    5. Select instrument(s).
    6. Submit/Run a Backtest, Paper Trade or Real Trade job.
    7. Check Job Status.
    8. Fetch Logs (even while the job is running).
    9. Fetch Reports. (PnL, Statistics, Order History)
    "},{"location":"pyalgotrad/testing/#lets-start","title":"Let's Start...","text":"

    Run the following code snippets into the Jupyter Notebook one by one (or all together).

    "},{"location":"pyalgotrad/testing/#create-a-new-strategy-file","title":"Create a new strategy file","text":"

    eg: strategy_<unique_code_if_needed>_options_ema_crossover.py Make sure this strategy file is in the same folder as the jupyter notebook.

    Coding Conventions

    • Keep a unique file name
    • Make sure that the file name is in lowercase and that each word is separated with an underscore '_' as shown above.

    How to Code ?

    To know more on how to code trading strategies and understand their format, click here. We have in detail explanation for regular strategies as well as options strategies

    "},{"location":"pyalgotrad/testing/#import-statements","title":"Import statements","text":"
    from pyalgotrading.algobulls import AlgoBullsConnection\nfrom datetime import datetime as dt\nfrom pyalgotrading.constants import *\n
    "},{"location":"pyalgotrad/testing/#establish-a-connection-to-the-algobulls-platform","title":"Establish a connection to the AlgoBulls Platform","text":"

    algobulls_connection = AlgoBullsConnection()\nalgobulls_connection.get_authorization_url()\n
    The output of the above step is:

    Please login to this URL with your AlgoBulls credentials and get your developer access token: https://app.algobulls.com/user/login

    Get Developer Key

    You will need to log in to your AlgoBulls account and fetch the access token from: (See How) Settings -> General -> Developer Options

    Once you have the access token, set it in the code as shown here:

    algobulls_connection.set_access_token('4365817b795770ea31040a21ad29c8e78b63ad88')\n

    Replace the token you have copied with the token in the code above.

    "},{"location":"pyalgotrad/testing/#display-all-strategies-in-your-account","title":"Display all strategies in your account","text":"
    all_strategies = algobulls_connection.get_all_strategies()\nall_strategies\n

    An example of the output will be:

    "},{"location":"pyalgotrad/testing/#select-the-strategy","title":"Select the strategy","text":"

    Select the last entry of the strategyCode column and display it.

    strategy_code = all_strategies.iloc[-1]['strategyCode']\nstrategy_code\n

    "},{"location":"pyalgotrad/testing/#print-your-strategy-code","title":"Print your Strategy code","text":"

    You can print your strategy code once to verify if this is the correct code. This step is optional.

    strategy_details1 = algobulls_connection.get_strategy_details(strategy_code)\nprint(strategy_details1)\n
    "},{"location":"pyalgotrad/testing/#search-for-instruments-based-on-a-search-query","title":"Search for instruments (based on a search query)","text":"

    Now display a few instruments with some keyword. The example below uses 'SBIN' as the keyword.

    instruments = algobulls_connection.search_instrument('SBIN')\ninstruments\n
    "},{"location":"pyalgotrad/testing/#select-an-instrument","title":"Select an instrument","text":"

    From the output, select the instrument on which you wish to test your strategy. For this example, select the first one.

    instrument = instruments[0]['value']\ninstrument\n

    "},{"location":"pyalgotrad/testing/#submit-a-job","title":"Submit a Job","text":"

    Delete previous trades

    algobulls_connection.delete_previous_trades(strategy=strategy)\n

    Set the parameters for the strategy

    parameters={\n    'timeperiod1': 5,\n    'timeperiod2': 12\n}\n

    vendor_details = {\n    'brokerName': '<VENDOR_NAME>',\n    'credentialParameters': {\n        'api_key': '<API_KEY>',\n        'secret_key': '<SECRET_KEY>'\n    }\n}\n
    broking_details = {\n    'brokerName': '<BROKER_NAME>',\n    'credentialParameters': {\n        'user_id': '<USER_ID>',\n        'api_key': '<API_KEY>',\n        'password': '<PASSWORD>'\n    }\n}\n

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    algobulls_connection.backtest(\n        strategy=strategy_code,         # strategy code\n        start='2020-7-1 09:15 +0530',   # start date-time of strategy ('YYYY-MM-DD HH:MM z')\n        end='2020-7-7 15:30 +0530',     # end date-time of strategy ('YYYY-MM-DD HH:MM z')\n        instruments='NSE:SBIN',         # name of the instrument\n        lots=1,                         # number of lots per trade\n        parameters=parameters,          # parameters required for the strategy\n        candle='15 minutes',            # candle size eg : '1 Day', '1 hour', '3 minutes'\n        delete_previous_trades=True,    # delete the previous trades for papertrading (default is true),\n        initial_funds_virtual=10000,    # virtual funds allotted before the paper trading starts (default is 1e9)\n        vendor_details=vendor_details   # vendor's details for authentication and verification \n)\n
    algobulls_connection.papertrade(\n        strategy=strategy_code,         # strategy code\n        start='09:15 +0530',            # start time of strategy (HH:MM z)     \n        end='15:30 +0530',              # end time of strategy (HH:MM z)\n        instruments='NSE:SBIN',         # name of the instrument\n        lots=1,                         # number of lots per trade\n        parameters=parameters,          # parameters required for the strategy\n        candle='15 minutes',            # candle size eg : '1 Day', '1 hour', '3 minutes'\n        delete_previous_trades=True,    # delete the previous trades for papertrading (default is true)\n        initial_funds_virtual=10000,    # virtual funds allotted before the paper trading starts (default is 1e9)\n        vendor_details=vendor_details   # vendor's details for authentication and verification \n)\n
    algobulls_connection.realtrade(\n        strategy=strategy_code,          # strategy code\n        start='09:15 +0530',             # start time of strategy (HH:MM z)     \n        end='15:30 +0530',               # end time of strategy (HH:MM z)\n        instruments='NSE:SBIN',          # name of the instrument\n        lots=1,                          # number of lots per trade\n        parameters=parameters,           # parameters required for the strategy\n        candle='15 minutes',             # candle size eg : '1 Day', '1 hour', '3 minutes'\n        broking_details=broking_details  # broker's details for authentication and verification \n)\n
    "},{"location":"pyalgotrad/testing/#fetch-job-status","title":"Fetch Job Status","text":"

    Click on each of the tabs to see the relevant code snippet. There are 4 stages of your strategy execution : STARTING, STARTED, STOPPING and STOPPED

    BacktestingPaper TradingReal Trading
    algobulls_connection.get_backtesting_job_status(strategy_code)\n
    algobulls_connection.get_papertrading_job_status(strategy_code)\n
    algobulls_connection.get_realtrading_job_status(strategy_code)\n

    You can stop a submitted job anytime.

    "},{"location":"pyalgotrad/testing/#stop-a-job","title":"Stop a Job","text":"

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    algobulls_connection.stop_backtesting_job(strategy_code)\n
    algobulls_connection.stop_papertrading_job(strategy_code)\n
    algobulls_connection.stop_realtrading_job(strategy_code)\n

    You can fetch the logs in the middle of a job to monitor the progress.

    "},{"location":"pyalgotrad/testing/#fetch-logs","title":"Fetch logs","text":"

    Logging Tip

    • There are 2 variations when fetching logs:
      • Progressive Logs (print_live_logs = True): will show progress bar and update the latest logs as the strategy is executed
      • Complete Logs (print_live_logs = False): will fetch logs after strategy is executed.(It wont update the latest logs, unless called manually again)

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    logs = algobulls_connection.get_backtesting_logs(\n            strategy_code,                              # strategy code \n            display_progress_bar=True,                  # (default=True) to track the execution on progress bar as your strategy is executed\n            print_live_logs: True                       # (default=False) to print the live logs as your strategy is executed\n        )\nprint(logs)\n
    logs = algobulls_connection.get_papertrading_logs(\n            strategy_code,                              # strategy code \n            display_progress_bar=True,                  # (default=True) to track the execution on progress bar as your strategy is executed\n            print_live_logs: True                       # (default=True) to print the live logs as your strategy is executed\n        )\nprint(logs)\n
    logs = algobulls_connection.get_realtrading_logs(\n            strategy_code,                              # strategy code \n            display_progress_bar=True,                  # (default=True) to track the execution on progress bar as your strategy is executed\n            print_live_logs: True                       # (default=True) to print the live logs as your strategy is executed\n        )\nprint(logs)\n

    You can fetch the PnL report, statistics and order history for a job.

    "},{"location":"pyalgotrad/testing/#fetch-pnl-reports","title":"Fetch PnL Reports","text":"

    Click on each of the tabs to see the relevant code snippet.

    Please Note

    Make sure that strategy's execution status is at STOPPED stage before generating PnL reports

    BacktestingPaper TradingReal Trading
    algobulls_connection.get_backtesting_report_pnl_table(\n        strategy_code,                      # strategy code\n        show_all_rows=True,                 # default=True         \n        force_fetch=True,                   # pnl data is saved locally once fetched, to update the locally fetched data, make this parameter True\n        country='USA',                      # country of the exchange that was used while starting the job ('India' or 'USA')\n        broker_commission_percentage: 1     # Percentage of broker commission per trade\n        broker_commission_price: 0.2        # Broker fee per trade\n        slippage_percent: 3                 # Slippage percentage value\n)\n
    algobulls_connection.get_papertrading_report_pnl_table(\n        strategy_code,                      # strategy code\n        show_all_rows=True,                 # default=True         \n        force_fetch=True,                   # pnl data is saved locally once fetched, to update the locally fetched data, make this parameter True\n        country='USA',                      # country of the exchange that was used while starting the job ('India' or 'USA')\n        broker_commission_percentage: 1     # Percentage of broker commission per trade\n        broker_commission_price: 0.2        # Broker fee per trade\n        slippage_percent: 3                 # Slippage percentage value\n)\n
    algobulls_connection.get_realtrading_report_pnl_table(\n        strategy_code,              # strategy code\n        show_all_rows=True,         # default=True         \n        force_fetch=True,           # pnl data is saved locally once fetched, to update the locally fetched data, make this parameter True\n        country='USA',              # country of the exchange that was used while starting the job ('India' or 'USA')\n)\n

    To know more about slippage and brokerage parameters click here

    "},{"location":"pyalgotrad/testing/#fetch-report-statistics","title":"Fetch Report Statistics","text":"

    Click on each of the tabs to see the relevant code snippet.

    Analytics Tips

    You can view your analytics on the python build page as well, simply log inside your AlgoBulls Account, and look for your Strategy in Python Build -> My Coded Strategies

    BacktestingPaper TradingReal Trading
    algobulls_connection.get_backtesting_report_statistics(\n    strategy_code,          # strategy code\n    report='full',          # format of the report\n    html_dump=True          # save report as html file\n)\n
    algobulls_connection.get_papertrading_report_statistics(\n    strategy_code,          # strategy code\n    report='full',          # format of the report\n    html_dump=True          # save report as html file\n)\n
    algobulls_connection.get_realtrading_report_statistics(\n    strategy_code,          # strategy code\n    report='full',          # format of the report\n    html_dump=True          # save report as html file\n)\n
    "},{"location":"pyalgotrad/testing/#generate-statistics-from-external-csv","title":"Generate Statistics from External CSV","text":"

    Make sure your csv has the columns names as \"net_pnl\" and \"entry_timestamp\". The \"net_pnl\" column will contain the net profit and loss of every trade and its respective entry time will be stored in \"entry_timestamp\".

    connection.get_report_statistics(file_path=\"testing_file.csv\", initial_funds=3000)\n

    "},{"location":"pyalgotrad/testing/#fetch-order-history","title":"Fetch Order History","text":"

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    order_history = algobulls_connection.get_backtesting_report_order_history(strategy_code)\nprint(order_history)\n
    order_history = algobulls_connection.get_papertrading_report_order_history(strategy_code)\nprint(order_history)\n
    order_history = algobulls_connection.get_realtrading_report_order_history(strategy_code)\nprint(order_history)\n

    Note

    • Order History for Real Trading is not supported by brokers.
    • Order History for Backtesting, Paper Trading and Real Trading is supported by the AlgoBulls Virtual Brokers.
    "},{"location":"pyalgotrad/testing/#whats-next","title":"What's Next...","text":"

    You can now explore more by creating and uploading more complex strategies.

    You can also check out the Analytics, to understand more about the returns and analyze your strategy based on the analytics report.

    "},{"location":"pyalgotrad/upload/","title":"Upload your Strategy","text":""},{"location":"pyalgotrad/upload/#previously","title":"Previously...","text":"

    You have created a strategy by:

    • Coding the complete strategy from the Create page.

    OR

    • Picking up a ready strategy from the pyalgostrategypool package.
    "},{"location":"pyalgotrad/upload/#now","title":"Now...","text":"

    You are now ready to upload your strategy into your AlgoBulls account for Backtesting, Paper Trading and/or Real Trading.

    "},{"location":"pyalgotrad/upload/#before-you-start","title":"Before you start...","text":"
    • Make sure you have an active working AlgoBulls account ready to go!
    • Open a Jupyter Notebook.
    • If you have coded the strategy yourself and not used a ready strategy from the pyalgostrategypool package, then make sure your strategy file (.py) and the Jupyter Notebook are in the same folder.
    "},{"location":"pyalgotrad/upload/#lets-start","title":"Let's Start...","text":"

    Run the following code snippets into the Jupyter Notebook one by one (or all together).

    "},{"location":"pyalgotrad/upload/#import-statements","title":"Import statements","text":"
    import inspect\nfrom pyalgotrading.algobulls import AlgoBullsConnection\n
    • Import a ready strategy

      from pyalgostrategypool.strategy_ema_regular_order import StrategyEMARegularOrder\n

    • Import your own strategy

      from strategy_sma_regular_order import StrategySMARegularOrder\n

    "},{"location":"pyalgotrad/upload/#establish-a-connection-to-the-algobulls-platform","title":"Establish a connection to the AlgoBulls Platform","text":"

    algobulls_connection = AlgoBullsConnection()\nalgobulls_connection.get_authorization_url()\n
    The output of the above step is:

    Please login to this URL with your AlgoBulls credentials and get your developer access token: https://app.algobulls.com/user/login

    Get Developer Key

    You will need to log in to your AlgoBulls account and fetch the access token from: (See How) Settings -> General -> Developer Options

    Once you have the access token, set it in the code as shown here:

    algobulls_connection.set_access_token('4365817b795770ea31040a21ad29c8e78b63ad88')\n
    Replace the token you have copied with the token in the code above.

    "},{"location":"pyalgotrad/upload/#print-your-strategy-code","title":"Print your Strategy code","text":"

    You can print your strategy code once to verify if this is the correct code before uploading it to the platform. This step is optional.

    print(inspect.getsource(StrategySMARegularOrder))\n

    "},{"location":"pyalgotrad/upload/#upload-your-strategy_1","title":"Upload your Strategy","text":"

    Upload your strategy as shown in the code below.

    algobulls_connection.create_strategy(StrategySMARegularOrder)\n

    "},{"location":"pyalgotrad/upload/#re-upload-your-strategy-after-modifications","title":"Re-upload your Strategy after modifications","text":"

    If you are re-uploading your strategy after some changes, then use the overwrite switch as shown here.

    algobulls_connection.create_strategy(StrategySMARegularOrder, overwrite=True)\n

    "},{"location":"pyalgotrad/upload/#whats-next","title":"What's Next...","text":"

    You are now ready to test your uploaded strategy and perform Backtesting, Paper Trading and/or Real Trading with it.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/","title":"Options Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyOptionsEMACrossover(StrategyOptionsBaseV2)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every options strategy is a child class of the StrategyOptionsBaseV2 class.\n
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'options_ema_crossover'\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next, we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.no_of_strikes_away_ce = self.strategy_parameters['NO_OF_STRIKES_AWAY_CE']\nself.no_of_strikes_away_p = self.strategy_parameters['NO_OF_STRIKES_AWAY_PE']\nself._strike_direction_ce = self.strategy_parameters['STRIKES_DIRECTION_CE']\nself._strike_direction_pe = self.strategy_parameters['STRIKES_DIRECTION_PE']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may change for different strategies.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters.

    try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg:

    self.main_order = None            # We save the entry order in this variable\nself.stoploss_order = None        # We save the corresponding stoploss exit order of the entry order in this variable\n
    We initialize the variables with a None value. !!! Note There could be more strategy variables required as per the strategy requirement.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
    self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags.

    eg:

    self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag

    eg:

    self.order_tag_manager.remove_tags(tags=entry_key)\n

    Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in order tags.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s).

    eg:

    self.order_tag_manager.remove_order(main_order)\n
    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_internals","title":"get_internals","text":"
    Returns the values i.e. both the entry and exit orders stored inside the tags list.\n
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#5-child-instruments-calculation","title":"5. Child instruments calculation","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_ltp","title":"get_ltp","text":"

    Fetch the ltp of the base instrument (instrument set while executing strategy)

    ltp = self.broker.get_ltp(self.underlying_instrument)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#options_instruments_set_up_local","title":"options_instruments_set_up_local","text":"

    Get the ATM ITM and OTM lists of the child instrument based on the LTP

    self.options_instruments_set_up_local(self.underlying_instrument, tradingsymbol_suffix, ltp)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_child_instrument_details","title":"get_child_instrument_details","text":"

    Select a child instrument from the lists of ATM, ITM, and OTM based on the strike direction and no of strikes given for the child instrument

    child_instrument = self.get_child_instrument_details(self.underlying_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#6-entry-methods","title":"6. Entry Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create a get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selectd_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#7-exit-methods","title":"7. Exit Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#8-other-common-methods","title":"8. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#options_instruments_set_up_local_1","title":"options_instruments_set_up_local","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch the ATM, ITM, and OTM lists of the child instruments based on the LTP of the base instrument.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_child_instrument_details_1","title":"get_child_instrument_details","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch a single child instrument based on the no of strikes and strike direction.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#9-cleanup","title":"9. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#10-check-out-our-docs-for-developed-options-strategies","title":"10. Check out our docs for developed Options strategies","text":"
    • Options Bear Call Ladder
    • Options Bear Put Ladder
    • Options Bull Call Ladder
    • Options Bull Put Ladder
    • Options Long Iron Butterfly
    • Options Straddle
    • Options Strangle

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/","title":"Regular Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyFuturesEMACrossover(StrategyBase)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every strategy is a child class of the StrategyBase class.\n
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'futures_ema_crossover'\n

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format, as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may be different for different strategies.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters. try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg: self.order_tag_manager = None

    We initialize the variables with a None value.

    Note

    There could be more strategy variables required as per the strategy requirement.\n
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
      self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags. eg:
      self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag eg:
      self.order_tag_manager.remove_tags(tags=entry_key)\n
    • Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in the order tags.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s). eg:
    self.order_tag_manager.remove_order(main_order)\n

    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#get_internals","title":"get_internals","text":"
    • Returns the values i.e. both the entry and exit orders stored inside the tags list.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#5-entry-methods","title":"5. Entry Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create an get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selected_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#6-exit-methods","title":"6. Exit Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit:","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#7-other-common-methods","title":"7. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#8-cleanup","title":"8. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#10-check-out-our-docs-for-developed-regular-strategies","title":"10. Check out our docs for developed Regular strategies","text":"
    • Aroon Crossover
    • Bollinger Bands
    • EMA Crossover
    • Inverse EMA Scalping
    • Reverse RSI
    • Stochastic Crossover
    • VWAP Crossover

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"pyalgotrad/strategy_guides/structure/","title":"Code Structure of Strategy","text":"

    Coding Prerequisites

    • For pyalgotrading check here.
    • For Python Build Web check here.
    "},{"location":"pyalgotrad/strategy_guides/structure/#methods","title":"Methods","text":""},{"location":"pyalgotrad/strategy_guides/structure/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function helps you choose which trading instruments you want your strategy to work with. The system will use this function to go through each instrument one by one, at each candle's time. You get to write code that decides whether to place an order for a specific instrument or not.

    "},{"location":"pyalgotrad/strategy_guides/structure/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function is where you can place orders for the instruments you selected earlier. It's executed for each instrument you picked in the previous function.

    "},{"location":"pyalgotrad/strategy_guides/structure/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    After you've entered a position for an instrument, this function is called for each of those instruments at each candle interval. You can use it to decide whether an instrument should be exited from the position.

    "},{"location":"pyalgotrad/strategy_guides/structure/#strategy_exit_position","title":"strategy_exit_position()","text":"

    In this function, you can close or exit positions for the instruments you marked for exiting in the previous function. It's done instrument by instrument.

    "},{"location":"pyalgotrad/strategy_guides/structure/#supporting-methods","title":"Supporting Methods","text":"

    You have the following supporting methods:

    "},{"location":"pyalgotrad/strategy_guides/structure/#init","title":"init()","text":"

    This method is like a starter for your strategy. It checks if the values you give it make sense and sets up some useful information for your strategy to use.

    "},{"location":"pyalgotrad/strategy_guides/structure/#initialize","title":"initialize()","text":"

    This method is called when your strategy begins, both at the very start and at the beginning of each trading day. It's like setting up your strategy's workspace and giving your tools a starting position.

    "},{"location":"pyalgotrad/strategy_guides/structure/#name","title":"name()","text":"

    This method gives your strategy a special name. It's like giving your strategy a unique nickname.

    "},{"location":"pyalgotrad/strategy_guides/structure/#versions_supported","title":"versions_supported()","text":"

    This method lets you specify which version of the AlgoBulls Platform your strategy works well with. It's like saying, \"My strategy is ready for this specific version of the platform.\"

    "},{"location":"pyalgotrad/strategy_guides/structure/#utility-functions","title":"Utility Functions","text":"

    You have the following utility function to be used in this strategy :

    Links

    • Strategy Structure (regular)
    • Strategy Structure (options)
    "},{"location":"pyalgotrad/strategy_guides/structure/#get_crossover_value","title":"get_crossover_value()","text":"This handy function calculates something called the \"crossover value\" for you. It's like having a calculator that figures out this specific value for your strategy."},{"location":"pyalgotrad/strategy_guides/structure/#flowchart","title":"Flowchart","text":"

    Once you create your own strategy or use a ready strategy from the pyalgostrategypool package, this is how it works internally on the AlgoBulls Core Trading Engine.

    "},{"location":"python_build/pyalgotrading_analytics/","title":"Pyalgotrading Analytics","text":""},{"location":"python_build/pyalgotrading_analytics/#metric-values-and-statistics","title":"Metric Values and Statistics","text":""},{"location":"python_build/pyalgotrading_analytics/#cumulative-returns","title":"Cumulative Returns","text":"
    • The Cumulative Returns chart illustrates how our strategy's returns value has evolved over time in percentage.
    • Positive values indicate gains, while negatives reflect losses. Bigger positive returns are more favourable.
    • Keep in mind, this chart focuses on gains and losses, excluding risk and timing considerations.
    • There are 2 sub categories of cumulative returns chart depending on the scale we are using. One is normal scaled and other is log scaled
    "},{"location":"python_build/pyalgotrading_analytics/#end-of-year-returns-eoy","title":"End of Year Returns (EoY)","text":"
    • The End of Year Returns chart showcases our strategy's annual performance as a percentage.
    • It quantifies its overall performance, considering gains or losses throughout each year.
    "},{"location":"python_build/pyalgotrading_analytics/#distributions-of-monthly-returns-histogram","title":"Distributions of Monthly Returns (Histogram)","text":"
    • In the Monthly Returns Distribution Histogram, we see the frequency distribution of different levels of returns over consecutive months.
    • This histogram helps us understand the range and patterns in monthly returns, shedding light on our strategy's volatility and performance trends.
    "},{"location":"python_build/pyalgotrading_analytics/#daily-returns","title":"Daily Returns","text":"
    • The Daily Returns Chart portrays the percentage change in our strategy's returns between trading days.
    • It provides insights into short-term volatility, trend analysis, and risk assessment.
    "},{"location":"python_build/pyalgotrading_analytics/#rolling-volatility-6-months","title":"Rolling Volatility (6 months)","text":"
    • A Rolling Volatility (6 months) Plot showcases the changing volatility of an investment over time using a rolling window of six months.
    • This plot reveals how the investment's price fluctuations vary as the window moves across the dataset.
    • It provides insights into short-term volatility patterns, helping investors understand how the investment's risk level evolves in response to different market conditions.
    "},{"location":"python_build/pyalgotrading_analytics/#rolling-sharpe-6-months","title":"Rolling Sharpe (6 months)","text":"
    • A Rolling Sharpe (6 months) Plot illustrates the dynamic changes in the Sharpe ratio over time using a rolling window of six months.
    • The plot shows how the risk-adjusted performance of an investment fluctuates as the window moves through the dataset.
    • This visualization helps investors understand how the Sharpe ratio varies with changing market conditions and provides insights into the investment's consistency and risk-return trade-offs over short-term periods.
    "},{"location":"python_build/pyalgotrading_analytics/#rolling-sortino-6-months","title":"Rolling Sortino (6 months)","text":"
    • A Rolling Sortino (6 months) Plot visualizes the variation in the Sortino ratio over time using a rolling window of six months.
    • This plot demonstrates how the investment's risk-adjusted performance, considering only downside volatility, changes as the window progresses through the data.
    • It offers insights into how the Sortino ratio evolves with market conditions, helping investors assess the investment's ability to generate favorable risk-adjusted returns over short-term intervals.
    "},{"location":"python_build/pyalgotrading_analytics/#worst-5-drawdown-periods","title":"Worst 5 Drawdown Periods","text":"
    • A Worst 5 Drawdown Periods plot displays the top five periods during which the strategy experienced the largest declines from peak to trough.
    • This visualization helps strategists understand the most significant loss-making episodes in the strategy's run.
    • It shows the magnitude and duration of these drawdowns, providing insights into the strategy's risk and potential vulnerabilities.
    "},{"location":"python_build/pyalgotrading_analytics/#underwater-plot","title":"Underwater Plot","text":"
    • The Underwater Plot visually narrates our strategy's performance concerning its past peaks.
    • It showcases how much our returns value has dropped from its highest point over time.
    • This aids in visualising periods of drawdown and recovery, offering insights into historical risk and resilience.
    "},{"location":"python_build/pyalgotrading_analytics/#monthly-returns-heatmap","title":"Monthly Returns (Heatmap)","text":"
    • The Monthly Returns Heatmap offers a colour-coded view of our strategy's performance across months.
    • Shades of green indicate positive returns, while shades of red signify losses.
    • This visual tool helps spot trends and patterns, aiding in identifying strong and weak performance periods.
    "},{"location":"python_build/python-build-code-gen-ai/","title":"Code Using AI","text":"

    If you have creative ideas in your mind and want to design a algotrading strategy but you are new at coding, don't worry, we have got it covered using our Python Build's Create Using AI feature which will help you to create trading strategies seamlessly.

    Tip

    You can check here on how to get your Chat-GPT API key

    "},{"location":"python_build/python-build-code-gen-ai/#set-your-gen-ai-api-keys-and-model","title":"Set your Gen-AI API keys and Model","text":"
    1. Once you have retrieved the API key, you need to paste it in the input box for API keys.
    2. Select the model of AI from the drop-down menu below.
    3. Click on the Save button to save your key and model and establish the connection.

    "},{"location":"python_build/python-build-code-gen-ai/#enter-your-prompts","title":"Enter your Prompts","text":"
    1. On the left hand side you can see the previous sessions and chat history
    2. Right below you will see a button for Prompts Library which has all the sample prompts that would generate wonderful strategies, you can pick any of them, if needed you can even tailor those prompts and use them.
    3. To start a new session click on New Session
    4. Enter your prompt or select from the sample prompts or take one prompt from the Prompts Library
    5. Click on the send button to start generating

    Please Note, It takes some time to generate the strategy as it processes a lot of data, so please be patient

    Please Note

    Direct response code from gen-ai may not be 100% accurate, you will have to make sure that pythonic errors are not present. Also dont forget to configure your strategy parameters before executing the code.

    Modify your code ?

    To know more on how to code trading strategies and understand their format, click here. We also have in detail explanation for regular strategies as well as options strategies.

    "},{"location":"python_build/python-build-code-gen-ai/#save-your-strategy","title":"Save your Strategy","text":"
    1. Once it gives you the strategy you can ask it to make more changes as per your need or you can save it directly.
    2. To save, click on the top right corner of the code, you can even copy the code if you want.
    3. Once you save it, it will redirect you to a new page where you have save your strategy and update its configuration parameters from the parameter settings.
    4. All your saved strategies can be viewed in My Coded Strategies section in Python Build.

    What's Next ?

    You can check out our strategy code structure and their respective formats for options and equity. Once you have verified that your strategy has no pythonic errors then you can move on to Configure and Execute your Strategy.

    "},{"location":"python_build/python-build-code-new/","title":"Code New Strategy","text":""},{"location":"python_build/python-build-code-new/#how-to-code-a-new-strategy","title":"How to code a new strategy?","text":"

    If you want to create your own strategy, click on the + Sign in the Code New Strategy option under the My Coded Strategies section.

    A new blank code editor will open, allowing you to start coding your new strategy. You can check out the basic building blocks of a strategy here to help you with your code structure. After you've finished coding, click Save to save this strategy in the My Coded Strategies section.

    How to Code ?

    To know more on how to code trading strategies and understand their format, click here. We also have in detail explanation for regular strategies as well as options strategies.

    Next, you need to configure the strategy\u2019s parameters by clicking on the settings symbol in the top right corner of the code editor. In this section you can add, view & edit the strategy parameters.

    To test the behavior and performance of the strategy, click on Save & Start and follow the directions given earlier. The performance of the strategy will soon be available in the Results section.

    You can rename a strategy by clicking the edit symbol beside the strategy name.

    What's Next ?

    You can check out our strategy code structure and their respective formats for options and equity. Once you have verified that your strategy has no pythonic errors then you can move on to Configure and Execute your Strategy.

    "},{"location":"python_build/python-build-code-ready-templates/","title":"Code Ready Templates","text":""},{"location":"python_build/python-build-code-ready-templates/#how-to-code-strategies-using-ready-templates","title":"How to code strategies using Ready Templates?","text":"

    Select a template that you would like to modify from the Ready Template section. To view all the ready-to-use templates, click on More.

    Click on the Code button placed in the bottom right corner of the selected template to view the strategy code.

    You should now see the code editor, where you can start modifying the code as required.

    Modify your code ?

    To know more on how to code trading strategies and understand their format, click here. We also have in detail explanation for regular strategies as well as options strategies.

    To save the strategy, click the Save button. This strategy will be added to your list of My coded strategies.

    What's Next ?

    You can check out our strategy code structure and their respective formats for options and equity. Once you have verified that your strategy has no pythonic errors then you can move on to Configure and Execute your Strategy.

    "},{"location":"python_build/python-build-config-parameters/","title":"Configure and Execute your Strategy","text":"

    To effectively use pyalgotrading and make the most of your trading strategy, it's essential to be familiar with some frequently used stock market terminologies. Let's go over these terms before diving into configuring your strategy parameters.

    1. Exchange: An exchange is a marketplace where various financial instruments like securities, commodities, and derivatives are traded. Examples include NSE (National Stock Exchange), BSE (Bombay Stock Exchange), NYSE (New York Stock Exchange), and NASDAQ.
    2. Instruments: Instruments are the specific assets or securities traded on these exchanges. These include stocks like AAPL (Apple Inc.), TSLA (Tesla, Inc.), TATAMOTORS (Tata Motors Limited), and SBIN (State Bank of India).
    3. Candlestick Charts: Candlestick charts are commonly used in stock market analysis. They represent the opening and closing prices of a stock or asset over regular time intervals, which are often referred to as \"candle size.\"
    4. Intraday Trading: Intraday trading, also known as day trading, involves buying and selling stocks within the same trading day.
    5. Delivery Trading: Delivery trading is a type of trading where traders buy shares and hold them for an extended period, which can range from a few days to several months or even years.
    6. Position: A position refers to the amount of a security or asset owned (or sold short) by an individual or entity. Traders take positions when they make buy or sell orders.
    7. Order: An order is an instruction to buy or sell a security or asset on a trading venue, such as a stock market or cryptocurrency exchange.
    8. Crossover: A crossover occurs when two signal lines intersect. Signal lines can be various indicators like moving averages, Relative Strength Index (RSI), Volume Weighted Averages, etc. Crossovers are often used to trigger and place orders. Now that we've covered these essential terms, let's move on to configuring your trading strategy parameters.
    "},{"location":"python_build/python-build-config-parameters/#configure-strategy-parameters","title":"Configure Strategy Parameters","text":"

    You can configure the strategy\u2019s parameters by clicking on the settings symbol in the top right corner of the code editor. In this section, you can view a strategy\u2019s parameters or edit these parameters too.

    There 4 sections for configuring your parameters:

    "},{"location":"python_build/python-build-config-parameters/#instruments","title":"Instruments","text":"
    • Here you can select the allowed exchanges from the drop box given on the left (eg: NASDAQ, NYSE, NSE etc.)
    • Once you have selected the exchange you can search the instrument in the search-box right beside it
    "},{"location":"python_build/python-build-config-parameters/#strategy-settings","title":"Strategy Settings","text":"
    • Here you can select the candle size, it is the size of candle on which you are running your strategy is going to be executed
    • You can even select the mode i.e. INTRADAY or DELIVERY
    "},{"location":"python_build/python-build-config-parameters/#order-settings","title":"Order Settings","text":"
    • You can adjust your orders, on how they will act when the strategy is 'Resumed' or strategy is 'Exited'
    • Resume Positions from Start: If you have previous trades in your strategy, you can resume your strategy without deleting or overwriting them. Only applicable for DELIVERY mode.
    • Exit Intraday Orders on Stop: If checked, strategy will square-off positions automatically at the end of each trading day.
    • Max Order Count: Maximum number of orders your strategy will execute per day. Once this limit is completed for the day, all BUY/SELL signals for new orders would be automatically ignored.
    • Crossover Accuracy Decimal: When running a crossover strategy, the number of decimals of the underlying indicators to be taken do decide an upward cut, downward cut or no cut.
    • Credit Exposure Factor: Applicable only for Live Trading. Use this to set the exposure limit given by your broker. System will take available funds as 'current fund balance X credit exposure factor' for executing the strategy
    "},{"location":"python_build/python-build-config-parameters/#user-parameters","title":"User Parameters","text":"
    • Use this option to pass various values of the strategy parameters from outside, without changing the code base for every execution. They are accessible as a dictionary called strategy_parameters inside your strategy class' constructor method.
    • You can customize/create your own parameters for the strategy. Click on +Add New Parameter to begin adding them. They should match with the parameters you have defined in your Python class.

    Once Strategy and User Parameters are configured, you can follow these steps to execute your strategy.

    "},{"location":"python_build/python-build-config-parameters/#follow-these-simple-steps-to-test-the-strategys-performance","title":"Follow these simple steps to test the strategy's performance","text":"

    Step 1

    After clicking Save & Start, a pop-up window will appear.

    Step 2

    In the customizations section, choose Backtesting to backtest or Paper Trading to Paper Trade a strategy.

    Select the duration option in the customizations section. Add the desired date and time, as well as the quantity/lots. In Backtesting, you will need to put the start date and end date along with time.

    In Paper Trading, you only need to add the start and end time.

    Step 3

    In the Strategy Configuration section, you can check the parameters added or modified by you.

    Step 4

    To begin testing the strategy, click on Execute.

    Step 5

    Go to the Analytics section to see the returns and performance of the strategy visualized.

    Note:

    The use of Paper Trading would be available from Monday - Friday (excluding exchange's holidays) from 9 AM to 16:00 PM. You can code your strategy & analyze the strategy results 24x7.

    Go to the Logs section to see the step-by-step execution of the strategy in logs.

    You can rename a strategy by clicking the edit symbol beside the strategy name.

    "},{"location":"python_build/python-build-getstarted/","title":"Setup your Workspace","text":""},{"location":"python_build/python-build-getstarted/#how-to-get-started-with-python-build","title":"How to get started with Python Build?","text":"

    To start developing your own strategy, you must first activate a plan from the Pricing section. Select the Developers tab in the Pricing section and select a plan of your choice. There is currently one developer plan available:

    • Advanced Developer Plan: Develop your own Algorithmic Trading Strategy for Free along with Analytics support, concurrent Strategy Executions, Professional Support, and more.

    After selecting your plan, you will be able to begin coding. You can either edit the preloaded Ready templates or use the My Coded Strategies section to create your own strategies.

    "},{"location":"python_build/python-build-introduction/","title":"Python Build Web","text":""},{"location":"python_build/python-build-introduction/#introduction","title":"Introduction","text":"

    Now you can code your own strategy easily using our Python Build service! Begin coding your own strategy from scratch, or modify some of our ready-made templates to suit your needs. Get access to our state-of-the-art AlgoBulls Core Trading Engine, which automatically leverages our infrastructure so that you can access the latest historical data to gauge the performance of your strategies. Tweak the various parameters of your strategy to choose the ideal instrument, indicator values, and profit loss percentages as per your needs! View the performance of your strategy using our visual analytics feature and continue to tweak until you are satisfied with the performance. Get your strategy approved for live trading from our experts and deploy it on 30+ supported brokers without coding any broker integration logic.

    Select Python Build from the navigation bar on the left to know more.

    "},{"location":"python_build/python-build-introduction/#an-overview","title":"An overview","text":"

    Running Strategies: This section shows how many strategies are currently active and running in your account.

    Strategies Saved: This displays the number of strategies saved in your AlgoBulls account. It also shows the number of maximum strategies that you can save as per your current plan.

    Execution Time Consumed: You can view the number of minutes that have been used for Backtesting or Paper Trading your strategies.

    Note:

    Paper Trading would be available from Monday - Friday (excluding NSE/NASDAQ holidays) within the trading time of that particular exchange. You can code your strategy, execute on Backtesting mode or analyse the strategy results 24x7.

    Analytics Support: This shows whether your analytics support is active. Analytics support is not available to free plan users.

    Professional Support: This section connects you to other professional support forums for additional support while developing the strategy.

    Active Plan: This section displays the current plan active on your AlgoBulls account.

    Ready Templates: Ready-to-use templates that you can modify and test.

    My Coded Strategies: Strategies that have been coded and saved by you are displayed here. This includes new and modified strategies developed by you.

    Need Support: You can raise support for the particular statregy from here make sure your stategy is present in My Coded Strategies section

    Quick Help: Resources to help you code better.

    "},{"location":"python_build/python-build-professional/","title":"Python Build Professional Support","text":""},{"location":"python_build/python-build-professional/#are-you-an-experienced-trader-with-limited-coding-experience","title":"Are you an Experienced Trader with Limited Coding Experience?","text":"

    If you're an experienced trader who excels at building trading strategies based on technical analysis but lacks the coding expertise to implement them, Python Build offers you the perfect solution \u2013 our Python Build Professional Support.

    "},{"location":"python_build/python-build-professional/#how-can-python-build-professional-support-help-you","title":"How Can Python Build Professional Support Help You?","text":"

    Our Python Build Professional Support bridges the gap between your market expertise in technical analysis and our proficiency in coding and algo trading strategy development. We understand that not everyone is a coding wizard, and that's where our professional support comes in.

    "},{"location":"python_build/python-build-professional/#getting-started","title":"Getting Started","text":"

    To take advantage of our Python Build Professional Support, follow these simple steps:

    1. Click on \"Professional Support\" - Look for the \"Professional Support\" button on the Python Build Web splash and click on it to get started.

    2. Describe Your Strategy - Once you're in the professional support interface, you'll be prompted to describe your trading strategy. You can provide details on how you want your strategy to work, including entry and exit criteria, risk management rules, and any specific requirements you have.

      Sample Prompt: \"I want a strategy that buys stocks when the 50-day moving average crosses above the 200-day moving average and sells when it crosses below. Additionally, I'd like a stop-loss of 5% and a take-profit at 10%.\"

    3. Indicate Technical Indicators - Specify which technical indicators you want to use in your strategy. You can mention indicators like moving averages, RSI, MACD, or any others that are crucial for your trading approach.

    4. Submit Your Request - Once you've filled in the necessary information, click on the \"Submit\" button. Your request will be sent to our professional support team.

    "},{"location":"python_build/python-build-professional/#what-happens-next","title":"What Happens Next?","text":"

    Our dedicated professional support team will promptly review your request. They will connect with you to gather any additional details if needed and ensure they have a clear understanding of your requirements.

    Our team of experienced Python developers and algo trading experts will then get to work on implementing your strategy according to your specifications. We'll ensure that your strategy is coded efficiently and effectively, leveraging the power of Python Build.

    You can expect to receive your custom-coded trading strategy as soon as possible, allowing you to put your trading expertise to work without the coding hassle.

    With Python Build's Professional Support, you can confidently bring your trading ideas to life and stay ahead in the competitive world of stock market trading. Start automating your strategies today!

    "},{"location":"python_build/python-build-view-results/","title":"Analytics","text":""},{"location":"python_build/python-build-view-results/#how-to-view-the-results","title":"How to view the Results?","text":"

    Once you start the strategy, it may take a while for it to complete the execution. You can switch to the Analytics tab after you run your strategy. Even if the strategy execution is not complete, you will still see intermediate results.

    Analytics: In the analytics section, you can view a strategy\u2019s Stats & various other metrics in the form of graphs like P&L.

    "},{"location":"python_build/python-build-view-results/#stats","title":"Stats","text":"

    In this section you can see the total returns, sharpe ratio, sortino ratio, volatility, Max Drawdown, Total wins or Loses, Total short or long trades, hit ratio, number of trades, average trades per day, max profit, max loss, average profit per winning trade, average loss per losing trade.

    "},{"location":"python_build/python-build-view-results/#cumulative-returns","title":"Cumulative Returns","text":""},{"location":"python_build/python-build-view-results/#profit-loss-currency-or","title":"Profit & Loss (Currency or %)","text":"

    The trade by trade P&L in Currency or Percentage.

    "},{"location":"python_build/python-build-view-results/#end-of-year-returns-plot","title":"End of Year Returns Plot (%)","text":""},{"location":"python_build/python-build-view-results/#monthly-returns-histogram","title":"Monthly Returns Histogram (%)","text":""},{"location":"python_build/python-build-view-results/#monthly-returns-heatmap","title":"Monthly Returns Heatmap (%)","text":""},{"location":"python_build/python-build-view-results/#daily-returns","title":"Daily Returns (%)","text":""},{"location":"python_build/python-build-view-results/#underwater-drawdown-plot","title":"Underwater Drawdown Plot (%)","text":""},{"location":"python_build/python-build-view-results/#pl-book","title":"P&L Book","text":"

    View detailed trade by trade report. Premium users can analyze this data in the form of heatmaps for Gross Profit & Loss, Trading Volume & Total number of Trades.

    "},{"location":"python_build/python-build-view-results/#user-log","title":"User Log","text":"

    Real-time logs from strategy execution are displayed in this section. Use these logs to debug your strategy\u2019s behavior and performance.

    "},{"location":"python_build/python-build-view-results/#order-history","title":"Order History","text":"

    View the order state transition for every order placed by your strategy in-depth.

    "},{"location":"python_build/python-build-view-results/#pl-table","title":"P&L Table","text":"

    View comprehensive trade-by-trade report in a user-friendly tabular format. This table provides details on entry and exit trades, prices, timestamps, transaction types, and trade-by-trade profit and loss. You can display these figures in either percentages or dollars.

    "},{"location":"python_build/strategy_guides/common_options_strategy/","title":"Options Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"python_build/strategy_guides/common_options_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyOptionsEMACrossover(StrategyOptionsBaseV2)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every options strategy is a child class of the StrategyOptionsBaseV2 class.\n
    "},{"location":"python_build/strategy_guides/common_options_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'options_ema_crossover'\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next, we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.no_of_strikes_away_ce = self.strategy_parameters['NO_OF_STRIKES_AWAY_CE']\nself.no_of_strikes_away_p = self.strategy_parameters['NO_OF_STRIKES_AWAY_PE']\nself._strike_direction_ce = self.strategy_parameters['STRIKES_DIRECTION_CE']\nself._strike_direction_pe = self.strategy_parameters['STRIKES_DIRECTION_PE']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may change for different strategies.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters.

    try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg:

    self.main_order = None            # We save the entry order in this variable\nself.stoploss_order = None        # We save the corresponding stoploss exit order of the entry order in this variable\n
    We initialize the variables with a None value. !!! Note There could be more strategy variables required as per the strategy requirement.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"python_build/strategy_guides/common_options_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"python_build/strategy_guides/common_options_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
    self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags.

    eg:

    self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"python_build/strategy_guides/common_options_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag

    eg:

    self.order_tag_manager.remove_tags(tags=entry_key)\n

    Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in order tags.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s).

    eg:

    self.order_tag_manager.remove_order(main_order)\n
    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_internals","title":"get_internals","text":"
    Returns the values i.e. both the entry and exit orders stored inside the tags list.\n
    "},{"location":"python_build/strategy_guides/common_options_strategy/#5-child-instruments-calculation","title":"5. Child instruments calculation","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#get_ltp","title":"get_ltp","text":"

    Fetch the ltp of the base instrument (instrument set while executing strategy)

    ltp = self.broker.get_ltp(self.underlying_instrument)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#options_instruments_set_up_local","title":"options_instruments_set_up_local","text":"

    Get the ATM ITM and OTM lists of the child instrument based on the LTP

    self.options_instruments_set_up_local(self.underlying_instrument, tradingsymbol_suffix, ltp)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_child_instrument_details","title":"get_child_instrument_details","text":"

    Select a child instrument from the lists of ATM, ITM, and OTM based on the strike direction and no of strikes given for the child instrument

    child_instrument = self.get_child_instrument_details(self.underlying_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#6-entry-methods","title":"6. Entry Methods","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create a get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selectd_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#7-exit-methods","title":"7. Exit Methods","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#8-other-common-methods","title":"8. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"python_build/strategy_guides/common_options_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#options_instruments_set_up_local_1","title":"options_instruments_set_up_local","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch the ATM, ITM, and OTM lists of the child instruments based on the LTP of the base instrument.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_child_instrument_details_1","title":"get_child_instrument_details","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch a single child instrument based on the no of strikes and strike direction.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#9-cleanup","title":"9. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#10-check-out-our-docs-for-developed-options-strategies","title":"10. Check out our docs for developed Options strategies","text":"
    • Options Bear Call Ladder
    • Options Bear Put Ladder
    • Options Bull Call Ladder
    • Options Bull Put Ladder
    • Options Long Iron Butterfly
    • Options Straddle
    • Options Strangle

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/","title":"Regular Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"python_build/strategy_guides/common_regular_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyFuturesEMACrossover(StrategyBase)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every strategy is a child class of the StrategyBase class.\n
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'futures_ema_crossover'\n

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format, as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may be different for different strategies.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters. try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg: self.order_tag_manager = None

    We initialize the variables with a None value.

    Note

    There could be more strategy variables required as per the strategy requirement.\n
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
      self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags. eg:
      self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag eg:
      self.order_tag_manager.remove_tags(tags=entry_key)\n
    • Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in the order tags.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s). eg:
    self.order_tag_manager.remove_order(main_order)\n

    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#get_internals","title":"get_internals","text":"
    • Returns the values i.e. both the entry and exit orders stored inside the tags list.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#5-entry-methods","title":"5. Entry Methods","text":""},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create an get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selected_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#6-exit-methods","title":"6. Exit Methods","text":""},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit:","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#7-other-common-methods","title":"7. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#8-cleanup","title":"8. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#10-check-out-our-docs-for-developed-regular-strategies","title":"10. Check out our docs for developed Regular strategies","text":"
    • Aroon Crossover
    • Bollinger Bands
    • EMA Crossover
    • Inverse EMA Scalping
    • Reverse RSI
    • Stochastic Crossover
    • VWAP Crossover

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"python_build/strategy_guides/structure/","title":"Code Structure of Strategy","text":"

    Coding Prerequisites

    • For pyalgotrading check here.
    • For Python Build Web check here.
    "},{"location":"python_build/strategy_guides/structure/#methods","title":"Methods","text":""},{"location":"python_build/strategy_guides/structure/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function helps you choose which trading instruments you want your strategy to work with. The system will use this function to go through each instrument one by one, at each candle's time. You get to write code that decides whether to place an order for a specific instrument or not.

    "},{"location":"python_build/strategy_guides/structure/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function is where you can place orders for the instruments you selected earlier. It's executed for each instrument you picked in the previous function.

    "},{"location":"python_build/strategy_guides/structure/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    After you've entered a position for an instrument, this function is called for each of those instruments at each candle interval. You can use it to decide whether an instrument should be exited from the position.

    "},{"location":"python_build/strategy_guides/structure/#strategy_exit_position","title":"strategy_exit_position()","text":"

    In this function, you can close or exit positions for the instruments you marked for exiting in the previous function. It's done instrument by instrument.

    "},{"location":"python_build/strategy_guides/structure/#supporting-methods","title":"Supporting Methods","text":"

    You have the following supporting methods:

    "},{"location":"python_build/strategy_guides/structure/#init","title":"init()","text":"

    This method is like a starter for your strategy. It checks if the values you give it make sense and sets up some useful information for your strategy to use.

    "},{"location":"python_build/strategy_guides/structure/#initialize","title":"initialize()","text":"

    This method is called when your strategy begins, both at the very start and at the beginning of each trading day. It's like setting up your strategy's workspace and giving your tools a starting position.

    "},{"location":"python_build/strategy_guides/structure/#name","title":"name()","text":"

    This method gives your strategy a special name. It's like giving your strategy a unique nickname.

    "},{"location":"python_build/strategy_guides/structure/#versions_supported","title":"versions_supported()","text":"

    This method lets you specify which version of the AlgoBulls Platform your strategy works well with. It's like saying, \"My strategy is ready for this specific version of the platform.\"

    "},{"location":"python_build/strategy_guides/structure/#utility-functions","title":"Utility Functions","text":"

    You have the following utility function to be used in this strategy :

    Links

    • Strategy Structure (regular)
    • Strategy Structure (options)
    "},{"location":"python_build/strategy_guides/structure/#get_crossover_value","title":"get_crossover_value()","text":"This handy function calculates something called the \"crossover value\" for you. It's like having a calculator that figures out this specific value for your strategy."},{"location":"python_build/strategy_guides/structure/#flowchart","title":"Flowchart","text":"

    Once you create your own strategy or use a ready strategy from the pyalgostrategypool package, this is how it works internally on the AlgoBulls Core Trading Engine.

    "},{"location":"strategies/aroon_crossover/","title":"Aroon Crossover","text":"

    This is a trading strategy called \"Aroon Crossover\" implemented in Python using the PyAlgoTrading library. The strategy is based on the Aroon indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/aroon_crossover/#aroon-indicator","title":"Aroon Indicator","text":"
    • In the stock market, Aroon refers to the Aroon indicator, which is a technical analysis tool used to measure the strength and direction of a trend. It consists of two lines, the Aroon-Up line and the Aroon-Down line.

    • The Aroon-Up line measures the number of periods since the highest price within a given period, while the Aroon-Down line measures the number of periods since the lowest price within a given period. The Aroon indicator ranges from 0 to 100, with values closer to 100 indicating a strong trend and values closer to 0 indicating a weak or non-existent trend.

    • Traders and investors use the Aroon indicator to identify potential trend reversals, assess the strength of a trend, and generate buy or sell signals. For example, when the Aroon-Up line crosses above the Aroon-Down line, it may suggest a bullish trend, while a cross below may indicate a bearish trend.

    • It is important to note that the Aroon indicator is just one of many tools used in technical analysis, and its effectiveness can vary depending on market conditions and other factors. It is often used in conjunction with other indicators and analysis techniques to make informed trading decisions.

    Fig.1 - SPY candle chart (top), Aroon Indicator for that chart (bottom)"},{"location":"strategies/aroon_crossover/#strategy-overview","title":"Strategy Overview","text":"

    This strategy, called Aroon Crossover, implements a crossover strategy using the Aroon indicator. It generates entry and exit signals based on the crossover of Aroon Up and Aroon Down values.

    "},{"location":"strategies/aroon_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 The period for which we calculate the Aroon Value"},{"location":"strategies/aroon_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the Aroon Up and Aroon Down values for a given instrument based on the historical data. It uses the talib.AROON function from the Talib library to calculate the values. The method then determines the crossover of Aroon Up and Aroon Down and returns the corresponding entry or exit action.

    "},{"location":"strategies/bollinger_bands/","title":"Bollinger Bands","text":"

    This is a trading strategy called \"Bollinger Bands\" implemented in Python using the PyAlgoTrading library. The strategy is based on the bollinger bands indicator values.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/bollinger_bands/#bollinger-bands-indicator","title":"Bollinger Bands Indicator","text":"

    Bollinger Bands consists of a middle band (typically a 20-day Simple Moving Average) and two bands that represent the upper and lower price boundaries based on standard deviations. The bands adjust dynamically with market volatility.

    Key points about Bollinger Bands:

    • The middle band is a moving average, while the upper and lower bands are calculated by adding/subtracting standard deviations from the middle band.
    • Bollinger Bands help assess price volatility and identify potential overbought or oversold market conditions.
    • A narrowing of the bands (Bollinger Squeeze) suggests low volatility, often followed by increased volatility and potential price breakout.
    • Touching or exceeding the upper band may indicate an overbought market, while touching or falling below the lower band may suggest an oversold market.
    • Price reversals can be observed when the price moves from one band to the other.
    • The upper and lower bands can act as dynamic support and resistance levels.
    • Bollinger Bands are used in combination with other indicators and analysis techniques to make trading decisions. They are not a standalone strategy but provide valuable insights when combined with other tools like the RSI.
    Fig.1 - SPY candle chart (top) with Bollinger Bands (purple), 20 day standard deviation graph (bottom)"},{"location":"strategies/bollinger_bands/#strategy-overview","title":"Strategy Overview","text":"

    This strategy, called Bollinger Bands, is an implementation of the Bollinger Bands indicator. It uses the Bollinger Bands values to compare with previous candle's OPEN, HIGH, LOW and CLOSE values and generate entry and exit signals for trading instruments.

    "},{"location":"strategies/bollinger_bands/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which Bollinger Bands are calculated STANDARD_DEVIATION None between 0 to 10 Standard deviation (in percent) for upper and lower band from the signal bands"},{"location":"strategies/bollinger_bands/#decision-calculation","title":"Decision Calculation","text":"

    The get_decision method calculates the Bollinger Bands values for a given instrument based on the OHLC (Open, High, Low, Close) historical data. It uses the talib.BBANDS function from the Talib library to calculate the upper and lower bands. The method compares the previous candle's open, low, and close values with the upper and lower bands to determine the entry or exit action. If the conditions for a buy or sell signal are met, the corresponding action is returned.

    "},{"location":"strategies/ema_crossover/","title":"EMA Crossover","text":"

    This is a trading strategy called \"EMA Regular Order Strategy\" implemented in Python using the PyAlgoTrading library. The strategy is based on the exponential moving average crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/ema_crossover/#ema-indicator","title":"EMA indicator","text":"

    Exponential Moving Averages (EMAs) are a popular technical analysis tool used in the stock market. They are similar to Simple Moving Averages (SMAs), but they place greater emphasis on recent price data.

    Here is a summary of Exponential Moving Averages:

    • An Exponential Moving Average is a type of moving average that assigns more weight to recent prices, making it more responsive to current market conditions.
    • Unlike the SMA, which gives equal weight to all data points, the EMA assigns exponentially decreasing weights to older data points.
    • The formula for calculating an EMA involves using a smoothing factor or multiplier that determines the weight given to the previous EMA value and the current price.
    • The most common period used for EMAs is 12 and 26 days, representing short-term and long-term trends, respectively.
    • EMAs are commonly used to identify trend direction, support and resistance levels, and potential entry or exit points.
    • When the price crosses above the EMA, it may signal a bullish trend, while a cross below the EMA may suggest a bearish trend.
    • The EMA is more responsive to price changes compared to the SMA, making it useful for short-term trading strategies.
    • EMAs are often used in conjunction with other technical indicators, such as the Moving Average Convergence Divergence (MACD), to generate trading signals.
    • Traders and investors use Exponential Moving Averages to smooth out price fluctuations, identify trend reversals, and determine potential support and resistance levels. They provide a visual representation of the average price over a specific period, with greater weight given to recent prices.
    Fig.1 - IBM candle chart (top) with EMA (green) and SMA (red) lines"},{"location":"strategies/ema_crossover/#strategy-overview","title":"Strategy Overview","text":"

    This strategy, called EMA Regular Order Strategy, implements a crossover strategy using Exponential Moving Averages (EMA). It generates entry and exit signals based on the crossover of two EMAs.

    "},{"location":"strategies/ema_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD1 None greater than 0 Period (number of candles) by which EMA-1 is calculated TIME_PERIOD2 None greater than 0 Period (number of candles) by which EMA-2 is calculated"},{"location":"strategies/ema_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the two EMAs of the closing prices. It uses the talib.EMA function from the Talib library to calculate the EMAs. The method then determines the crossover between the two EMAs and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/inverse_ema_scalping/","title":"Inverse EMA Scalping","text":"

    This is a trading strategy called \"Inverse EMA Scalping Regular Order Strategy\" implemented in Python using the PyAlgoTrading library. The strategy is based on the exponential moving average crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebooks for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/inverse_ema_scalping/#what-is-inverse-ema","title":"What is Inverse EMA","text":"

    Inverse EMA, also known as Reverse Exponential Moving Average (REMA), is a variation of the Exponential Moving Average (EMA) in the stock market. While the EMA gives more weight to recent price data, the Inverse EMA assigns more weight to older data points.

    Here is a summary of Inverse EMA:

    • Inverse EMA is calculated by applying the EMA formula in reverse, giving greater weight to older data points and less weight to recent prices.
    • Instead of smoothing out price fluctuations like the EMA, the Inverse EMA amplifies them, making it more responsive to historical data.
    • The formula for calculating Inverse EMA is similar to the EMA, but it uses a different smoothing factor or multiplier that assigns higher weight to older data points.
    • The Inverse EMA is primarily used to identify historical patterns and potential turning points in the market.
    • When the price crosses above the Inverse EMA, it may suggest a potential reversal from a downtrend to an uptrend, and vice versa when the price crosses below the Inverse EMA.
    • Inverse EMA is not as widely used as the EMA or other moving averages, and its applications may vary among traders and analysts.
    • Inverse EMA is a less commonly used variation of the Exponential Moving Average. While the EMA is designed to provide a smoothed average of recent prices, the Inverse EMA emphasizes historical data, potentially highlighting significant turning points in the market. Traders and analysts who utilize the Inverse EMA may incorporate it into their technical analysis toolkit to complement other indicators and gain insights into price reversals and historical patterns.
    "},{"location":"strategies/inverse_ema_scalping/#strategy-overview","title":"Strategy Overview","text":"

    This strategy implements a scalping strategy using Exponential Moving Averages (EMA). It generates entry and exit signals based on the inverse crossover of two EMAs.

    "},{"location":"strategies/inverse_ema_scalping/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description LARGER_TIME_PERIOD None greater than 0 Period (number of candles) by which large period EMA is calculated SMALLER_TIME_PERIOD None greater than 0 Period (number of candles) by which short period EMA is calculated"},{"location":"strategies/inverse_ema_scalping/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the inverse crossover of the two EMAs of the closing prices. It uses the talib.EMA function from the Talib library to calculate the EMAs. The method then determines the inverse crossover between the two EMAs and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/macd_crossover/","title":"MACD Crossover","text":"

    This is a trading strategy called \"MACD Crossovers\" implemented in Python using the PyAlgoTrading library. The strategy is based on the MACD indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/macd_crossover/#macd-crossover_1","title":"MACD Crossover","text":"

    In the dynamic world of stock trading, mastering effective strategies is the key to success. The Moving Average Convergence Divergence (MACD) Crossover strategy is a powerful tool that can help traders identify potential entry and exit points in the stock market.

    Here is a summary of RSI and MACD in the stock market: - The MACD is a trend-following momentum indicator that consists of two lines: the MACD line and the Signal line. - A bullish signal is generated when the MACD line crosses above the Signal line, indicating a potential uptrend. - Conversely, a bearish signal occurs when the MACD line crosses below the Signal line, suggesting a potential downtrend. - When the MACD crosses above the Signal line, it's a signal to consider a long (BUY) position. - Conversely, when the MACD crosses below the Signal line, it may be time to think about a short (SELL) position.

    "},{"location":"strategies/macd_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The MACD Crossover strategy is a robust approach that leverages the power of the MACD indicator to identify potential entry and exit points in the stock market.

    "},{"location":"strategies/macd_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIMEPERIOD_FAST None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SLOW None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SIGNAL None greater than 0 Period (number of candles) by which moving average is calculated"},{"location":"strategies/macd_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the inverse crossover of the two EMAs of the closing prices. It uses the talib.MACD function from the Talib library to calculate the MACDs. The method then determines the crossover between the two MACDs and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/mean_reversion_bollinger_bands/","title":"Mean Reversion Bollinger Bands","text":"

    This is a trading strategy called \"Mean Reversion Bollinger Bands\" implemented in Python using the PyAlgoTrading library. The strategy is based on the bollingerbands indicator.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/mean_reversion_bollinger_bands/#mean-reversion-bollinger-bands_1","title":"Mean Reversion Bollinger Bands","text":"

    In the dynamic world of stock trading, effective strategies can make all the difference. The Mean Reversion Bollinger Bands strategy is a powerful tool that traders can use to identify potential entry and exit points in the stock market.

    Here is a summary of RSI and MACD in the stock market: - Bollinger Bands are a volatility indicator that consists of a middle band (usually a simple moving average), an upper band, and a lower band. These bands expand and contract based on price volatility. The strategy leverages these bands to identify potential mean reversion opportunities. - Mean reversion is the idea that prices tend to revert to their historical average over time. In this strategy, traders look for situations where the price deviates significantly from the middle Bollinger Band and expect it to revert to the mean. - The Mean Reversion Bollinger Bands strategy involves identifying price movements that touch or cross the upper or lower bands and anticipating a reversal. - When the price touches the upper band, traders may consider a short (SELL) position, expecting a downward move. - Conversely, when the price touches the lower band, it may signal a potential long (BUY) opportunity, anticipating an upward move.

    "},{"location":"strategies/mean_reversion_bollinger_bands/#strategy-overview","title":"Strategy Overview","text":"

    The Mean Reversion Bollinger Bands strategy is a robust approach that leverages the power of Bollinger Bands to identify potential mean reversion opportunities in the stock market.

    "},{"location":"strategies/mean_reversion_bollinger_bands/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which Bollinger Bands are calculated STANDARD_DEVIATION None between 0 to 10 Standard deviation (in percent) for upper and lower band from the signal bands"},{"location":"strategies/mean_reversion_bollinger_bands/#decision-calculation","title":"Decision Calculation","text":"

    The get_decision method calculates the Bollinger Bands values for a given instrument based on the OHLC (Open, High, Low, Close) historical data. It uses the talib.BBANDS function from the Talib library to calculate the upper and lower bands. The method compares the previous candle's open, low, and close values with the upper and lower bands to determine the entry or exit action. If the conditions for a buy or sell signal are met, the corresponding action is returned.

    "},{"location":"strategies/options_bear_call_ladder/","title":"Options Bear Call Ladder","text":""},{"location":"strategies/options_bear_call_ladder/#options-bear-call-ladder","title":"Options Bear Call Ladder","text":"

    This class implements the Options Bear Call Ladder strategy.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bear_call_ladder/#bear-call-ladder","title":"Bear Call Ladder","text":"
    • In the stock market, an options bear call ladder is a strategy that involves buying and selling call options with different strike prices to profit from a moderate bearish outlook on the underlying asset. It is a complex strategy that combines both long and short call positions.

    • To create a bear call ladder, an investor typically does the following:

      1. Sells a lower strike call option.
      2. Buys two higher strike call options.
      3. Sells a final even higher strike call option.
    • The bear call ladder aims to generate a limited profit if the price of the underlying asset remains below the middle strike price at expiration. The strategy benefits from time decay and a moderate decrease in the price of the underlying asset.

    • The maximum profit potential of the bear call ladder is achieved when the price of the underlying asset is below the middle strike price at expiration. If the price declines further, the profit potential remains limited. However, if the price rises above the higher strike price, the strategy can result in losses.

    • The key feature of the bear call ladder is the combination of short call options, which generate premium income, and long call options, which provide protection against unlimited losses in case the price of the underlying asset rises sharply.

    • Traders implementing the bear call ladder strategy should carefully consider factors such as the strike prices, premium costs, and expiration date to assess their risk-reward profile. It's important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    • Please be aware that options trading can be complex and involves significant risks. It is always recommended to consult with a qualified financial advisor or broker before engaging in options trading activities.

    "},{"location":"strategies/options_bear_call_ladder/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 0 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bear_put_ladder/","title":"Options Bear Put Ladder","text":""},{"location":"strategies/options_bear_put_ladder/#options-bear-put-ladder","title":"Options Bear Put Ladder","text":"

    This is a template for the Options Bear Put Ladder strategy. The strategy involves the combination of buying and selling put options to profit from a downward price movement in the underlying asset. It utilizes multiple legs with different strike prices and transaction types to create a ladder-like structure.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bear_put_ladder/#bear-put-ladder","title":"Bear Put Ladder","text":"
    • In the stock market, an options bear put ladder is a strategy that combines buying and selling put options with different strike prices to profit from a moderate bearish view on the underlying asset. It involves a mix of long and short put positions.

    • To implement a bear put ladder strategy, an investor generally follows these steps:

      1. Buys a put option with a lower strike price.
      2. Sells two put options with higher strike prices.
      3. Buys a final put option with an even higher strike price.
    • The goal of the bear put ladder is to generate a limited profit if the price of the underlying asset remains below the middle strike price at expiration. The strategy benefits from time decay and a moderate decline in the price of the underlying asset.

    • The maximum profit potential is reached when the price of the underlying asset is below the middle strike price at expiration. If the price continues to decrease, the profit potential remains limited. However, if the price rises above the higher strike price, the strategy can result in losses.

    • The bear put ladder strategy combines short put options to generate premium income and long put options to provide protection against significant losses in case the price of the underlying asset declines substantially.

    • Traders implementing the bear put ladder strategy should consider factors such as the strike prices, premium costs, and expiration date to assess the risk-reward profile. It's crucial to have a comprehensive understanding of options trading and associated risks before employing this strategy in the stock market.

    • Keep in mind that options trading can be complex and involves substantial risks. It is advisable to consult with a qualified financial advisor or broker before engaging in options trading activities.

    "},{"location":"strategies/options_bear_put_ladder/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 0 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bull_call_ladder/","title":"Options Bull Call Ladder","text":""},{"location":"strategies/options_bull_call_ladder/#options-bull-call-ladder","title":"Options Bull Call Ladder","text":"

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bull_call_ladder/#bull-call-ladder","title":"Bull Call Ladder","text":"
    • In the stock market, an options bull call ladder is a strategy that involves buying and selling call options with different strike prices to profit from a moderate bullish outlook on the underlying asset. It is a complex strategy that combines both long and short call positions.

    • To create a bull call ladder, an investor typically does the following:

      1. Buys a lower strike call option.
      2. Sells two higher strike call options.
      3. Buys a final even higher strike call option.
    • The key feature of the bull call ladder is that it provides limited risk and potential for limited profit. The strategy is constructed in such a way that it can benefit from both a moderate rise in the price of the underlying asset and from time decay.

    • The profit potential of the bull call ladder is highest if the price of the underlying asset rises to the level of the middle strike price at expiration. In this case, the investor can achieve the maximum profit. If the price of the underlying asset rises above the middle strike price, the profit potential is limited.

    • On the other hand, if the price of the underlying asset remains below the lower strike price or declines, the strategy can result in losses. The maximum loss occurs if the price falls below the lower strike price.

    • The bull call ladder is a moderately bullish strategy that aims to benefit from both time decay and the potential for a moderate increase in the price of the underlying asset. Traders implementing this strategy should carefully consider factors such as the strike prices, premium costs, and expiration date to assess their risk-reward profile.

    • It is important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    "},{"location":"strategies/options_bull_call_ladder/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 4 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bull_put_ladder/","title":"Options Bull Put Ladder","text":""},{"location":"strategies/options_bull_put_ladder/#options-bull-put-ladder","title":"Options Bull Put Ladder","text":"

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bull_put_ladder/#bull-put-ladder","title":"Bull Put ladder","text":"
    • In the stock market, an options bull put ladder is a strategy that involves buying and selling put options with different strike prices to profit from a moderate bullish outlook on the underlying asset. It is a complex strategy that combines both long and short put positions.

    • To create a bull put ladder, an investor typically does the following:

      1. Sells a higher strike put option.
      2. Buys two lower strike put options.
      3. Sells a final even lower strike put option.
    • The key feature of the bull put ladder is that it provides limited risk and potential for limited profit. The strategy is constructed in such a way that it can benefit from both a moderate rise in the price of the underlying asset and from time decay.

    • The profit potential of the bull put ladder is highest if the price of the underlying asset rises to the level of the middle strike price at expiration. In this case, the investor can achieve the maximum profit. If the price of the underlying asset rises above the middle strike price, the profit potential is limited.

    • On the other hand, if the price of the underlying asset remains above the higher strike price or increases, the strategy can result in losses. The maximum loss occurs if the price rises above the higher strike price.

    • The bull put ladder is a moderately bullish strategy that aims to benefit from both time decay and the potential for a moderate increase in the price of the underlying asset. Traders implementing this strategy should carefully consider factors such as the strike prices, premium costs, and expiration date to assess their risk-reward profile.

    • It is important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    "},{"location":"strategies/options_bull_put_ladder/#initialization","title":"Initialization","text":"

    The __init__ method initializes the strategy and accepts parameters for configuring the strategy. The parameters are:

    Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 4 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bull_put_ladder/#additional-notes","title":"Additional Notes","text":"
    • The transaction_type_map, tradingsymbol_suffix_map, and strike_direction_map dictionaries are used for mapping transaction types, trading symbol suffixes, and strike directions, respectively.

    • The strategy supports a single allowed expiry date, which can be modified for multiple expiry dates.

    • The strategy uses the get_options_instrument_with_strike_direction method from the base class to fetch child instruments.

    • The initialize method sets up the list of instruments processed for the day.

    • The options_instruments_set_up_local method sets up the Call and Put Options instruments for a given base instrument.

    • The strategy_select_instruments_for_entry method selects instruments for entry by setting up child instruments and appending them to the selected instruments list.

    • The strategy_enter_position method

    "},{"location":"strategies/options_long_iron_butterfly/","title":"Options Long Iron Butterfly","text":""},{"location":"strategies/options_long_iron_butterfly/#options-long-iron-butterfly","title":"Options Long Iron Butterfly","text":"

    This is a template for implementing the Options Long Iron Butterfly strategy in Python.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)
    "},{"location":"strategies/options_long_iron_butterfly/#long-iron-butterfly","title":"Long Iron Butterfly","text":"
    • In the stock market, an options long iron butterfly is a complex strategy that involves buying two options with the same expiration date but different strike prices. It combines elements of both a bullish and bearish strategy and is designed to profit from low volatility in the underlying asset.

    • To create a long iron butterfly, an investor typically does the following:

      1. Buys an at-the-money (ATM) put option.
      2. Buys an ATM call option.
      3. Sells an out-of-the-money (OTM) put option with a lower strike price.
      4. Sells an OTM call option with a higher strike price.
    • The key feature of the long iron butterfly is that the sold options (OTM put and OTM call) help offset the cost of the purchased options (ATM put and ATM call). This results in a limited-risk, limited-reward strategy.

    • The strategy profits when the price of the underlying asset remains within a specific range, known as the \"profit zone.\" The profit zone is determined by the strike prices of the options involved in the strategy. If the price of the underlying asset is within this range at expiration, the investor can achieve the maximum profit.

    • However, if the price of the underlying asset moves significantly beyond the profit zone, the strategy can result in losses. The maximum loss occurs if the price falls below the lower strike price or rises above the higher strike price.

    • The long iron butterfly is commonly used when traders anticipate low volatility in the underlying asset. It is a neutral strategy that seeks to benefit from the passage of time and a decrease in implied volatility. Traders implementing this strategy should carefully analyze factors such as the strike prices, premium costs, and expiration date to determine their risk-reward profile.

    • It is important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    "},{"location":"strategies/options_long_iron_butterfly/#strategy-parameters","title":"Strategy Parameters","text":"

    The strategy accepts the following parameters:

    Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_FOUR_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_FOUR_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_FOUR_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_FOUR_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_straddle/","title":"Options Straddle","text":""},{"location":"strategies/options_straddle/#options-straddle","title":"Options Straddle","text":"

    This class represents the implementation of an options straddle trading strategy.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_straddle/#straddle-options","title":"Straddle Options","text":"
    • In the stock market, an options straddle is a strategy where an investor simultaneously purchases a call option and a put option with the same strike price and expiration date on a particular underlying asset, such as a stock. The purpose of this strategy is to profit from significant price movements in the underlying asset, regardless of whether the price goes up or down.

    • By using an options straddle, the investor is essentially betting on volatility rather than the direction of the price movement. If the price of the underlying asset experiences a substantial increase or decrease, either the call or put option will generate profits, offsetting any losses from the other option. The potential for profit is highest when there is a significant price swing, while the risk is limited to the cost of purchasing the options.

    • This strategy is often employed when traders anticipate an upcoming event or announcement that could cause significant market volatility, such as earnings reports or regulatory decisions. The goal is to take advantage of the resulting price movement, regardless of whether it is upward or downward.

    • It is important to note that options straddles can be risky as they require significant price movements to be profitable. If the price remains relatively stable, the trader may experience losses due to the cost of purchasing the options. Therefore, careful consideration of market conditions and risk management is crucial when implementing an options straddle strategy.

    "},{"location":"strategies/options_straddle/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description _leg_one_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_one_tradingsymbol_suffix 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_one_strike_direction 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_one_number_of_strikes 0 greater than 0 Number of strikes for leg one. _leg_two_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_two_tradingsymbol_suffix 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_two_strike_direction 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_two_number_of_strikes 0 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_strangle/","title":"Options Strangle","text":""},{"location":"strategies/options_strangle/#options-strangle","title":"Options Strangle","text":"

    The StrategyOptionsStrangle class is a strategy template for trading options strangles. It is derived from the StrategyOptionsBaseV2 class.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_strangle/#strangle-options","title":"Strangle Options","text":"
    • In the stock market, an options strangle is a strategy where an investor simultaneously buys or sells a call option and a put option on the same underlying asset but with different strike prices and the same expiration date. The purpose of this strategy is to profit from significant price volatility in the underlying asset.

    • Unlike an options straddle, which involves purchasing options at the same strike price, an options strangle involves selecting different strike prices. Typically, the investor buys an out-of-the-money call option (with a strike price above the current market price) and an out-of-the-money put option (with a strike price below the current market price).

    • The strategy aims to benefit from a significant price movement in either direction. If the price of the underlying asset moves significantly upwards, the call option can generate profits. Conversely, if the price moves significantly downwards, the put option can generate profits. The investor is essentially betting on increased price volatility rather than predicting the direction of the price movement.

    • Options strangles are commonly used when traders anticipate a substantial price movement but are unsure about the direction. This strategy allows for potential profits in either an upward or downward market scenario. However, it is important to note that options strangles can involve higher risks, as the underlying asset's price must move significantly to offset the cost of purchasing both options.

    • Traders employing options strangles should carefully consider factors such as the expected price volatility, the expiration date, and the costs associated with purchasing the options. Implementing risk management techniques and monitoring market conditions are essential when utilizing an options strangle strategy.

    "},{"location":"strategies/options_strangle/#parameters","title":"Parameters","text":"

    The following parameters can be set in the Parameters Configuration Pane:

    Name Default Value Expected Value Description _leg_one_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_one_tradingsymbol_suffix 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_one_strike_direction 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_one_number_of_strikes 2 greater than 0 Number of strikes for leg one. _leg_two_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_two_tradingsymbol_suffix 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_two_strike_direction 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_two_number_of_strikes 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/reverse_rsi/","title":"Reverse RSI","text":"

    This is a trading strategy called \"Reverse RSI\" implemented in Python using the PyAlgoTrading library. The strategy is based on the relative strength index indicator.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/reverse_rsi/#relative-strength-index","title":"Relative Strength Index","text":"

    RSI stands for Relative Strength Index, and it is a popular technical indicator used in the stock market to analyze the strength and momentum of a price trend. The RSI provides insights into whether a stock is overbought or oversold and can help identify potential trend reversals.

    Here is a summary of RSI in the stock market:

    • The Relative Strength Index (RSI) is a momentum oscillator that measures the speed and change of price movements.
    • It compares the magnitude of recent gains to recent losses over a specified period, typically 14 days, and generates a value between 0 and 100.
    • The RSI is calculated using a formula that involves averaging the upward price movements (gains) and the downward price movements (losses) over the chosen period.
    • A high RSI value (typically above 70) indicates that a stock is overbought, meaning it may have experienced a significant price increase and could be due for a correction or pullback.
    • Conversely, a low RSI value (typically below 30) suggests that a stock is oversold, indicating it may have experienced a significant price decline and could be poised for a potential rebound or upward move.
    • Traders often use RSI as a tool to identify potential trend reversals, as extreme RSI readings (above 70 or below 30) can signal a potential change in the direction of the price trend.
    • Additionally, traders may look for bullish or bearish divergences between the RSI and the price chart, which can provide further indications of a potential trend reversal.
    • The RSI is just one tool among many in technical analysis, and it is often used in conjunction with other indicators and analysis techniques to make more informed trading decisions.

    Overall, the Relative Strength Index (RSI) is a widely used indicator in the stock market to assess the strength and momentum of price movements. It helps traders identify overbought and oversold conditions, as well as potential trend reversals, which can assist in making trading decisions.

    Fig.1 - MCD candle chart (top) and RSI plot (bottom)"},{"location":"strategies/reverse_rsi/#strategy-overview","title":"Strategy Overview","text":"

    The Reverse RSI strategy is a trading strategy based on the Relative Strength Index (RSI) indicator. It generates entry and exit signals based on the reverse crossover of the RSI values from specified overbought and oversold levels.

    "},{"location":"strategies/reverse_rsi/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which RSI is calculated OVERBOUGHT_VALUE None greater than 0 RSI value above which stocks are considered over-bought OVERSOLD_VALUE None greater than 0 RSI value below which stocks are considered over-sold"},{"location":"strategies/reverse_rsi/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover values for the RSI indicator using historical data of the instrument. It compares the RSI values with the overbought and oversold levels to determine the entry and exit actions. The method returns the crossover values for oversold and overbought levels.

    "},{"location":"strategies/rsi_macd_crossover/","title":"RSI MACD Crossover","text":"

    This is a trading strategy called \"RSI MACD Crossovers\" implemented in Python using the PyAlgoTrading library. The strategy is based on the RSI and MACD indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/rsi_macd_crossover/#rsi-and-macd-crossover","title":"RSI and MACD Crossover","text":"

    In the dynamic world of stock trading, effective strategies are the key to success. The combination of two powerful technical indicators, the Moving Average Convergence Divergence (MACD) and the Relative Strength Index (RSI), can be a game-changer for traders. This strategy leverages MACD and RSI crossovers to identify potential entry and exit points in the stock market.

    Here is a summary of RSI and MACD in the stock market: - The MACD is a trend-following momentum indicator. It consists of two lines: the MACD line and the Signal line. When the MACD line crosses above the Signal line, it generates a bullish signal, suggesting a potential uptrend. Conversely, a cross below the Signal line indicates a bearish signal, signaling a potential downtrend.

    • The RSI is an oscillator that measures the speed and change of price movements. RSI values above 70 typically indicate an overbought condition, signaling a potential price reversal to the downside. RSI values below 30 suggest an oversold condition, indicating a potential price reversal to the upside.

    • The essence of this strategy lies in the crossover of the MACD and RSI indicators. When the MACD generates a bullish crossover and the RSI confirms by being below 70 (not in an overbought condition), it could be an opportune time to consider a long (BUY) position.

    • Conversely, when the MACD produces a bearish crossover and the RSI is above 30 (not in an oversold condition), it may be a suitable moment to contemplate a short (SELL) position.

    "},{"location":"strategies/rsi_macd_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The MACD and RSI crossover strategy is a robust approach that combines the strength of two widely used technical indicators. By identifying potential entry and exit points based on these crossovers, traders can make more informed decisions in the stock market.

    "},{"location":"strategies/rsi_macd_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIMEPERIOD_FAST None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SLOW None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SIGNAL None greater than 0 Period (number of candles) by which moving average is calculated TIMEPERIOD_RSI None greater than 0 Period (number of candles) by which RSI is calculated OVERSOLD_VALUE None greater than 0 Threshould value indicating potential buying opportunites OVERBOUGHT_VALUE None greater than 0 Threshould value indicating potential selling opportunites"},{"location":"strategies/rsi_macd_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the inverse crossover of the two EMAs of the closing prices. It uses the talib.MACD and talib.RSI function from the Talib library to calculate the MACD and RSI. The method then determines the crossover between the MACD and RSI and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/stochastic_crossover/","title":"Stochastic Crossover","text":"

    This is a trading strategy called \"Stochastic Crossover\" implemented in Python using the PyAlgoTrading library. The strategy is based on the Stochastic indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/stochastic_crossover/#stochastic-oscillator-indicator","title":"Stochastic Oscillator Indicator","text":"

    In the stock market, Stochastic refers to the Stochastic Oscillator, which is a popular technical indicator used to analyze price momentum and identify potential trend reversals. The Stochastic Oscillator compares the closing price of a security to its price range over a specific period of time. It consists of two lines, %K and %D, and generates values between 0 and 100.

    Here is a summary of the Stochastic Oscillator in the stock market:

    • The Stochastic Oscillator measures the relationship between a security's closing price and its price range over a chosen period.
    • The indicator consists of two lines: %K and %D. %K represents the current closing price relative to the price range, while %D is a smoothed average of %K.
    • The Stochastic Oscillator is bound between 0 and 100. Readings above 80 are typically considered overbought, suggesting a potential price decline or correction. Readings below 20 are often considered oversold, indicating a potential price increase or rebound.
    • Traders use the Stochastic Oscillator to identify potential trend reversals, as overbought or oversold conditions can indicate a possible change in the direction of the price trend.
    • The indicator also generates bullish or bearish divergences, where the price trend and the Stochastic lines move in opposite directions, which can signal a potential trend reversal.
    • The Stochastic Oscillator has various trading strategies associated with it, such as crossovers, overbought/oversold levels, and divergences, which traders use to make buy or sell decisions.
    • It is important to note that the Stochastic Oscillator is a lagging indicator, meaning it may not provide precise timing for trade entries or exits. Therefore, it is often used in conjunction with other indicators and analysis techniques to confirm signals and improve the accuracy of trading decisions.
    • Overall, the Stochastic Oscillator is a widely used technical indicator in the stock market that helps traders assess price momentum, identify overbought and oversold conditions, and spot potential trend reversals. By analyzing the relationship between the closing price and price range, traders can gain insights into potential buying or selling opportunities.
    Fig.1 - IBM candle chart (top) with Stochastic Fast (bottom) Fig.2 - QQQQ candle chart (top) with Stochastic Fast (bottom 1), Stochastic Slow (bottom 2) and Full Stochastic (bottom 3)"},{"location":"strategies/stochastic_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The strategy follows a simple rule based on the Stochastic indicator crossover. When the Stochastic indicator's %K line crosses above the %D line, a buy signal is generated. Conversely, when the %K line crosses below the %D line, a sell signal is generated. The strategy aims to capture potential trend reversals.

    "},{"location":"strategies/stochastic_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description FASTK_PERIOD or PERIOD None greater than 0 The period for the fast %K line of the Stochastic indicator. SLOWK_PERIOD or SMOOTH_K_PERIOD None greater than 0 The period for the slow %K line of the Stochastic indicator. SLOWD_PERIOD or SMOOTH_D_PERIOD None greater than 0 The period for the slow %D line of the Stochastic indicator."},{"location":"strategies/stochastic_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover values for the Slow-K and Slow-D of Stochastic indicator using historical data of the instrument. The method returns the crossover values between slow-K and slow-D.

    "},{"location":"strategies/volatility_trend_atr/","title":"Volatility Trends with Average True Range (ATR)","text":"

    This is a trading strategy called \"Volatility Trends ATR\" implemented in Python using the PyAlgoTrading library. The strategy is based on the ATR indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/volatility_trend_atr/#volatility-trends-with-average-true-range-atr-indicator","title":"Volatility Trends with Average True Range (ATR) Indicator","text":"

    In the ever-changing realm of stock trading, market volatility can be both an opportunity and a challenge. Traders and investors require a reliable instrument to gauge price fluctuations and devise informed strategies. The Average True Range (ATR) steps in as a robust technical indicator to fulfill this role. ATR delivers valuable insights into market volatility trends, equipping traders with the necessary tools to make calculated decisions in the stock market.

    Here is a summary of ATR in the stock market: - The Average True Range (ATR), is a technical gauge designed to quantify a security's trading range over a specific time frame. Rather than simply tracking daily price changes, ATR calculates the \"true range,\" accounting for gaps between trading sessions.

    • ATR serves as a reliable volatility indicator. It quantifies the market's propensity for price movement. Elevated ATR values indicate significant price fluctuations, while lower values suggest relative price stability.

    • ATR is adaptable to individual trading preferences. Traders can tailor the ATR period to match their specific trading style. For daily charts, a typical choice is the 14-day period, but adjustments can be made for shorter or longer timeframes, allowing for versatile application.

    • ATR provides a numerical value, and its magnitude corresponds to the extent of market volatility. Larger ATR values signal more significant trading opportunities, much like a roller coaster promising an exhilarating ride.

    • However, ATR isn't solely focused on turbulence. It effectively identifies periods of low volatility or consolidation in the market, signaling a need for caution or a potential shift in trading strategies.

    "},{"location":"strategies/volatility_trend_atr/#strategy-overview","title":"Strategy Overview","text":"

    The Average True Range (ATR) steps in as a robust technical indicator to fulfill this role. ATR delivers valuable insights into market volatility trends, equipping traders with the necessary tools to make calculated decisions in the stock market.

    "},{"location":"strategies/volatility_trend_atr/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which ATR is calculated ATR_PREV_CANDLES_NUM None greater than 0 nth Previous candle ATR"},{"location":"strategies/volatility_trend_atr/#decision-calculation","title":"Decision Calculation","text":"

    The get_trend_direction method calculates the ATR values for the volatility trend atr indicator using historical data of the instrument. It uses the talib.AROON function from the Talib library to calculate the values. It compares the ATR values with the atr of previous specified candle and determine the entry and exit actions. The method returns the ATR values for current candle.

    "},{"location":"strategies/vwap_crossover/","title":"VWAP Crossover","text":"

    This is a trading strategy called \"VWAP Crossover\" implemented in Python using the PyAlgoTrading library. The strategy is based on the crossover of the VWAP (Volume Weighted Average Price) indicator.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/vwap_crossover/#vwap-indicator","title":"VWAP indicator","text":"

    In the stock market, VWAP stands for Volume-Weighted Average Price. VWAP is a trading indicator that calculates the average price at which a particular stock or security has traded throughout the day, taking into account both the price and the volume of each trade.

    Here is a summary of VWAP in the stock market:

    • VWAP is calculated by multiplying the price of each trade by the corresponding volume and then summing up these values over a specific time period. The total value is divided by the cumulative volume to obtain the average price.
    • The volume-weighted aspect of VWAP gives more weight to trades with higher volume, reflecting the significance of larger trades in the overall average price calculation.
    • VWAP is typically calculated on an intraday basis, such as the trading day or a specific session, and resets at the start of each new period.
    • Traders and investors use VWAP as a benchmark to assess whether their own trades are executed at a better or worse price compared to the average market price. It helps evaluate the quality of their execution and determine if they are buying or selling at a favorable price.
    • VWAP is commonly used by institutional traders who execute large orders as it helps them minimize market impact and avoid unfavorable executions. By comparing their execution price to VWAP, they can assess their performance and adjust their trading strategies accordingly.
    • In addition to being used as a benchmark, VWAP is also employed as a trading strategy. Some traders use VWAP as a reference point for making buy or sell decisions. For example, if the current price is above VWAP, it may be considered bullish, while a price below VWAP could be seen as bearish.
    • VWAP is often displayed as a line on intraday price charts, allowing traders to visually compare the current price to the average price. It can provide insights into the market's overall sentiment and potential support or resistance levels.
    • It is important to note that VWAP is a lagging indicator since it is based on historical data. Therefore, it is often used in combination with other indicators and analysis techniques to validate trade signals and make informed trading decisions.
    • Overall, VWAP is a widely used indicator in the stock market that provides a volume-weighted average price, serving as a benchmark for evaluating trade execution quality and as a reference point for trading decisions. By considering both price and volume, VWAP offers insights into market dynamics and helps traders assess their performance relative to the average market price.
    Fig.1 - IBM candle chart (top) with VWAP line (Blue), Volume chart with SMA line"},{"location":"strategies/vwap_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The strategy follows a simple rule based on the crossover of the VWAP indicator. When the price crosses above the VWAP, a buy signal is generated, and when the price crosses below the VWAP, a sell signal is generated. The strategy aims to capture potential trend reversals based on the VWAP.

    "},{"location":"strategies/vwap_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    No specific strategy parameters are mentioned in the code.

    "},{"location":"strategies/vwap_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the VWAP from historical data and the crossover values for the VWAP of the instrument. The method returns the crossover values between close of hist data and vwap.

    "},{"location":"strategies/strategy_guides/common_options_strategy/","title":"Options Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"strategies/strategy_guides/common_options_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyOptionsEMACrossover(StrategyOptionsBaseV2)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every options strategy is a child class of the StrategyOptionsBaseV2 class.\n
    "},{"location":"strategies/strategy_guides/common_options_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'options_ema_crossover'\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next, we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.no_of_strikes_away_ce = self.strategy_parameters['NO_OF_STRIKES_AWAY_CE']\nself.no_of_strikes_away_p = self.strategy_parameters['NO_OF_STRIKES_AWAY_PE']\nself._strike_direction_ce = self.strategy_parameters['STRIKES_DIRECTION_CE']\nself._strike_direction_pe = self.strategy_parameters['STRIKES_DIRECTION_PE']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may change for different strategies.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters.

    try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg:

    self.main_order = None            # We save the entry order in this variable\nself.stoploss_order = None        # We save the corresponding stoploss exit order of the entry order in this variable\n
    We initialize the variables with a None value. !!! Note There could be more strategy variables required as per the strategy requirement.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"strategies/strategy_guides/common_options_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"strategies/strategy_guides/common_options_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
    self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags.

    eg:

    self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"strategies/strategy_guides/common_options_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag

    eg:

    self.order_tag_manager.remove_tags(tags=entry_key)\n

    Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in order tags.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s).

    eg:

    self.order_tag_manager.remove_order(main_order)\n
    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_internals","title":"get_internals","text":"
    Returns the values i.e. both the entry and exit orders stored inside the tags list.\n
    "},{"location":"strategies/strategy_guides/common_options_strategy/#5-child-instruments-calculation","title":"5. Child instruments calculation","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#get_ltp","title":"get_ltp","text":"

    Fetch the ltp of the base instrument (instrument set while executing strategy)

    ltp = self.broker.get_ltp(self.underlying_instrument)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#options_instruments_set_up_local","title":"options_instruments_set_up_local","text":"

    Get the ATM ITM and OTM lists of the child instrument based on the LTP

    self.options_instruments_set_up_local(self.underlying_instrument, tradingsymbol_suffix, ltp)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_child_instrument_details","title":"get_child_instrument_details","text":"

    Select a child instrument from the lists of ATM, ITM, and OTM based on the strike direction and no of strikes given for the child instrument

    child_instrument = self.get_child_instrument_details(self.underlying_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#6-entry-methods","title":"6. Entry Methods","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create a get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selectd_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#7-exit-methods","title":"7. Exit Methods","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#8-other-common-methods","title":"8. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"strategies/strategy_guides/common_options_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#options_instruments_set_up_local_1","title":"options_instruments_set_up_local","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch the ATM, ITM, and OTM lists of the child instruments based on the LTP of the base instrument.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_child_instrument_details_1","title":"get_child_instrument_details","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch a single child instrument based on the no of strikes and strike direction.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#9-cleanup","title":"9. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#10-check-out-our-docs-for-developed-options-strategies","title":"10. Check out our docs for developed Options strategies","text":"
    • Options Bear Call Ladder
    • Options Bear Put Ladder
    • Options Bull Call Ladder
    • Options Bull Put Ladder
    • Options Long Iron Butterfly
    • Options Straddle
    • Options Strangle

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/","title":"Regular Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"strategies/strategy_guides/common_regular_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyFuturesEMACrossover(StrategyBase)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every strategy is a child class of the StrategyBase class.\n
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'futures_ema_crossover'\n

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format, as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may be different for different strategies.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters. try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg: self.order_tag_manager = None

    We initialize the variables with a None value.

    Note

    There could be more strategy variables required as per the strategy requirement.\n
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
      self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags. eg:
      self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag eg:
      self.order_tag_manager.remove_tags(tags=entry_key)\n
    • Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in the order tags.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s). eg:
    self.order_tag_manager.remove_order(main_order)\n

    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#get_internals","title":"get_internals","text":"
    • Returns the values i.e. both the entry and exit orders stored inside the tags list.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#5-entry-methods","title":"5. Entry Methods","text":""},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create an get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selected_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#6-exit-methods","title":"6. Exit Methods","text":""},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit:","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#7-other-common-methods","title":"7. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#8-cleanup","title":"8. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#10-check-out-our-docs-for-developed-regular-strategies","title":"10. Check out our docs for developed Regular strategies","text":"
    • Aroon Crossover
    • Bollinger Bands
    • EMA Crossover
    • Inverse EMA Scalping
    • Reverse RSI
    • Stochastic Crossover
    • VWAP Crossover

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/","title":"Common Strategy Building Guide","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#understanding-the-strategy-structure","title":"Understanding the Strategy Structure","text":"

    The strategy code is basically a Python Class, with its Base Class as StrategyBase (for regular strategies) or StrategyBaseOptionsV2 (for options strategies). In this documentation we will focus on a regular strategy called \u2018EMA Regular Order\u2019 - a strategy which gives BUY and SELL signals based on two EMA indicators and takes new-entry & previous-exit at every crossover. We also will be discussing about an options strategy called \"Options Bear Call Ladder Strategy\" - strategy which uses 3 legs to optimize the risk and returns of the options. Inside the strategy class there are many methods that could be divided into 2 different sections: Mandatory Methods: Initialization Methods, 4-Core Loop Methods & Optional Methods: Algorithmic Calculation Methods & Miscellaneous Methods. These sections are explained briefly below.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#mandatory-functions","title":"Mandatory Functions:","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#initialization-methods","title":"Initialization Methods","text":"

    In this section, you will have the Strategy Class\u2019 \u201cinit\u201d method (a.k.a. Constructor). This method will extract the Strategy\u2019s Configured Parameters and save them in the different variables. There is another method in this section called \u201cinitialization\u201d, which will be called at the start of every trading day that will occur inside the timeline for which you are executing the strategy.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#4-core-loop-methods","title":"4 Core Loop Methods","text":"

    These are the main methods that will be called by the AlgoBulls Core in a sequence for every candle (candle is the minimum time range for which the Open, High, Low and Close values of that instrument are available. Basically it is a representation of a time period and the data corresponds to the trades executed during that period). All the logic design methods are called inside these Core Methods, along with the helping methods.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#optional-function","title":"Optional Function","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#algorithmic-calculations-methods","title":"Algorithmic Calculations Methods","text":"

    This section contains the methods that are defined by the user. These are not mandatory but good to keep your code organized and simple. Their main purpose will be to perform operations on historical data or LTP data of the selected instrument. Based on the results of these operations, it needs to decide whether it should Buy, Sell or take no action on the instrument. Apart from decision making, some of the other methods can also be useful to calculate the stop loss or target price for a trade. Point being, the purpose of these methods are totally dependent on the application of the user.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#miscellaneous-methods","title":"Miscellaneous Methods","text":"

    These are handy methods that are created by a team of expert strategy developers and they are already a part of the base class. These methods do a lot of heavy lifting under the hood and can be used here for various purposes like getting the latest price of a stock, placing an order etc. These methods are not always necessary to be used and are generally a part of other methods mentioned above.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#working-flow-of-the-strategy","title":"Working Flow of the Strategy","text":"

    Below Diagram is Sample Diagram on how the strategy execution engine works. Blocks in green are the mandatory methods that need to be implemented for every strategy.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#setting-up-imports-and-environment","title":"Setting Up: Imports and Environment","text":"

    Before we dive into building of a strategy we need to fist setup our workspace depending the tool we are using. The available tools for creating a workspace of strategy are Pyalgotrading and Python Build Web.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#pyalgotrading","title":"Pyalgotrading","text":"

    If you're coding on your local machine, I recommend setting up a virtual environment and installing the \"pyalgotrading\" Python package to keep things organised.

    pip3 install pyalgotrading\n
    Once you've got it installed, it's time to bring in the magic. Import the package and its constants into your Python file where your trading strategy will take shape.

    from pyalgotrading.algobulls import AlgoBullsConnection\nfrom pyalgotrading.strategy import *\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#python-build-web","title":"Python Build Web","text":"

    Now, if you prefer a web-based approach, we've got you covered. Head over to the \"Code New Strategy\" section on the Python Build page of the AlgoBulls website. Here, you can craft your strategy without the need to import any classes or packages. The choice is yours \u2013 flexibility at its best.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy-code-creation-lets-get-started","title":"Strategy Code Creation: Let's Get Started","text":"

    With the groundwork laid, it's time to create your strategy class. Be sure to choose the appropriate base class for your strategy. For regular equity strategies, the base class is StrategyBase while for options strategies, it's StrategyOptionsBaseV2.

    Examples:

    RegularOptions
    class MovingAverageCrossoverV2(StrategyBase):\n    name = 'Moving Average Crossover V2'\n
    class StrategyOptionsBearCallLadder(StrategyOptionsBaseV2):\n    name = 'Options Bear Call Ladder Template'\n

    Feel free to get creative with your class name, but it's good practice to make it unique among your strategy class names. Below this declaration, we set the strategy's name.

    For Pyalgotrading users

    If you are uploading the strategy via pyalgotrading functions, then this name parameter's value will be the name of the strategy. That means this name will be displayed in My Coded Strategies section in Python Build.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#initialization-functions","title":"Initialization Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#init","title":"init()","text":"

    Every great trading strategy starts with a solid foundation \u2013 the constructor method, also known as the \"init\" method. Here's what it looks like:

    def __init__(self, *args, **kwargs):\n    super().__init__(*args, **kwargs)\n
    Within this method, you extract the parameters provided by the user. These user-defined parameters are stored in a dictionary called \"self.strategy_parameters.\" Here's how you can access these values:

    self.timeperiod1 = self.strategy_parameters['TIMEPERIOD1']\nself.timeperiod2 = self.strategy_parameters['TIMEPERIOD2']\n
    Feel free to initialise other variables here, such as self.main_order, self.number_of_allowed_expiry_dates, self.transaction_type_map and more.

    Example: This is how the declaration of class along with its constructor would look like.

    RegularOptions
    class StrategyEMARegularOrder(StrategyBase):\n    name = 'EMA Regular Order Strategy'\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        self.timeperiod1 = self.strategy_parameters['TIMEPERIOD1']\n        self.timeperiod2 = self.strategy_parameters['TIMEPERIOD2']\n\n        self.main_order_map = None\n
    class StrategyOptionsBearCallLadder(StrategyOptionsBaseV2):\n    name = 'Options Bear Call Ladder Template'\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # Parameters (currently set with default values, can be overridden from the Parameters Configuration Pane)\n        self._leg_one_transaction_type = self.strategy_parameters.get('LEG_ONE_TRANSACTION_TYPE', 1)  # BUY: 1 | SELL: 2\n        self._leg_one_tradingsymbol_suffix = self.strategy_parameters.get('LEG_ONE_TRADING_SYMBOL_SUFFIX', 1)  # CE: 1 | PE: 2\n        self._leg_one_strike_direction = self.strategy_parameters.get('LEG_ONE_STRIKE_DIRECTION', 1)  # ITM: 0| ATM: 1| OTM: 2\n        self._leg_one_number_of_strikes = self.strategy_parameters.get('LEG_ONE_NUMBER_OF_STRIKES', 0)\n\n        self._leg_two_transaction_type = self.strategy_parameters.get('LEG_TWO_TRANSACTION_TYPE', 1)  # BUY: 1 | SELL: 2\n        self._leg_two_tradingsymbol_suffix = self.strategy_parameters.get('LEG_TWO_TRADING_SYMBOL_SUFFIX', 1)  # CE: 1 | PE: 2\n        self._leg_two_strike_direction = self.strategy_parameters.get('LEG_TWO_STRIKE_DIRECTION', 2)  # ITM: 0| ATM: 1| OTM: 2\n        self._leg_two_number_of_strikes = self.strategy_parameters.get('LEG_TWO_NUMBER_OF_STRIKES', 2)\n\n        self._leg_three_transaction_type = self.strategy_parameters.get('LEG_THREE_TRANSACTION_TYPE', 2)  # BUY: 1 | SELL: 2\n        self._leg_three_tradingsymbol_suffix = self.strategy_parameters.get('LEG_THREE_TRADING_SYMBOL_SUFFIX', 1)  # CE: 1 | PE: 2\n        self._leg_three_strike_direction = self.strategy_parameters.get('LEG_THREE_STRIKE_DIRECTION', 0)  # ITM: 0| ATM: 1| OTM: 2\n        self._leg_three_number_of_strikes = self.strategy_parameters.get('LEG_THREE_NUMBER_OF_STRIKES', 2)\n\n        # Maps\n        self.transaction_type_map = {1: \"BUY\", 2: \"SELL\"}\n        self.tradingsymbol_suffix_map = {1: \"CE\", 2: \"PE\"}\n        self.strike_direction_map = {0: OptionsStrikeDirection.ITM, 1: OptionsStrikeDirection.ATM, 2: OptionsStrikeDirection.OTM}\n\n        # Variables\n        self.number_of_allowed_expiry_dates = 1\n        self.instruments_done_for_the_day = None\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#initialize","title":"initialize()","text":"

    The \"initialize\" method is your strategy's workspace, where you get everything ready for a fresh trading day. It's called at the start of each trading day, allowing you to reset variables, set up your tools, and perform any other tasks to ensure your strategy is primed and ready.

    Example:

    Examples:

    RegularOptions
    def initialize(self):\n    self.main_order_map = {}\n
    def initialize(self):\n    super().initialize()\n    self.instruments_done_for_the_day = []\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#algorithmic-calculation-functions","title":"Algorithmic Calculation Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#get_decision","title":"get_decision()","text":"

    Now, let's dive into the heart of your strategy \u2013 the \"get_decision\" method. This method is where the magic happens, where you decide when to enter or exit a trade, set stop losses, and target prices. Here's how it works: Historical data of the instrument up to a certain point in your strategy is collected using:

    • Historical data is a time series data of open, high, low and close values of an instrument. These values are fetched at an interval same as that of the candle interval. The method given below fetches multiple historical data values till the current candle on which the strategy is executing. Historical data of the instrument up to a certain point in your strategy is collected using:
      hist_data = self.get_historical_data(instrument)\n
      Here the variable hist_data is a pandas.Dataframe object. A Pandas DataFrame is a 2 dimensional data structure, like a 2 dimensional array, or a table with rows and columns. The hist_data Dataframe will have 4 columns named as : \u201copen\u201d, \u201chigh\u201d, \u201cclose\u201c and \u201clow\u201d. For every row there will be a unique timestamp and the difference between each timestamp is of candle interval.
    • To access all the values of one particular column from the hist_data, you can use the following syntax code. Remember the data type of the column fetched here is pandas.Series
      hist_data[\u2018<column_name>\u2019]\n
      Example:
      close = hist_data[\u2018close\u2019]\n
    • To access the O-H-L-C values of the current latest candle you can use the following code. This also tells us that the index -1 is for latest, -2 will be for second latest and so on. This also implies that index 0 will get the oldest data, index 1 will give second oldest data and so on.
      latest_ohlc = hist_data.iloc[-1]\n
    • Next, you analyse this historical data to determine trading signals and calculate indicator values. You can rely on functions from \"talib\" for this, as shown below:

      ema_x = talib.EMA(hist_data['close'], timeperiod=self.timeperiod1)\nema_y = talib.EMA(hist_data['close'], timeperiod=self.timeperiod2)\n
      As you can see, we have passed the \u201cclose\u201d column and a strategy parameter value called \u201cself.timeperiod1\u201d and \u201cself.timeperiod2\u201d to the talib function. Each of the talib functions require unique input values, some require pandas.Series, some require constants like integers and floats and some require both. To understand the working of each talib function, refer here.

    • In many strategies, the condition to buy or sell can be triggered based on the crossover direction of 2 signals/indicators. A crossover refers to an instance where an indicator and a price, or multiple indicators, overlap and cross one another. Crossovers are used in technical analysis to confirm patterns and trends such as reversals and breakouts, generating buy or sell signals accordingly. Below we have given an example of how to calculate the crossover of the 2 indicator values we had calculated above.

      crossover_value = self.utils.crossover(ema_x, ema_y)\n
      Here if crossover_value is 0 then the indicators ema_x and ema_y have not crossed. If it is 1 then indicator ema_x has crossed ema_y in upward direction. Similarly if it is -1 then indicator ema_x has crossed ema_y in downward direction

    By combining these calculated values with historical data, you can make informed decisions about when to initiate or close a trade. Additionally, you can use this information to compute potential target prices or set stop losses. AlgoBulls' Python Build empowers you to navigate the complexities of options trading with ease.

    Example:

    This is how an ideal get_decision() function would look like. This example is from RSI Crossover Strategy.

    def get_crossover_value(self, instrument):\n    hist_data = self.get_historical_data(instrument)\n\n    rsi_value = talib.RSI(hist_data['close'],    timeperiod=self.time_period)\n\n    oversold_list = [self.oversold_value] * rsi_value.size\n    overbought_list = [self.overbought_value] * rsi_value.size\n\n    oversold_crossover_value = self.utils.crossover(rsi_value, oversold_list)\n    overbought_crossover_value = self.utils.crossover(rsi_value, overbought_list)\n\n    return oversold_crossover_value, overbought_crossover_value\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#miscellaneous-functions","title":"Miscellaneous Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#get_child_instrument_details","title":"get_child_instrument_details()","text":"

    The get_child_instrument_details function is at your disposal. It takes several parameters:

    • base_instrument: The foundation of your options strategy, often represented by an index.
    • tradingsymbol_suffix: Specifies whether the option should be a call option (CE) or a put option (PE), determining the trading symbol's suffix.
    • strike_direction: Defines the direction relative to the current strike price, with options like \"In The Money\" (ITM), \"Out of The Money\" (OTM), and \"At the Money\" (ATM).
    • no_of_strikes: Specifies how many strikes away from the current strike price the function should consider, setting the distance in strike prices within the chosen strike direction.

    This function calls two other functions: self.get_allowed_expiry_dates() and get_options_instrument_with_strike_direction().

    Example: This is how the function looks ideally. This example was taken from \u201cOptions Bear Call Strategy\u201d from ready templates.

        def get_child_instrument_details(self, base_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes):\n        expiry_date = self.get_allowed_expiry_dates()[0]\n        child_instrument = self.get_options_instrument_with_strike_direction(base_instrument, expiry_date, tradingsymbol_suffix, strike_direction, no_of_strikes)\n        return child_instrument\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#get_allowed_expiry_dates","title":"get_allowed_expiry_dates()","text":"

    In options strategies, the get_allowed_expiry_dates function plays a vital role. It doesn't require parameters; instead, it relies on the number_of_allowed_expiry_dates variable defined in the constructor method.

    • If number_of_allowed_expiry_dates is set to 1, the function returns the monthly expiry date.
    • If number_of_allowed_expiry_dates is set to 0, the function returns a weekly expiry date.

    In essence, this function helps you select the appropriate expiry date based on the value you assign to number_of_allowed_expiry_dates variable.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#get_options_instrument_with_strike_direction","title":"get_options_instrument_with_strike_direction()","text":"

    This function is a key player in options strategies, taking parameters such as:

    • base_instrument: The foundation of your options strategy.
    • expiry_date: The expiry date of the child instrument, calculated using the \"get_allowed_expiry_dates\" function.
    • tradingsymbol_suffix: Specifies whether the option should be a call option (CE) or a put option (PE), helping identify the appropriate options.
    • strike_direction: Determines the direction in relation to the current strike price, offering options like \"In The Money\" (ITM), \"Out of The Money\" (OTM), and \"At the Money\" (ATM).
    • no_of_strikes: Specifies how many strikes away from the current strike price the function should consider, defining the distance in strike prices within the chosen strike direction.
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#options_instruments_set_up_local","title":"options_instruments_set_up_local()","text":"

    Now, let's talk about a crucial piece of the options strategy puzzle \u2013 options_instruments_set_up_local. This function creates local instances of all available child instruments based on specified parameters:

    • base_instrument: The foundation of your options strategy, typically an index.
    • tradingsymbol_suffix: Specifies whether the child instrument should be a call option (CE) or a put option (PE), aiding in the identification of the appropriate options.
    • current_close (strike_price): The current price of the base instrument, also known as the strike price.
    • direction: Determines the direction in relation to the current strike price, helping select the child instrument (i.e., ATM, ITM, or OTM).

    Once executed, this function sets up and stores local instances of child instruments matching your criteria. These instances become valuable assets for further analysis or operations, including utilising the \"get_child_instrument_details\" function.

    Example: This is how this function looks ideally. This example was taken from \u201cOptions Bear Call Ladder\u201d from ready templates.

    def options_instruments_set_up_local(self, base_instrument, tradingsymbol_suffix, current_close, direction=OptionsInstrumentDirection.EXACT):\n        expiry_dates = self.get_allowed_expiry_dates()\n        for expiry_date in expiry_dates:\n            self.options_instruments_set_up(base_instrument, direction, expiry_date, tradingsymbol_suffix, current_close)\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#options_instruments_set_up","title":"options_instruments_set_up()","text":"

    The final piece of the puzzle is \"options_instruments_set_up.\" This function takes parameters like:

    • base_instrument: The foundation of your options strategy.
    • direction: Determines the direction in relation to the current strike price, helping select the child instrument (i.e., ATM, ITM, or OTM).
    • expiry_date: The expiry date of the child instrument, calculated using the \"get_allowed_expiry_dates\" function.
    • tradingsymbol_suffix: Specifies whether the child instrument should be a call option (CE) or a put option (PE), aiding in the identification of the appropriate options.
    • current_close: The current price of the base instrument, also known as the strike price.

    Now, let's talk about the engine that drives your strategy \u2013 the core loop functions.

    These include \"strategy_select_instruments_for_entry\", \"strategy_enter_position\", \"strategy_select_instruments_for_exit\" and \"strategy_exit_position\" These functions are called within a loop from the AlgoBulls core until an Exit Event for the strategy occurs.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#the-4-core-loop-functions","title":"The 4 Core Loop Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument_bucket: A list of all the instruments provided by the user when starting the strategy. Here, you iterate through the instruments, calling \"self.get_decision()\" to determine actions for each. For options strategies, you can also use \"self.options_instruments_set_up_local()\" to set up child instruments for each base instrument. The selected instruments and their meta-information are returned by the function.

    Example: This function would ideally look like this. This example was taken from \u201cOptions Straddle\u201d from Ready Templates.

    Examples:

    RegularOptions
    def strategy_select_instruments_for_entry(self, candle, instruments_bucket):\n    selected_instruments, meta = [], []\n\n    for instrument in instruments_bucket:\n        crossover = self.get_decision(instrument)\n        action_constants = {1: 'BUY', -1: 'SELL'}\n\n        if crossover in [-1, 1]:\n            selected_instruments.append(instrument)\n            meta.append({'action': action_constants[crossover]})\n\n    return selected_instruments, meta\n
    def strategy_select_instruments_for_entry(self, candle, instruments_bucket):\n    selected_instruments, meta = [], []\n\n    for instrument in instruments_bucket:\n        if instrument not in self.instruments_done_for_the_day:\n            self.instruments_done_for_the_day.append(instrument)\n            ltp = self.broker.get_ltp(instrument)\n\n            self.options_instruments_set_up_local(instrument, \"CE\", ltp)\n            self.options_instruments_set_up_local(instrument, \"PE\", ltp)\n\n            leg_wise_list = [('LEG_ONE', self._leg_one_tradingsymbol_suffix, self._leg_one_strike_direction, self._leg_one_number_of_strikes, self._leg_one_transaction_type),\n                             ('LEG_TWO', self._leg_two_tradingsymbol_suffix, self._leg_two_strike_direction, self._leg_two_number_of_strikes, self._leg_two_transaction_type),\n                             ('LEG_THREE', self._leg_three_tradingsymbol_suffix, self._leg_three_strike_direction, self._leg_three_number_of_strikes, self._leg_three_transaction_type)]\n\n            for leg_number, tradingingsymbol_suffix, strike_direction, number_of_strikes, transaction_type in leg_wise_list:\n                self.logger.info(f'Processing {leg_number}...')\n                child_instrument = self.get_child_instrument_details(instrument, self.tradingsymbol_suffix_map[tradingingsymbol_suffix], self.strike_direction_map[strike_direction], number_of_strikes)\n                selected_instruments.append(child_instrument)\n                meta.append({'base_instrument': instrument, 'action': self.transaction_type_map[transaction_type]})\n\n    return selected_instruments, meta\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument: One of the instruments from the selected instruments list returned by \"strategy_select_instruments_for_entry.\"
    • meta: Meta-information of that particular instrument, aligning with the instrument from the meta list.

    Here, you place orders for the selected instruments, updating them in \"self.main_order\" for easy access in exit functions.

    Example: This function would ideally look like this. This example was taken from \u201cOptions Straddle\u201d from Ready Templates.

    Examples:

    RegularOptions
    def strategy_enter_position(self, candle, instrument, meta):\n    self.main_order_map[instrument] = _ = self.broker.OrderRegular(instrument, meta['action'], quantity=self.number_of_lots * instrument.lot_size)\n    return _\n
    def strategy_enter_position(self, candle, instrument, sideband_info):\n    _ = self.broker.OrderRegular(instrument, sideband_info['action'], quantity=self.number_of_lots * instrument.lot_size)\n    return _\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#orderregular","title":"OrderRegular","text":"

    The self.broker.OrderRegular is used to place the entry/exit orders.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#parameters","title":"Parameters:","text":"
    • instrument: Instrument object on which to place the order.
    • action: Action to be taken, either 'BUY' or 'SELL'.
    • quantity: The quantity of the order, generally calculated as self.number_of_lots * instrument.lot_size.
    • order_variety: (Optional) Type of order. Default is MARKET order (BrokerOrderVarietyConstants.MARKET).
    • price: (Optional) The price at which the limit order will be placed.
    • trigger_price: (Optional) The trigger price for stop-loss orders.

    Click on each of the tabs to see the relevant code snippet.

    Market OrderLimit OrderStoploss Market OrderStoploss Limit Order
    self.broker.OrderRegular(\n    instrument,\n    action, \n    quantity \n    )\n
    self.broker.OrderRegular(\n    instrument, \n    action, \n    quantity, \n    order_variety=BrokerOrderVarietyConstants.LIMIT, \n    price=price \n    )\n
    self.broker.OrderRegular(\n    instrument, \n    action, \n    quantity, \n    order=order_variety=BrokerOrderVarietyConstants.STOPLOSS_MARKET, \n    trigger_price=trigger_price\n    )\n
    self.broker.OrderRegular(\n    instrument,  \n    action, \n    quantity,  \n    order_variety=BrokerOrderVarietyConstants.STOPLOSS_LIMIT, \n    price=price, \n    trigger_price=trigger_price\n)\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    Similar to entry, this function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument_bucket: A list of all instruments provided by the user when starting the strategy.

    The function iterates through the instrument bucket, checking if the instrument is present in \"self.main_order\" and whether its exit condition is satisfied. Instruments meeting exit conditions are added to the selected instruments list, along with their respective actions and meta-information.

    Example: This function should ideally look like this. This example was taken from \u201cEMA Crossover Strategy\u201d.

        def strategy_select_instruments_for_exit(self, candle, instruments_bucket):\n        selected_instruments, meta = [], []\n\n        for instrument in instruments_bucket:\n            if self.main_order_map.get(instrument) is not None:\n                crossover = self.get_decision(instrument)\n\n                if crossover in [1, -1]:\n                    selected_instruments.append(instrument)\n                    meta.append({'action': 'EXIT'})\n\n        return selected_instruments, meta\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_exit_position","title":"strategy_exit_position()","text":"

    Finally, this function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument: One of the instruments from the selected instruments list returned by \"strategy_select_instruments_for_exit.\"
    • meta: Meta-information of that particular instrument, aligning with the instrument from the meta list.

    Here, you place orders for the selected instruments, removing them from \"self.main_order\" to prepare for the next iteration of the AlgoBulls core loop.

    Example: This function should ideally look like this. This example was taken from the \"EMA Crossover Strategy\". Here, we are telling the core to exit all positions:

    def strategy_exit_position(self, candle, instrument, meta):\n    if meta['action'] == 'EXIT':\n        self.main_order_map[instrument].exit_position()\n        self.main_order_map[instrument] = None\n        return True\n    return False\n
    If you want the strategy to place the exit order instead of letting the core handle it, then this is what the function should look like:
    def strategy_exit_position(self, candle, instrument, meta):\n    if meta['action'] == 'EXIT':\n        self.broker.OrderRegular(\n            instrument,\n            action,\n            quantity,\n            related_order=entry_order,\n            position=BrokerExistingOrderPositionConstants.EXIT\n            )\n        return True\n    return False\n

    Note

    • meta['action'] has to be opposite of the entry order's transaction type. For example: if the entry order is 'BUY', then meta['action'] should be 'SELL', and vice versa.
    • Pass the entry order object as the related_order parameter.
    • You can specify a lesser quantity if you want to partially exit your entry order. In case of partial exits, ensure that you return 'True' only if the quantity becomes zero after placing this order, else return 'False' for your intermediate/partial exits.
    "},{"location":"strategies/strategy_guides/fee/","title":"Frequently Encountered Errors","text":""},{"location":"strategies/strategy_guides/fee/#execution-time-exceeded-timeout_duration-duration-of-60-sec","title":"Execution time exceeded timeout_duration duration of 60 sec.","text":""},{"location":"strategies/strategy_guides/fee/#possible-causes","title":"Possible Causes","text":"
    • Historical Data Fetching Duration:

      Fetching historical data may take longer, especially if the duration is set to a large number of days.

    • Suboptimal Decision-Making Logic:

      The decision-making logic might be suboptimal, leading to increased processing time.

    • Sequential Execution Approach:

      A sequential approach of fetching historical data and then making the decisions in case of multiple instruments can contribute to delays.

    • Real-Time Calculations:

      If there are calculations that could be pre-conditioned or pre-calculated before the market opens, optimizing real-time calculations might help.

    "},{"location":"strategies/strategy_guides/fee/#solutions","title":"Solutions","text":"
    • Optimize Historical Data Fetching:

      Consider reducing the number of days for which historical data is fetched. A shorter duration, like 5 days, can be a reasonable compromise.

      @staticmethod\ndef get_historical_data_duration():\n    return 5\n
    • Optimize the Decision-Making logic:

      Revisit your strategy logic and check if any code block can be optimized.

    • Batch Processing for Decision-Making:

      In case of multiple instruments, lets say you are fetching the historical data for the instrument, and have implemented the decision-making logic for whether this instrument should get selected for order placement or not. Once this is done, you repeat the same process for the next instrument. Instead of a sequential approach, try fetching historical data for all instruments in one loop and then making decisions for all instruments in another loop.

    • Pre-Calculate Conditions:

      Identify conditions that can be pre-calculated before the market opens. Adjust the strategy start time to accommodate these pre-calculations. If certain conditions can be chcked before the market starts, set the trading start time of the strategy to a value before the market start time. Add specific checks inside the strategy to ensure that the actual order placement, etc. are executed after the market starts.

    "},{"location":"strategies/strategy_guides/fee/#no-data-in-charts","title":"No Data in Charts","text":""},{"location":"strategies/strategy_guides/fee/#description","title":"Description","text":"

    Encountering the \"NO data in charts\" error while running a strategy is a common issue. This problem arises when using a small quantity with very large funds. Limited visibility on charts due to large funds with a small quantity setting.

    "},{"location":"strategies/strategy_guides/fee/#possible-causes_1","title":"Possible Causes","text":"
    • Scale Discrepancy:

      The large fund amount may lead to extremely small values on the y-axis, which are not visible, causing charts to appear empty.

    • Default Quantity and Funds:

      Default quantity and funds settings, if not adjusted, may lead to similar issues with empty charts.

    "},{"location":"strategies/strategy_guides/fee/#solutions_1","title":"Solutions","text":"
    • Normalize Values:

      Normalize values by using larger quantities or scaling to ensure meaningful data display across various scenarios.

    • Adjust Default Settings:

      Consider adjusting default values to something more suitable for common scenarios. Charts displaying proper data with suitable funds and quantity settings

    "},{"location":"strategies/strategy_guides/fee/#openai-api-quota-depletion","title":"OpenAI API Quota Depletion","text":""},{"location":"strategies/strategy_guides/fee/#description_1","title":"Description","text":"

    The \"OpenAI API current quota exceeded\" error indicates that the current quota or available credits for the OpenAI API has been exhausted. This typically occurs when the allotted usage limit for the API key has been reached.

    "},{"location":"strategies/strategy_guides/fee/#possible-causes_2","title":"Possible Causes","text":"
    • Credit Depletion:

      The API key has utilized its entire quota or available credits.

    "},{"location":"strategies/strategy_guides/fee/#solutions_2","title":"Solutions","text":"
    • Purchase More Credits:

      To continue using the OpenAI API, consider purchasing additional credits or upgrading your plan to increase the quota. Click here to add more credits.

    • Alternative Key:

      If available, switch to a different API key that still has unused credits.

    "},{"location":"strategies/strategy_guides/how_to/","title":"How to","text":""},{"location":"strategies/strategy_guides/how_to/#fetch-last-traded-price-ltp-of-an-instrument","title":"Fetch Last Traded Price (LTP) of an Instrument","text":"

    To fetch the Last Traded Price (LTP) of any instrument, use the following method:

    self.broker.get_ltp(instrument)\n

    This method retrieves the last traded price of the specified instrument.

    "},{"location":"strategies/strategy_guides/how_to/#access-attributes-of-an-instrument-object","title":"Access Attributes of an Instrument Object","text":"

    An instrument object typically contains various attributes providing information about the instrument:

    • exchange: Exchange on which the instrument is listed.
    • expiry: Expiration date of the instrument (applicable for derivatives).
    • lot_size: Number of units in a single lot of the instrument.
    • strike_price: Strike price of the instrument (applicable for options).
    • segment: Trading segment of the instrument.
    • tradingsymbol: Unique trading symbol of the instrument.
    • tick_size: Minimum price movement (tick) of the instrument.

    To access these attributes, use the following notation:

    instrument.exchange\ninstrument.expiry\ninstrument.lot_size\ninstrument.strike_price\ninstrument.segment\ninstrument.tradingsymbol\ninstrument.tick_size\n
    "},{"location":"strategies/strategy_guides/how_to/#fetch-different-types-of-instruments","title":"Fetch Different Types of Instruments","text":"

    To fetch different types of instruments, use the get_instruments_filtered method:

    Method Signature:

    self.broker.get_instruments_filtered(segment, tradingsymbol_exact=None, tradingsymbol_prefix=None, tradingsymbol_suffix=None, expiry=None)\n
    Example:
    from datetime import date\ninstruments = self.broker.get_instruments_filtered(segment='NSE_FO', tradingsymbol_prefix='NIFTY', expiry=date(2024,01,04))\n

    This example fetches equity instruments with a trading symbol prefix of 'NIFTY' and an expiry date of 4th January, 2024.

    "},{"location":"strategies/strategy_guides/how_to/#access-attributes-of-an-order-object","title":"Access Attributes of an Order Object","text":"

    An order object typically contains various attributes providing information about the order:

    • entry_price: Entry price of the order.
    • id: AlgoBulls specific alphanumeric order ID.
    • instrument: Instrument for which the order is placed.
    • order_code: Code for the order type (INTRADAY/DELIVERY).
    • order_time: Time at which the order is placed.
    • order_transaction_type: Type of transaction (BUY/SELL).
    • order_type: Type of order (REGULAR/BRACKET/COVER).
    • order_variety: Variety of the order (MARKET, LIMIT, STOPLOSS_MARKET, STOPLOSS_LIMIT).
    • position: Position (ENTER/EXIT).
    • price: Price of the order.
    • quantity: Order quantity.
    • quantity_pending: Quantity that is currently pending.
    • trigger_price: Trigger price of the order.

    To access these attributes, use the following notation:

    order.entry_price\norder.id\norder.instrument\norder.order_code\norder.order_time\norder.order_transaction_type\norder.order_type\norder.order_variety\norder.position\norder.price\norder.quantity\norder.quantity_pending\norder.trigger_price\n

    "},{"location":"strategies/strategy_guides/structure/","title":"Code Structure of Strategy","text":"

    Coding Prerequisites

    • For pyalgotrading check here.
    • For Python Build Web check here.
    "},{"location":"strategies/strategy_guides/structure/#methods","title":"Methods","text":""},{"location":"strategies/strategy_guides/structure/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function helps you choose which trading instruments you want your strategy to work with. The system will use this function to go through each instrument one by one, at each candle's time. You get to write code that decides whether to place an order for a specific instrument or not.

    "},{"location":"strategies/strategy_guides/structure/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function is where you can place orders for the instruments you selected earlier. It's executed for each instrument you picked in the previous function.

    "},{"location":"strategies/strategy_guides/structure/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    After you've entered a position for an instrument, this function is called for each of those instruments at each candle interval. You can use it to decide whether an instrument should be exited from the position.

    "},{"location":"strategies/strategy_guides/structure/#strategy_exit_position","title":"strategy_exit_position()","text":"

    In this function, you can close or exit positions for the instruments you marked for exiting in the previous function. It's done instrument by instrument.

    "},{"location":"strategies/strategy_guides/structure/#supporting-methods","title":"Supporting Methods","text":"

    You have the following supporting methods:

    "},{"location":"strategies/strategy_guides/structure/#init","title":"init()","text":"

    This method is like a starter for your strategy. It checks if the values you give it make sense and sets up some useful information for your strategy to use.

    "},{"location":"strategies/strategy_guides/structure/#initialize","title":"initialize()","text":"

    This method is called when your strategy begins, both at the very start and at the beginning of each trading day. It's like setting up your strategy's workspace and giving your tools a starting position.

    "},{"location":"strategies/strategy_guides/structure/#name","title":"name()","text":"

    This method gives your strategy a special name. It's like giving your strategy a unique nickname.

    "},{"location":"strategies/strategy_guides/structure/#versions_supported","title":"versions_supported()","text":"

    This method lets you specify which version of the AlgoBulls Platform your strategy works well with. It's like saying, \"My strategy is ready for this specific version of the platform.\"

    "},{"location":"strategies/strategy_guides/structure/#utility-functions","title":"Utility Functions","text":"

    You have the following utility function to be used in this strategy :

    Links

    • Strategy Structure (regular)
    • Strategy Structure (options)
    "},{"location":"strategies/strategy_guides/structure/#get_crossover_value","title":"get_crossover_value()","text":"This handy function calculates something called the \"crossover value\" for you. It's like having a calculator that figures out this specific value for your strategy."},{"location":"strategies/strategy_guides/structure/#flowchart","title":"Flowchart","text":"

    Once you create your own strategy or use a ready strategy from the pyalgostrategypool package, this is how it works internally on the AlgoBulls Core Trading Engine.

    "},{"location":"support/support_pyalgo/","title":"Support pyalgo","text":"

    In this dedicated section, you'll find everything you need to receive the support you deserve for pyalgotrading. Whether it's troubleshooting an issue or seeking clarification, we've got you covered every step of the way. Requesting Support from pyalgotrading Module:

    If you're looking to raise a support request from pyalgotrading module, follow these simple steps: - Start by executing your strategy from the pyalgotrading module. - Next, navigate to the \"My Coded Strategies\" section in python build web.

    My Coded Strategies: This section displays all the strategies you've created or modified. It includes both new and updated strategies.

    From this section, select the strategy you're experiencing issues with.

    Need Support: If you require assistance with a specific strategy, you can raise a support request from here. Please ensure that your strategy is present in the My Coded Strategies section.

    After clicking on Need Support, you'll see a popup window. Here, select the strategy for which you need assistance and explain you issue in brief.

    Then, click the Submit button. Our support team will actively assist you with any issues you're facing.

    "},{"location":"support/support_pybuild/","title":"Python Build Support","text":"

    Welcome to the realm of unparalleled support at AlgoBulls, where your algorithmic trading journey takes centre stage. Whether you're navigating the Python Build Web or harnessing the power of pyalgotrading, our commitment to your success remains unwavering. The Python Build Support page is your gateway to a world where every query, every challenge is met with expertise and dedication. We understand that your experience matters, and so does every line of code you craft.

    "},{"location":"support/support_pybuild/#steps-to-get-the-support-you-need","title":"Steps to get the support you need.","text":""},{"location":"support/support_pybuild/#choose-your-strategy","title":"Choose your strategy","text":"
    • Log in to your AlgoBulls account and choose Python Build from the left-side menu.
    • From the Python Build Splash Screen, choose the My Coded Strategies section display card. This is the section that holds all your saved strategies, whether you have coded them from scratch or modified them from ready templates.
    • Click and open the strategy that you think requires our assistance.

    "},{"location":"support/support_pybuild/#need-support","title":"Need Support","text":"
    • In the chosen strategy, click on the Need Support button on the top right corner of the page.

    • From the pop-up window that appears, click on the Select Strategy dropdown and choose the name of your strategy.

    • Write your query in the Explain your query briefly dialog box. This will help our team to get the best solution for you.

    • Click the Submit button. Our team will reach out to you with the solution within 1-2 business days.

    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Python Build","text":""},{"location":"#algobulls","title":"AlgoBulls","text":"

    Welcome to AlgoBulls, the AI-powered trading platform that unlocks new dimensions in algorithmic trading. Our mission is to boost your expertise in designing and executing personalised trading strategies using our cutting-edge product - Python Build.

    "},{"location":"#introducing-python-build-your-gateway-to-algorithmic-trading","title":"Introducing Python Build: Your Gateway to Algorithmic Trading","text":"

    Python Build is your ultimate companion for crafting and executing trading strategies with the precision of a seasoned professional. Designed for both experienced traders and newcomers, this platform offers a range of powerful tools that empower you to make well-informed decisions and trade confidently in dynamic financial markets.

    When it comes to strategy development, Python Build lets you dive into coding, backtesting, and deploying your trading strategies with remarkable ease. With an intuitive interface, you gain the ability to precisely set entry and exit points, handle multiple instruments, and take actions based on informed insights.

    What sets Python Build apart is its adaptable strategy format, suitable for various trading styles. Whether you're into backtesting, paper trading, or live trading, the same strategy code works for all three, making the experience straightforward.

    The library covers all scenarios (backtesting, paper trading, and live trading) during strategy execution or generating analytics. This unified approach ensures seamless transitions between these modes, eliminating the need for complex adjustments. Additionally, it simplifies the creation of progress logs, helping you track your journey and anticipate completion times. For real-time updates, live logs are available too, offering transparency and control over your trading endeavours.

    Python Build's strength lies in its seamless integration with real-time market data sources, historical data, and trading platforms. Its adaptable nature enables connection with various data providers and broker APIs, ensuring access to the information you need for well-informed trading decisions.

    "},{"location":"#powerful-stats-visual-analytics","title":"Powerful Stats & Visual Analytics","text":"

    In the pursuit of successful trading, Python Build equips you with advanced visual tools for strategy analytics. These tools provide a deeper understanding of your strategies' performance, helping you manage risks and fine-tune your plans for optimal success. Visualisations facilitate data-driven decision-making, giving you clearer insights into the intricacies of your trading activities.

    "},{"location":"#multiple-platforms-to-use-python-build","title":"Multiple Platforms to use Python Build","text":"

    To support our diverse community of users, we have the options of two dynamic platforms for our users to use Python Build - pyalgotrading and Python Build Web

    Explore our Python Package: Pyalgotrading

    Dive into the amazing Features of our Web-App: Python Build Web

    "},{"location":"#join-the-community","title":"Join the Community","text":"

    AlgoBulls is more than just a platform; it's a community. Connect, learn, and collaborate with traders and developers. Code your strategies or explore ours \u2013 AlgoBulls is where innovation meets trading expertise.

    By becoming part of the Python Build community, you tap into a rich network of traders and developers. This community serves as a platform for collaboration, offering guidance, valuable insights, and collective refinement of trading strategies. Diverse perspectives help you approach trading challenges from multiple angles, fostering growth and improvement.

    Join us in this journey as AlgoBulls revolutionizes algorithmic trading!

    In essence, Python Build is more than a product; it's your comprehensive guide to mastering algorithmic trading. With its user-friendly interface, diverse functionalities, and seamless integration, it's a valuable asset for traders of all levels. By simplifying strategy crafting, integration, execution, and analysis, Python Build empowers you to navigate the trading world with confidence and precision.

    "},{"location":"#open-source-strategy-library","title":"Open Source Strategy Library","text":"

    We maintain an open source GitHub repository, pyalgostrategypool containing fully functional algorithmic trading strategies. These strategies can be used for Backtesting, Paper Trading, or Live Trading across various brokers and exchanges. The same code works in all trading modes.

    Keep an eye on our GitHub repo

    Our team periodically updates the library to add more strategy Python codes

    For those new to algorithmic trading or Python Build, exploring included example strategies is an excellent starting point. These strategies are pre-built scenarios showcasing different trading strategies and concepts. By studying and experimenting with these examples, you'll gain a deeper grasp of how Python Build operates and how strategies are constructed.

    Here's what you can do with the example strategies:

    • Analyze Structure: Study code structure, including strategy definition, condition setting, and action execution.
    • Modify and Experiment: Once comfortable with examples, customise them to your preferences. Adjust parameters, conditions, and actions to observe their impact on trading outcomes.

    • Learn Strategies: Each example represents a different trading approach, like trend-following or mean-reversion. Studying these examples introduces you to various trading strategies and their underlying principles.

    Remember, these example strategies lay the foundation for your learning journey. As you grow more familiar with the library, you can create and customise your own strategies based on your insights and preferences.

    To conclude, the installation process readies you to use Python Build, while the documentation and example strategies empower you to explore the library's capabilities and apply them to real trading situations. Whether you're a beginner or a seasoned trader...

    "},{"location":"#limitations-of-python-build","title":"Limitations of Python Build","text":"

    In the exciting world of algorithmic trading, Python Build offers numerous benefits and considerations for traders and developers. Let's also acknowledge its limitations to help you make an informed decision.

    1. Python Speed Limitations: While versatile, Python isn't the fastest language for computation. This may pose challenges for complex strategies requiring extensive calculations. Our team is actively transitioning a major part of the codebase to Cython to enhance speed while retaining Python's simplicity. We're also exploring options like GPUs for the future.

    2. Cloud Cold-Start Speed Limitations: Each strategy runs on a dedicated virtual server in the cloud. While this ensures secure execution with dedicated resources, there's a short delay as the cloud fetches the resource before strategy execution begins. This minor delay is part of our ongoing optimization efforts.

    Note

    Our team is working round the clock to make these limitations a thing of the past.

    "},{"location":"#references","title":"References","text":"

    To unleash Python Build's full potential, dive into its comprehensive documentation. This roadmap offers detailed insights into the product's features, functionalities, and capabilities. It's your go-to resource for harnessing the power of Python Build effectively. The documentation includes:

    • Code Examples: Real code snippets showcasing how to implement specific strategies, functions, and techniques using Python Build.
    • Python Cookbook for Algorithmic Trading: A Python Cookbook for Algorithmic Trading, explaining in-depth about strategy creation and execution from scratch using Python. Explore the technical content of the book on GitHub.
    "},{"location":"analytics/pyalgotrading_analytics/","title":"Pyalgotrading Analytics","text":""},{"location":"analytics/pyalgotrading_analytics/#metric-values-and-statistics","title":"Metric Values and Statistics","text":""},{"location":"analytics/pyalgotrading_analytics/#cumulative-returns","title":"Cumulative Returns","text":"
    • The Cumulative Returns chart illustrates how our strategy's returns value has evolved over time in percentage.
    • Positive values indicate gains, while negatives reflect losses. Bigger positive returns are more favourable.
    • Keep in mind, this chart focuses on gains and losses, excluding risk and timing considerations.
    • There are 2 sub categories of cumulative returns chart depending on the scale we are using. One is normal scaled and other is log scaled
    "},{"location":"analytics/pyalgotrading_analytics/#end-of-year-returns-eoy","title":"End of Year Returns (EoY)","text":"
    • The End of Year Returns chart showcases our strategy's annual performance as a percentage.
    • It quantifies its overall performance, considering gains or losses throughout each year.
    "},{"location":"analytics/pyalgotrading_analytics/#distributions-of-monthly-returns-histogram","title":"Distributions of Monthly Returns (Histogram)","text":"
    • In the Monthly Returns Distribution Histogram, we see the frequency distribution of different levels of returns over consecutive months.
    • This histogram helps us understand the range and patterns in monthly returns, shedding light on our strategy's volatility and performance trends.
    "},{"location":"analytics/pyalgotrading_analytics/#daily-returns","title":"Daily Returns","text":"
    • The Daily Returns Chart portrays the percentage change in our strategy's returns between trading days.
    • It provides insights into short-term volatility, trend analysis, and risk assessment.
    "},{"location":"analytics/pyalgotrading_analytics/#rolling-volatility-6-months","title":"Rolling Volatility (6 months)","text":"
    • A Rolling Volatility (6 months) Plot showcases the changing volatility of an investment over time using a rolling window of six months.
    • This plot reveals how the investment's price fluctuations vary as the window moves across the dataset.
    • It provides insights into short-term volatility patterns, helping investors understand how the investment's risk level evolves in response to different market conditions.
    "},{"location":"analytics/pyalgotrading_analytics/#rolling-sharpe-6-months","title":"Rolling Sharpe (6 months)","text":"
    • A Rolling Sharpe (6 months) Plot illustrates the dynamic changes in the Sharpe ratio over time using a rolling window of six months.
    • The plot shows how the risk-adjusted performance of an investment fluctuates as the window moves through the dataset.
    • This visualization helps investors understand how the Sharpe ratio varies with changing market conditions and provides insights into the investment's consistency and risk-return trade-offs over short-term periods.
    "},{"location":"analytics/pyalgotrading_analytics/#rolling-sortino-6-months","title":"Rolling Sortino (6 months)","text":"
    • A Rolling Sortino (6 months) Plot visualizes the variation in the Sortino ratio over time using a rolling window of six months.
    • This plot demonstrates how the investment's risk-adjusted performance, considering only downside volatility, changes as the window progresses through the data.
    • It offers insights into how the Sortino ratio evolves with market conditions, helping investors assess the investment's ability to generate favorable risk-adjusted returns over short-term intervals.
    "},{"location":"analytics/pyalgotrading_analytics/#worst-5-drawdown-periods","title":"Worst 5 Drawdown Periods","text":"
    • A Worst 5 Drawdown Periods plot displays the top five periods during which the strategy experienced the largest declines from peak to trough.
    • This visualization helps strategists understand the most significant loss-making episodes in the strategy's run.
    • It shows the magnitude and duration of these drawdowns, providing insights into the strategy's risk and potential vulnerabilities.
    "},{"location":"analytics/pyalgotrading_analytics/#underwater-plot","title":"Underwater Plot","text":"
    • The Underwater Plot visually narrates our strategy's performance concerning its past peaks.
    • It showcases how much our returns value has dropped from its highest point over time.
    • This aids in visualising periods of drawdown and recovery, offering insights into historical risk and resilience.
    "},{"location":"analytics/pyalgotrading_analytics/#monthly-returns-heatmap","title":"Monthly Returns (Heatmap)","text":"
    • The Monthly Returns Heatmap offers a colour-coded view of our strategy's performance across months.
    • Shades of green indicate positive returns, while shades of red signify losses.
    • This visual tool helps spot trends and patterns, aiding in identifying strong and weak performance periods.
    "},{"location":"analytics/python-build-view-results/","title":"Python build view results","text":""},{"location":"analytics/python-build-view-results/#how-to-view-the-results","title":"How to view the Results?","text":"

    Once you start the strategy, it may take a while for it to complete the execution. You can switch to the Analytics tab after you run your strategy. Even if the strategy execution is not complete, you will still see intermediate results.

    Analytics: In the analytics section, you can view a strategy\u2019s Stats & various other metrics in the form of graphs like P&L.

    "},{"location":"analytics/python-build-view-results/#stats","title":"Stats","text":"

    In this section you can see the total returns, sharpe ratio, sortino ratio, volatility, Max Drawdown, Total wins or Loses, Total short or long trades, hit ratio, number of trades, average trades per day, max profit, max loss, average profit per winning trade, average loss per losing trade.

    "},{"location":"analytics/python-build-view-results/#cumulative-returns","title":"Cumulative Returns","text":""},{"location":"analytics/python-build-view-results/#profit-loss-currency-or","title":"Profit & Loss (Currency or %)","text":"

    The trade by trade P&L in Currency or Percentage.

    "},{"location":"analytics/python-build-view-results/#end-of-year-returns-plot","title":"End of Year Returns Plot (%)","text":""},{"location":"analytics/python-build-view-results/#monthly-returns-histogram","title":"Monthly Returns Histogram (%)","text":""},{"location":"analytics/python-build-view-results/#monthly-returns-heatmap","title":"Monthly Returns Heatmap (%)","text":""},{"location":"analytics/python-build-view-results/#daily-returns","title":"Daily Returns (%)","text":""},{"location":"analytics/python-build-view-results/#underwater-drawdown-plot","title":"Underwater Drawdown Plot (%)","text":""},{"location":"analytics/python-build-view-results/#pl-book","title":"P&L Book","text":"

    View detailed trade by trade report. Premium users can analyze this data in the form of heatmaps for Gross Profit & Loss, Trading Volume & Total number of Trades.

    "},{"location":"analytics/python-build-view-results/#user-log","title":"User Log","text":"

    Real-time logs from strategy execution are displayed in this section. Use these logs to debug your strategy\u2019s behavior and performance.

    "},{"location":"analytics/python-build-view-results/#order-history","title":"Order History","text":"

    View the order state transition for every order placed by your strategy in-depth.

    "},{"location":"brokers/broker_alpaca_guide/","title":"Alpaca","text":"

    Alpaca is a technology company that offers a modern, developer-friendly trading platform designed for algorithmic and automated trading in the financial markets, particularly focused on equities and cryptocurrencies. The company provides APIs ( Application Programming Interfaces) that allow developers and traders to access market data, execute trades, and build their own algorithmic trading strategies.

    Key features and offerings of Alpaca include:

    1. APIs and SDKs: Alpaca offers APIs and software development kits (SDKs) that enable developers to programmatically access real-time and historical market data, as well as execute trades on various exchanges.

    2. Algorithmic Trading: Alpaca's platform is tailored for algorithmic trading strategies, where traders can automate trading decisions based on predefined conditions and rules.

    3. Paper Trading: Alpaca provides a simulated environment called \"paper trading,\" allowing traders to test their strategies in a risk-free setting before deploying them with real money.

    4. Market Data: The platform offers access to real-time and historical market data, which is crucial for building and testing trading strategies.

    5. Order Execution: Traders can use Alpaca's API to execute trades on supported exchanges. This includes submitting market, limit, and stop orders.

    6. Customizable Dashboards: Alpaca provides customizable dashboards and interfaces to monitor trading activity and portfolio performance.

    7. Brokerage Services: Alpaca acts as a brokerage, providing services that allow traders to execute their strategies on supported exchanges.

    8. Regulatory Compliance: Alpaca operates within the regulations of the financial industry, ensuring compliance with rules and requirements.

    Alpaca's platform aims to democratize algorithmic trading by providing accessible tools and resources for both individual traders and developers. It's worth noting that the landscape of algorithmic trading and financial technology is constantly evolving, so it's a good idea to check Alpaca's official website for the most current information about their offerings and services.

    "},{"location":"brokers/broker_alpaca_guide/#advantages-of-binding-alpaca-with-your-algobulls-account","title":"Advantages of binding Alpaca with your AlgoBulls account","text":"
    • You can run your strategies on American exchanges like NASDAQ or NYSE.
    • It helps you access the historical data as well as live data of all the stocks from Alpaca.
    • It will also help you backtest, paper trade and live trade on AlgoBulls.
    "},{"location":"brokers/broker_alpaca_guide/#how-to-bind-alpaca-with-your-algobulls-account","title":"How to bind Alpaca with your AlgoBulls account?","text":"

    You can connect your Alpaca account with AlgoBulls in two ways: OAuth and Non-OAuth.

    • OAuth Method: Follow the simple steps mentioned here to connect using OAuth.
    • Non-OAuth Method: For the Non-OAuth method, you can follow the steps mentioned here.

    WARNING: We have discontinued the Non-OAuth method in accordance with Alpaca\u2019s recommendations. Please use the OAuth method for seamless integration and improved security. Be mindful of this update as you proceed with your integrations.

    "},{"location":"brokers/connecting_alpaca/","title":"OAuth","text":"

    Embark on a streamlined and secure journey as you bind your Alpaca broker with AlgoBulls through OAuth integration. This seamless process ensures a robust connection between your accounts, allowing for efficient data exchange and trading activities. With OAuth binding, you can experience the convenience of a secure link without compromising on the integrity of your financial operations. Follow our comprehensive guide to effortlessly set up OAuth binding and unleash the full potential of AlgoBulls with Alpaca integration.

    "},{"location":"brokers/connecting_alpaca/#an-overview","title":"An overview","text":"
    • Navigate to the Broking Detailspage on the AlgoBulls platform.
    • Here you will see all the brokers you have connected and their current statuses.
    "},{"location":"brokers/connecting_alpaca/#how-to-set-up-alpaca-for-trading-in-algobulls-with-oauth","title":"How to set up Alpaca for trading in AlgoBulls with OAuth?","text":"

    Before this step, please make sure you have an Alpaca account. Click here to visit the Alpaca site for creating your account.

    "},{"location":"brokers/connecting_alpaca/#add-broker","title":"Add Broker","text":"
    • Click on Add Broker.
    "},{"location":"brokers/connecting_alpaca/#search-for-alpaca","title":"Search for Alpaca","text":"
    • On the pop-up window that appears, you have a search bar for finding your desired broker.

    • Type Alpaca in the search dialog box

    • Click on Alpaca Paper (OAuth) for choosing your Alpaca Paper Account.
    • Click on Alpaca Live (OAuth) for choosing your Alpaca Live Account.

    "},{"location":"brokers/connecting_alpaca/#provide-permission","title":"Provide Permission","text":"
    • After clicking on Alpaca Paper (OAuth) or Alpaca Live (OAuth), you will be redirected to the Alpaca website for permission.
    • You will be asked to login if you are not already logged in.
    • On the dialog box that appears, click Allow. This will bind your Alpaca account with the AlgoBulls account.
    • On successful authorisation, you will be redirected to the AlgoBulls platform and you will be able to see your broker on the Broking Detailspage.

    WARNING: We have discontinued the Non-OAuth method in accordance with Alpaca\u2019s recommendations. Please use the OAuth method for seamless integration and improved security. Be mindful of this update as you proceed with your integrations.

    "},{"location":"brokers/non_auth_alpaca/","title":"Non-OAuth","text":"

    We have discontinued the Non-OAuth method in accordance with Alpaca\u2019s recommendations. Please use the OAuth method for seamless integration and improved security. Be mindful of this update as you proceed with your integrations.

    If you are seeking an alternative to OAuth, the Non-OAuth binding option provides a straightforward and reliable approach to connect your Alpaca broker with AlgoBulls. This method ensures a direct and effective link between your accounts, maintaining the simplicity and efficiency that defines the AlgoBulls experience. Discover the step-by-step process to establish Non-OAuth binding and gain immediate access to the powerful synergy between AlgoBulls and Alpaca, facilitating seamless trading and data synchronisation.

    "},{"location":"brokers/non_auth_alpaca/#how-to-set-up-alpaca-for-trading-in-algobulls-with-non-oauth","title":"How to set up Alpaca for trading in AlgoBulls with Non-OAuth?","text":"

    Before trying to bind your broker, please make sure you have an Alpaca account or follow the steps given below to create your account.

    "},{"location":"brokers/non_auth_alpaca/#create-your-alpaca-account","title":"Create your Alpaca Account","text":"
    • Go the the official Alpaca website
    • Click on sign up for free.
    • Follow the steps there and add your details to create the account.
    "},{"location":"brokers/non_auth_alpaca/#api-keys","title":"API keys","text":"
    • After creating your account, login to access the homepage.
    • Click on View API Keys on the right side under the Quick Trade block.
    • Click on regenerate to create API and Secret Key.
    • On regenerating, you will get fresh API keys under the Key section and a secret key under the Secret section.
    "},{"location":"brokers/non_auth_alpaca/#add-broker","title":"Add Broker","text":"
    • Click on Add Broker.
    "},{"location":"brokers/non_auth_alpaca/#search-for-alpaca-non-oauth","title":"Search for Alpaca Non-OAuth","text":"
    • On the pop-up window that appears, you have a search bar for finding your desired broker..
    • Type Alpacain the search box and choose Alpaca Non-OAuth from the search results.
    "},{"location":"brokers/non_auth_alpaca/#provide-api-and-secret-key","title":"Provide API And Secret key","text":"
    • After clicking Alpaca Non-OAuth, you will see a dialog box requesting your API and Secret key.
    • Enter your keys there and click Confirm to bind Alpaca with your AlgoBulls account.
    • On successful authorisation, you will be redirected to the AlgoBulls platform and you will be able to see your broker on the Broking Details page.
    "},{"location":"gen_ai/gen_ai_prompt_library/","title":"Prompt Library for Gen AI","text":""},{"location":"gen_ai/gen_ai_prompt_library/#here-are-some-prompts-for-creating-strategy-using-genai","title":"Here are some prompts for Creating Strategy using GenAI","text":""},{"location":"gen_ai/gen_ai_prompt_library/#moving-averages-ema-or-sma","title":"Moving Averages (EMA or SMA)","text":"

    Create a trading strategy which takes a BUY trade when EMA cuts SMA upwards and a SELL trade when EMA cuts SMA downwards. While placing a trade, if a previous position is open, it should be exited before placing the new trade\n
    Create a strategy which uses 2 EMAs of different time periods, and it BUYs when EMA of timeperiod 1 crosses the EMA of timeperiod 2 upwards and SELLs when EMA of timeperiod 1 crosses the EMA of timeperiod 2 downwards.\n
    Create a trading strategy which takes a BUY trade when EMA cuts SMA upwards and a SELL trade when EMA cuts SMA downwards. While placing a trade, if a previous position is open, it should be exited before placing the new trade\n
    Develop a strategy that generates a BUY signal when a shorter-term moving average crosses above an intermediate-term moving average, which then crosses above a longer-term moving average. Conversely, generate a SELL signal when the moving averages crossover in the opposite direction.\n

    "},{"location":"gen_ai/gen_ai_prompt_library/#relative-strength-index-rsi","title":"Relative Strength Index (RSI)","text":"

    Create a strategy that uses RSI indicator to give signals based on over bought or over sold conditions. If RSI is above 70, the strategy should generate a SELL signal and if it's below 30, it should generate a BUY signal\n
    Create a strategy using RSI of MACD-signal of close with fast MA period as X, slow MA period as Y and signal period as Z, which will SELL on crossing the upper band and BUY on crossing the lower band\n
    Create a trading strategy which takes BUY when RSI crosses lower band and create a SELL when RSI crosses the upward band, set a stop loss of 2% and target to be 15%.\n
    Create a trading strategy using RSI technical indicator\n
    Create a strategy using RSI of MACD-signal of close with fast MA period as X, slow MA period as Y and signal period as Z, which will SELL on crossing the upper band and BUY on crossing the lower band\n
    Please help me with a strategy that uses RSI indicator to give signals based on over bought or over sold conditions. If RSI is above 70, the strategy should generate a SELL signal and if it's below 30, it should generate a BUY signal\n
    Create a trading strategy which takes BUY when RSI crosses lower band and create a SELL when RSI crosses the upward band, set a stop loss of 2% and target to be 15%.\n

    "},{"location":"gen_ai/gen_ai_prompt_library/#aroon","title":"Aroon","text":"
    Create a trading strategy that utilizes the Aroon indicator to generate signals based on overbought or oversold conditions. If the Aroon Up line crosses below the Aroon Down line and falls below 30, the strategy should generate a BUY signal. Conversely, if the Aroon Up line crosses above the Aroon Down line and rises above 70, the strategy should generate a SELL signal\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#stochastic","title":"Stochastic","text":"

    Develop a trading strategy that incorporates the stochastic crossover to generate signals. When the %K line crosses above the %D line and both lines are below 30, the strategy should generate a BUY signal. Similarly, when the %K line crosses below the %D line and both lines are above 70, the strategy should generate a SELL signal\n
    Develop a strategy that generates a BUY signal when the Stochastic RSI indicator crosses above the oversold level (e.g., 20) and a SELL signal when it crosses below the overbought level (e.g., 80).\n

    "},{"location":"gen_ai/gen_ai_prompt_library/#bollinger-bands-bb","title":"Bollinger Bands (BB)","text":"
    Develop a strategy that generates a BUY signal when the price breaks above the upper Bollinger Band. Similarly, generate a SELL signal when the price breaks below the lower Bollinger Band\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#atr-volatility","title":"ATR (Volatility)","text":"
    Develop a strategy that generates a BUY signal when the price surpasses a multiple of the ATR above a recent swing high, indicating increased volatility and potential upward momentum. Conversely, generate a SELL signal when the price drops below a multiple of the ATR below a recent swing low, indicating increased volatility and potential downward momentum.\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#moving-average-convergence-divergence-macd","title":"Moving Average Convergence Divergence (MACD)","text":"
    Create a strategy that generates a BUY signal when the MACD histogram bars cross above the zero line and a SELL signal when the histogram bars cross below the zero line.\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#volume-weighted-average-price-vwap","title":"Volume Weighted Average Price (VWAP)","text":"
    Create a strategy that generates a BUY signal when the price rises above the VWAP line and a SELL signal when the price drops below the VWAP line, indicating potential shifts in supply and demand.\n
    "},{"location":"gen_ai/gen_ai_prompt_library/#miscellaneous","title":"Miscellaneous","text":"
    Create a strategy that generates a BUY signal when the price crosses above the cloud (Span A and Span B) and the cloud changes color from red to green. Conversely, generate a SELL signal when the price crosses below the cloud and the cloud changes color from green to red.\n
    Develop a strategy that generates a BUY signal when the price crosses above the Parabolic SAR dots and a SELL signal when the price crosses below the dots.\n
    Implement a gap and go strategy that capitalizes on the momentum created by price gaps at the market open. When the price gaps up significantly and continues to move higher, generate a BUY signal. Similarly, when the price gaps down substantially and continues to move lower, generate a SELL signal.\n
    "},{"location":"gen_ai/get_open_ai_keys/","title":"OpenAI","text":""},{"location":"gen_ai/get_open_ai_keys/#what-is-chat-gpt","title":"What is Chat-GPT ?","text":"

    Generative AI involves creating new content using machine learning. A key method is GANs, where a generator creates data and a discriminator evaluates its realism. Another method is VAEs, which encode and decode data. ChatGPT is a specific AI model using generative text, like a conversation. It can understand context, answer questions, and generate text in a human-like manner. It finds use in various fields, from text generation to customer service, but also raises concerns about accuracy and responsible use.

    "},{"location":"gen_ai/get_open_ai_keys/#why-we-use-chat-gpt","title":"Why we use Chat-GPT ?","text":"

    ChatGPT can assist in generating code for algorithmic trading strategies. It can translate strategy ideas into code snippets, provide coding guidance, and help with customization. However, human expertise is essential to validate, optimize, and manage risks in the complex realm of algorithmic trading.

    "},{"location":"gen_ai/get_open_ai_keys/#how-to-get-chat-gpt-api-keys","title":"How to get Chat-GPT API keys ?","text":"

    To get your chat GPT API keys, you can watch the video given below

    Or

    You can simply follow the steps here:

    "},{"location":"gen_ai/get_open_ai_keys/#step-1-loginsignup","title":"Step 1 - Login/Signup","text":"

    Login or Signup in your open AI account, you can use gmail account, microsoft account or apple account to signup.

    "},{"location":"gen_ai/get_open_ai_keys/#step-2-open-your-profile","title":"Step 2 - Open Your Profile","text":"

    Once you are on the home page of your account, you can select your profile on top-right corner, and then select the option View API Keys from the drop-down menu.

    "},{"location":"gen_ai/get_open_ai_keys/#step-3-generate-new-secret-keys","title":"Step 3 - Generate New Secret Keys","text":"

    Now that you are in the API Keys section, you will have to create a new key.

    "},{"location":"gen_ai/get_open_ai_keys/#step-4-get-secrete-keys","title":"Step 4 - Get Secrete Keys","text":"

    On clicking Create new secret key a pop-up will appear, where you can enter the key name, which is for your reference to remember multiple secret keys, once done, there will be another section where you can copy the open-ai secret keys.

    "},{"location":"gen_ai/get_open_ai_keys/#step-5-ready-to-go-with-algobulls","title":"Step 5 - Ready to go with AlgoBulls","text":"

    Once you have copied your secret key then you can now save it on your AlgoBulls Account for accessing the gen-ai feature to create a strategy, and there you go. To know how to save keys and start with generating strategies using Chat-GPT, click here Happy Trading !

    "},{"location":"pyalgotrad/brokerage/","title":"Brokerage","text":""},{"location":"pyalgotrad/brokerage/#brokerage","title":"Brokerage","text":"
    • Parameter Name: broker_commission_percentage
    • Type: float
    • Default Value: None
    • Definition: Brokerage is the fee charged by your broker for executing a trade. It's usually a percentage of the trade value. The broker_commission_percentage parameter lets you specify the brokerage fee as a percentage.
    • Explanation: Brokers charge a fee for executing your trades, and this fee is often a percentage of your trade amount. You can adjust this parameter to match the fees your broker charges.

    • Parameter Name: broker_commission_price

    • Type: float
    • Default Value: None
    • Definition: The broker_commission_price parameter allows you to specify a fixed broker fee per trade. This fee is added on top of the percentage-based brokerage. It accounts for any flat fees associated with your trades.
    • Explanation: In addition to the percentage-based fees, some brokers charge a fixed fee for every trade. Use this parameter to include those fixed fees in your backtesting calculations.
    "},{"location":"pyalgotrad/brokerage/#how-to-use","title":"How to Use","text":"

    To incorporate slippage and brokerage into your backtesting, simply pass the desired values for slippage_percent, broker_commission_percentage, and broker_commission_price when calling the algobulls_connection.get_backtesting_report_pnl_table function. These parameters help you account for real-world trading costs and execution variations, making your backtesting results more realistic.

    • Note: When both broker_commission_percentage and broker_commission_price are provided, the function will automatically calculate the brokerage cost using both parameters and select the option that results in the lower brokerage cost. This ensures that you pay the minimum brokerage fees for your trades.
    "},{"location":"pyalgotrad/brokerage/#example","title":"Example","text":"
    import algobulls_connection\n# Fetch PnL data for a trading strategy with custom slippage and brokerage settings\npnl_table = algobulls_connection.get_backtesting_report_pnl_table(\n    strategy_code=\"your_strategy_code\",\n    show_all_rows=True,\n    force_fetch=True,\n    country='USA',\n    broker_commission_percentage=1.5,  # Adjust brokerage percentage as needed\n    broker_commission_price=0.3,      # Adjust fixed brokerage cost as needed\n    slippage_percent=4.5,             # Adjust slippage percentage as needed\n)\n# Print the PnL table with custom slippage and brokerage settings\nprint(pnl_table)\n
    "},{"location":"pyalgotrad/introduction/","title":"pyalgotrading","text":""},{"location":"pyalgotrad/introduction/#introduction","title":"Introduction","text":"

    Welcome to the Pyalgotrading Documentation \u2013 your guide to practising and acquainting yourself with the pyalgotrading package. Pyalgotrading, built with Python, is an algorithmic trading library that empowers you to design and implement trading strategies on a variety of financial instruments, such as equities, futures, and options. To embark on your journey with Pyalgotrading, ensure you have an active AlgoBulls account, a platform designed for creating and testing trading strategies.

    "},{"location":"pyalgotrad/introduction/#key-features","title":"Key Features","text":"
    • Powered by the AlgoBulls Platform
    • Everything related to Algorithmic Trading Strategies!
      • Free pool of Strategies are available at pyalgostrategypool!
      • Create & upload strategies easily on the cloud
      • Support for all 150+ Technical Indicators provided by TA-Lib
      • Support for multiple candlesticks patterns - Japanese OHLC, Renko, Heikin-Ashi, Linebreak
      • Support for multiple candle intervals - 1 minute, 3 minutes, 5 minutes, 10 minutes, 15 minutes, 30 minutes, 1 hour, 1 day.
      • Support for Regular Orders, Bracket Orders and Cover Orders
      • Support for MARKET, LIMIT, STOPLOSS-LIMIT, STOPLOSS-MARKET orders
      • Support for INTRADAY and DELIVERY orders
    • Support for Backtesting
    • Support for Paper Trading
    • Support for Live Trading / Real Trading
    • Support for multiple brokers for Live Trading. Check list of supported brokers here.
    • Real-time Logs for Backtesting, Paper Trading, Live Trading
    • Multiple real-time Reports available for Backtesting, Paper Trading and Live Trading:
      • Profit-&-Loss report (P&L report)
      • Statistics Report
      • Order History Log for each order with state transitions & timestamps
      • Detailed analytics with charts
    • Support for calculating Slippage
    • Support for calculating Brokerage
    • Support for importing external P&L table and generating analytics on the same
    • Plot Candlestick charts using plotly.py

    Backtesting, Paper Trading and Real Trading can be performed on the same strategy code base!

    Prerequisites

    Before you commence development, make sure to establish your workspace and gather all prerequisites as outlined here.

    "},{"location":"pyalgotrad/introduction/#support-seeking-assistance","title":"Support / Seeking Assistance","text":"
    • Bug Reporting / New Feature Request: Create a new issue on GitHub.
    • Engage in Discussion: Join fellow developers on the discussion forum.
    • Discussion Community: Join fellow algotrading ninjas on the discussion Slack
    • Additional Support: For further help, contact support@algobulls.com.
    "},{"location":"pyalgotrad/introduction/#overview","title":"Overview","text":"
    1. Check out the basic structure of a strategy: Before coding your strategy, refer to the basic structure guide provided by the Pyalgotrading package. This will help you understand the trading strategy methods and flow.

    2. Code your own simple strategy using the pyalgotrading package: Use your Python IDE to code your trading strategy using the pyalgotrading package. You can also use ready-made strategies from the pyalgostrategypool package if you prefer not to code your own.

    3. Upload your strategy to the platform: Upon coding your strategy, upload it to the AlgoBulls platform by crafting a new strategy and uploading the corresponding file.

    4. Run Backtest / Paper Trade / Real Trade with your strategy: Once uploaded, initiate backtests, paper trades, or real trades on the AlgoBulls platform to evaluate its performance.

    5. Retrieve real-time logs, review reports and stats, and inspect order history:Monitor your strategy's performance by fetching runtime logs, examining reports and statistics, and reviewing your order history to track executed trades.

    6. Reach out to AlgoBulls Support for any queries: If you encounter issues during the tutorial, contact the AlgoBulls Support team for assistance.

    "},{"location":"pyalgotrad/introduction/#conclusion","title":"Conclusion","text":"

    This documentation serves as your launchpad into the Pyalgotrading package and the creation of your trading strategies. It also steers you through the process of uploading, executing, and monitoring strategies on the AlgoBulls platform. Our goal is to equip you with the expertise needed to craft effective trading strategies using Pyalgotrading.

    "},{"location":"pyalgotrad/introduction/#contribution-guidelines","title":"Contribution Guidelines","text":"
    1. Fork this project to your account.
    2. Create a branch for the change you intend to make.
    3. Make your changes to your fork.
    4. Send a pull request from your fork\u2019s branch to our master branch.
    "},{"location":"pyalgotrad/prerequisites/","title":"Setup your Workspace","text":""},{"location":"pyalgotrad/prerequisites/#prerequisites","title":"Prerequisites","text":"

    You will need the following to start with Pyalgotrading:

    "},{"location":"pyalgotrad/prerequisites/#algobulls-account","title":"AlgoBulls Account","text":"

    To upload and test your strategies, you will need this account. You can create your account for FREE on the Algobulls website.

    "},{"location":"pyalgotrad/prerequisites/#developer-key","title":"Developer Key","text":"

    To access the features, you will need a developer key. The key can be obtained as follows:

    • Step 1: Activate the Advanced Developer Plan from the Pricing menu.
    • Step 2: Get the Developer Key from the Settings section.

    Please Note

    For security reasons, the developer key will get reset every time you log out from your AlgoBulls account.

    Once you have the developer key, you can access the AlgoBulls platform using pyalgotrading functions.

    "},{"location":"pyalgotrad/prerequisites/#python-310","title":"Python 3.10+","text":"

    The Pyalgotrading platform can run all strategies that conform to Python 3.8 or higher. However, we recommend Python 3.10 or higher.

    Python Tips

    • It is a good idea to set up a virtual environment first while installing Python 3.10.
    • Once Python is installed, most packages are easily installed in your venv using pip install command
    "},{"location":"pyalgotrad/prerequisites/#pyalgotrading-package","title":"Pyalgotrading Package","text":"

    To create and execute your fully automated trading strategies, you only need to install pyalgotrading. You can install the pyalgotrading package using the following command:

    pip install pyalgotrading\n

    "},{"location":"pyalgotrad/prerequisites/#jupyter-notebook","title":"Jupyter Notebook","text":"

    You will use a Jupyter Notebook to connect to the AlgoBulls platform. Using the notebook, you can upload the strategy, test your strategy (Backtesting, Paper Trading, or Real Trading), and fetch logs. Install Jupyter Notebook using the following command:

    pip install jupyter\n

    Pro Tip

    If you are an experienced Pyalgotrading user, Jupyter Notebook might not be necessary. You can directly integrate it into your application.

    "},{"location":"pyalgotrad/prerequisites/#enhancing-productivity","title":"Enhancing Productivity","text":"

    For enhancing your productivity while building and executing strategies using Pyalgotrading, you can make use of Python IDEs of your choice, such as:

    • PyCharm
    • VS Code
    "},{"location":"pyalgotrad/programexample/","title":"Create your Strategy","text":""},{"location":"pyalgotrad/programexample/#previously","title":"Previously...","text":"

    You have covered the basic code structure of a strategy.

    "},{"location":"pyalgotrad/programexample/#now","title":"Now...","text":"

    You can either follow this page to create a strategy, or you can pick up a ready strategy (shown below) and move to the next page.

    "},{"location":"pyalgotrad/programexample/#before-you-start","title":"Before you start...","text":"

    If you want to use a ready strategy from the pyalgostrategypool package, then you can directly jump to the Upload section.

    "},{"location":"pyalgotrad/programexample/#lets-start","title":"Let's Start...","text":"

    Follow the steps given below to create a new strategy of your own.

    Create a python file called strategy_sma_regular_order.py.

    You will add the following code snippets into the file and then save it.

    "},{"location":"pyalgotrad/programexample/#import-statements","title":"Import statements","text":"
    from pyalgotrading.strategy.strategy_base import StrategyBase\nfrom pyalgotrading.constants import *\n
    "},{"location":"pyalgotrad/programexample/#create-the-class-strategysmaregularorder-and-subclass-it-from-strategybase","title":"Create the class StrategySMARegularOrder and subclass it from StrategyBase","text":"

    class StrategySMARegularOrder(StrategyBase):\n
    Now you can add the methods mentioned in the structure inside the class. First you can add the __init__ and the initialize methods.

    "},{"location":"pyalgotrad/programexample/#constructor-def-__init__","title":"Constructor: def __init__()","text":"
    def __init__(self, *args, **kwargs):\n    name = 'SMA Regular Order Strategy'\n    super().__init__(*args, **kwargs)\n\n    self.timeperiod_x = self.strategy_parameters['timeperiod1']\n    self.timeperiod_y = self.strategy_parameters['timeperiod2']\n\n    self.main_order = None\n

    The init method does the following:

    1. name - variable which should store the name of your strategy
    2. super() - Calls the constructor of the superclass.
    3. self.strategy_parameters - Catches the parameters and saves them for local use - When you will submit a testing job for your SMA strategy, you will pass parameters that will be used inside the strategy. For SMA, we are calculating crossover for 2 SMA timeperiod values, example 5 and 12. These 2 parameters will be caught by self.strategy_parameters and stored for local use in self.timeperiod1 and self.timeperiod2.
    4. self.main_order - Create an object that manages orders for you throughout the strategy.

    The init method is specific to Python's internal workings, and it is preceded and succeeded by double underscores ( _ _ ) joined together.

    "},{"location":"pyalgotrad/programexample/#def-initialize","title":"def initialize()","text":"
    def initialize(self):\n    self.main_order = {}\n

    The initialize method sets the self.main_order as an empty dictionary. This method is called at the start of every trading day.

    For instance, say you are submitting a backtesting job for 5 previous days starting at 10:30 every day, then the initialize method will be called every day for 5 days at 10:30.

    Now add the two static methods, name and versions_supprted.

    "},{"location":"pyalgotrad/programexample/#def-name-optional","title":"def name() (optional)","text":"

    If the name variable is defined in __init__(), this function is not needed.

    @staticmethod\ndef name():\n    return 'SMA Regular Order Strategy'\n
    The name should be unique in your collection of strategies.

    "},{"location":"pyalgotrad/programexample/#def-versions_supported-optional","title":"def versions_supported() (optional)","text":"

    not required it will take the latest version of AlgoBullsEngine by default

    @staticmethod\ndef versions_supported():\n    return AlgoBullsEngineVersion.VERSION_3_2_0\n
    Mark both the above methods as @staticmethod.

    The versions_supported method does the following:

    1. It notifies the AlgoBulls platform that the strategy is working correctly for the platform version 3.2.0
    2. Since the platform will be constantly upgraded to incorporate new features and improve efficiency, the version may change.
    3. If the version changes, and if you submit a job for this strategy, then the AlgoBulls platform will spawn a server having version 3.2.0 for your strategy.
    4. Having this method ensures that the AlgoBulls platform always provides the correct environment for your strategy.
    "},{"location":"pyalgotrad/programexample/#def-strategy_select_instruments_for_entry","title":"def strategy_select_instruments_for_entry()","text":"
    def strategy_select_instruments_for_entry(self, candle, instruments_bucket):\n\n    instruments = []\n    meta = []\n\n    for instrument in instruments_bucket:\n        crossover_value = self.get_crossover_value(instrument)\n        if crossover_value == 1:\n            instruments.append(instrument)\n            meta.append({'action': 'BUY'})\n        elif crossover_value == -1:\n            if self.strategy_mode is StrategyMode.INTRADAY:\n                instruments.append(instrument)\n                meta.append({'action': 'SELL'})\n\n    return instruments, meta\n

    The strategy_select_instruments_for_entry method does the following:

    1. instruments and meta - Creates 2 empty lists that will be used to pass the selected instruments and additional information about them respectively.
    2. The Loop - The loop will iterate over each instrument name passed (while submitting the job) and will decide whether to set an entry position or not for it.
    3. crossover_value - The crossover value is calculated and stored here. Crossover values are interpreted as:
      1. Value 1 - Cut upwards
      2. Value -1 - Cut downwards
      3. Value 0 - No crossover
    4. If conditions - If the crossover value is 1, then the instrument is selected for entry position, with the position as 'BUY'. If the crossover value is -1, then the instrument is selected for entry position, with the position as 'SELL'. The selected instrument is appended to the instruments, and the associated action (BUY/SELL) is appended to the meta.
    5. instruments and meta - Both the lists (whether populated or empty) are returned to the platform for further actions.

    Note

    • SELL Entry positions are allowed only if the strategy is running for INTRADAY. DELIVERY strategies do not allow SELL as entry positions. This is taken care of in the elif part.
    • The strategy_select_instruments_for_entry method is called once for every candle time. For Instance, if you submit a job with the candle time as 15 minutes, then this method will be called once for every 15 minute candle.
    • The actual Entry position (BUY/SELL) is not entered here. Here, only the instrument is selected based on the crossover value with the proper action mentioned in the meta. The Entry position will be taken in the next method below.
    • The meta contains a very versatile dictionary object. You may use it to pass any other additional information that you wish.
    "},{"location":"pyalgotrad/programexample/#def-strategy_enter_position","title":"def strategy_enter_position()","text":"
    def strategy_enter_position(self, candle, instrument, sideband_info):\n    if sideband_info['action'] == 'BUY':\n        qty = self.number_of_lots * instrument.lot_size\n        self.main_order[instrument] = \\\n            self.broker.BuyOrderRegular(instrument=instrument,\n                order_code=BrokerOrderCodeConstants.INTRADAY,\n                order_variety=BrokerOrderVarietyConstants.MARKET,\n                quantity=qty)\n    elif sideband_info['action'] == 'SELL':\n        qty = self.number_of_lots * instrument.lot_size\n        self.main_order[instrument] = \\\n            self.broker.SellOrderRegular(instrument=instrument,\n                 order_code=BrokerOrderCodeConstants.INTRADAY,\n                 order_variety=BrokerOrderVarietyConstants.MARKET,\n                 quantity=qty)\n    else:\n        raise SystemExit(f'Got invalid sideband_info value: {sideband_info}')\n\n    return self.main_order[instrument]\n
    "},{"location":"pyalgotrad/programexample/#or","title":"or","text":"
    def strategy_enter_position(self, candle, instrument, meta):\n    self.main_order_map[instrument] = _ = self.broker.OrderRegular(\n        intrument=instrument,                           \n        order_transaction_type=meta['action'],              # 'BUY' or 'SELL'\n        quantity=self.number_of_lots * instrument.lot_size, # number of lots (int)\n        price=None,\n        trigger_price=None\n    )\n    return _\n

    The strategy_enter_position method does the following:

    1. If conditions - The conditions read the action from the sideband_info and perform the required action (BUY/SELL).
    2. qty - The quantity is calculated and stored here. The number of lots will be passed by you as a parameter while submitting a job. The parameter will be caught in self.number_of_lots. The instrument object has the 'lot size', which you can retrieve using instrument.lot_size. You can then use the formula as shown in the code to calculate the quantity.
    3. OrderRegular,BuyOrderRegular and SellOrderRegular - These execute the required action. You need to pass the instrument, order code, order variety and the quantity values.
      • instrument - the instrument on which the BUY/SELL action will be performed.
      • order_code - whether the order is for INTRADAY or DELIVERY. Possible values are:
        • BrokerOrderCodeConstants.INTRADAY
        • BrokerOrderCodeConstants.DELIVERY
        • BrokerOrderCodeConstants.DELIVERY_T1
        • BrokerOrderCodeConstants.DELIVERY_T2
      • order_variety - the type of order variety. Possible values are:
        • BrokerOrderVarietyConstants.MARKET
        • BrokerOrderVarietyConstants.LIMIT
        • BrokerOrderVarietyConstants.STOPLOSS_MARKET
        • BrokerOrderVarietyConstants.STOPLOSS_LIMIT
      • qty - the quantity to BUY/SELL.
    4. self.main_order - The main order (for that particular instrument) is now populated (BUY OR SELL) and is returned to the platform for further actions.

    You can also punch Bracket Orders instead of Regular Orders. A typical BUY Bracket Order will look like this:

    qty = self.number_of_lots * instrument.lot_size\nltp = self.broker.get_ltp(instrument)\nself.main_order[instrument] = \\\n            self.broker.BuyOrderBracket(instrument=instrument,\n                order_code=BrokerOrderCodeConstants.INTRADAY,\n                order_variety=BrokerOrderVarietyConstants.LIMIT,\n                quantity=qty,\n                price=ltp,\n                stoploss_trigger=ltp - (ltp * self.stoploss),\n                target_trigger=ltp + (ltp * self.target),\n                trailing_stoploss_trigger=ltp * self.trailing_stoploss)\n

    The additional parameters are:

    • price - If you want to BUY at the market price (Last Traded Price) or LTP, then just fetch the LTP using get_ltp as shown in the code above. Store the value in ltp and pass it to price.
    • stoploss_trigger, target_trigger and trailing_stoploss_trigger - You can calculate these using the ltp and the values you will pass through the job that you will submit. The parameters will be caught as self.stoploss, self.target and self.trailing_stoploss.

    Note

    • If you plan to use Bracket Order instead of Regular Orders, then create a separate Python file for it, say strategy_sma_bracket_order.py. You can also change the class name as StrategySMABracketOrder. There will be changes in the entry and exit methods also.
    • The strategy_enter_position method is called once for every instrument. For instance, you want to run this strategy for 5 instruments. Say that the strategy_select_instruments_for_entry method selects 3 instruments for ENTRY positions (BUY/SELL). Then, the strategy_enter_position method will be called thrice, once for each instrument respectively within the candle time frame (say, 15 minutes).
    "},{"location":"pyalgotrad/programexample/#def-strategy_select_instruments_for_exit","title":"def strategy_select_instruments_for_exit()","text":"
    def strategy_select_instruments_for_exit(self, candle, instruments_bucket):\n    instruments = []\n    meta = []\n\n    for instrument in instruments_bucket:\n        if self.main_order.get(instrument) is not None:\n            crossover_value = self.get_crossover_value(instrument)\n            if crossover_value in [1, -1]:\n                instruments.append(instrument)\n                meta.append({'action': 'EXIT'})\n    return instruments, meta\n

    The strategy_select_instruments_for_exit method does the following:

    1. instruments and meta - Creates 2 empty lists that will be used to pass the selected instruments and additional information about them respectively.
    2. The Loop - The loop will iterate over each instrument name passed (which are in Entry position (BUY/SELL)) and will decide whether to set an exit position or not for it.
    3. If condition - The exit steps are executed only if the instrument is holding at an ENTRY position (BUY/SELL). You can do this by checking if the self.main_order object is None or not, and proceed only if it is not None.
    4. crossover_value - The crossover value is calculated and stored here. Crossover values are interpreted as:
      1. Value 1 - Cut upwards
      2. Value -1 - Cut downwards
      3. Value 0 - No crossover
    5. If condition - If the crossover value is 1 or -1, then the instrument is selected for exit position. The selected instrument is appended to the instruments, and the associated action (EXIT) is appended to the meta.
    6. instruments and meta - Both the lists (whether populated or empty) are returned to the platform for further actions.

    Note

    • The actual Exit position (BUY/SELL) is not entered here. Here, only the instrument is selected based on the crossover value with the proper action mentioned in the meta. The Exit position will be taken in the next method below.
    • The meta contains a very versatile dictionary object. You may use it to pass any other additional information that you wish.
    • Whenever a new trading day starts, the strategy_select_instruments_for_exit is called first. This is very important for DELIVERY strategies. Many instruments might be holding in an Entry Position at the end of the previous trading day, and they might be eligible for exit at the start of the new trading day.
    "},{"location":"pyalgotrad/programexample/#def-strategy_exit_position","title":"def strategy_exit_position()","text":"
    def strategy_exit_position(self, candle, instrument, sideband_info):\n    if sideband_info['action'] == 'EXIT':\n        self.main_order[instrument].exit_position()\n        self.main_order[instrument] = None\n        return True\n\n    return False\n

    The strategy_exit_position method does the following:

    1. If condition - checks whether the appropriate action is set in the sideband_info.
    2. self.main_order - calls exit_position method for the particular main order of the instrument. If the Entry Position was BUY, then the exit position is automatically taken as SELL and vice versa. The platform takes care of this automatically.
    3. self.main_order - set it to None, as the order has been exited and no longer holds anything.
    4. Return values - returns True to the platform if the exit steps were performed, else return False.
    "},{"location":"pyalgotrad/programexample/#def-get_crossover_value","title":"def get_crossover_value()","text":"
    def get_crossover_value(self, instrument):\n    hist_data = self.get_historical_data(instrument)\n    sma_x = talib.SMA(hist_data['close'], timeperiod=self.timeperiod_x)\n    sma_y = talib.SMA(hist_data['close'], timeperiod=self.timeperiod_y)\n    crossover_value = self.utils.crossover(sma_x, sma_y)\n    return crossover_value\n

    The get_crossover_value method does the following:

    1. hist_data - The historical data for the instrument is fetched using the get_historical_data method and stored here. The data is in the form of a table (Pandas DataFrame) having the following columns:
      • timestamp - the data and time when the data was measured
      • volume - the volume of that instrument
      • open, high, low and close - the OHLC values of the instrument
      • oi - the Open Interest of that instrument
    2. sma_x and sma_y - the SMA function from the talib package is used to calculate the Moving Average for both SMA time-periods. The candle close value is used for calculations, i.e. hist_data['close'].
    3. crossover_value - calculates the crossover value using the crossover method from the utils package.
    4. Return value - return the crossover value to the caller method.

    Note

    • The order of values passed to the crossover method of the utils package is very important.
    • Example: you have 2 SMA values, 5 and 12. The strategy describes that there should be an BUY Entry Position when SMA(5) cuts SMA(12) upwards (crossover value should be 1).
    • In this case, if you mistakenly pass SMA(12) value first and SMA(5) value next to the crossover function, the answer you will get is -1 (Cut downwards).
    • Though, the crossover value is correct, the strategy is expecting to BUY at crossover 1 as per the code, which will not work now.
    • Therefore, the strategy will work correctly only if you pass SMA(5) first and then SMA(12) to the crossover function, thus making the order of parameters passed an important point to be aware of, while coding the strategy.
    "},{"location":"pyalgotrad/programexample/#whats-next","title":"What's Next...","text":"

    Next, you upload the strategy into your AlgoBulls account.

    "},{"location":"pyalgotrad/pyalgotrading_analytics/","title":"Pyalgotrading Analytics","text":""},{"location":"pyalgotrad/pyalgotrading_analytics/#metric-values-and-statistics","title":"Metric Values and Statistics","text":""},{"location":"pyalgotrad/pyalgotrading_analytics/#cumulative-returns","title":"Cumulative Returns","text":"
    • The Cumulative Returns chart illustrates how our strategy's returns value has evolved over time in percentage.
    • Positive values indicate gains, while negatives reflect losses. Bigger positive returns are more favourable.
    • Keep in mind, this chart focuses on gains and losses, excluding risk and timing considerations.
    • There are 2 sub categories of cumulative returns chart depending on the scale we are using. One is normal scaled and other is log scaled
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#end-of-year-returns-eoy","title":"End of Year Returns (EoY)","text":"
    • The End of Year Returns chart showcases our strategy's annual performance as a percentage.
    • It quantifies its overall performance, considering gains or losses throughout each year.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#distributions-of-monthly-returns-histogram","title":"Distributions of Monthly Returns (Histogram)","text":"
    • In the Monthly Returns Distribution Histogram, we see the frequency distribution of different levels of returns over consecutive months.
    • This histogram helps us understand the range and patterns in monthly returns, shedding light on our strategy's volatility and performance trends.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#daily-returns","title":"Daily Returns","text":"
    • The Daily Returns Chart portrays the percentage change in our strategy's returns between trading days.
    • It provides insights into short-term volatility, trend analysis, and risk assessment.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#rolling-volatility-6-months","title":"Rolling Volatility (6 months)","text":"
    • A Rolling Volatility (6 months) Plot showcases the changing volatility of an investment over time using a rolling window of six months.
    • This plot reveals how the investment's price fluctuations vary as the window moves across the dataset.
    • It provides insights into short-term volatility patterns, helping investors understand how the investment's risk level evolves in response to different market conditions.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#rolling-sharpe-6-months","title":"Rolling Sharpe (6 months)","text":"
    • A Rolling Sharpe (6 months) Plot illustrates the dynamic changes in the Sharpe ratio over time using a rolling window of six months.
    • The plot shows how the risk-adjusted performance of an investment fluctuates as the window moves through the dataset.
    • This visualization helps investors understand how the Sharpe ratio varies with changing market conditions and provides insights into the investment's consistency and risk-return trade-offs over short-term periods.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#rolling-sortino-6-months","title":"Rolling Sortino (6 months)","text":"
    • A Rolling Sortino (6 months) Plot visualizes the variation in the Sortino ratio over time using a rolling window of six months.
    • This plot demonstrates how the investment's risk-adjusted performance, considering only downside volatility, changes as the window progresses through the data.
    • It offers insights into how the Sortino ratio evolves with market conditions, helping investors assess the investment's ability to generate favorable risk-adjusted returns over short-term intervals.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#worst-5-drawdown-periods","title":"Worst 5 Drawdown Periods","text":"
    • A Worst 5 Drawdown Periods plot displays the top five periods during which the strategy experienced the largest declines from peak to trough.
    • This visualization helps strategists understand the most significant loss-making episodes in the strategy's run.
    • It shows the magnitude and duration of these drawdowns, providing insights into the strategy's risk and potential vulnerabilities.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#underwater-plot","title":"Underwater Plot","text":"
    • The Underwater Plot visually narrates our strategy's performance concerning its past peaks.
    • It showcases how much our returns value has dropped from its highest point over time.
    • This aids in visualising periods of drawdown and recovery, offering insights into historical risk and resilience.
    "},{"location":"pyalgotrad/pyalgotrading_analytics/#monthly-returns-heatmap","title":"Monthly Returns (Heatmap)","text":"
    • The Monthly Returns Heatmap offers a colour-coded view of our strategy's performance across months.
    • Shades of green indicate positive returns, while shades of red signify losses.
    • This visual tool helps spot trends and patterns, aiding in identifying strong and weak performance periods.
    "},{"location":"pyalgotrad/python-build-view-results/","title":"Python build view results","text":""},{"location":"pyalgotrad/python-build-view-results/#how-to-view-the-results","title":"How to view the Results?","text":"

    Once you start the strategy, it may take a while for it to complete the execution. You can switch to the Analytics tab after you run your strategy. Even if the strategy execution is not complete, you will still see intermediate results.

    Analytics: In the analytics section, you can view a strategy\u2019s Stats & various other metrics in the form of graphs like P&L.

    "},{"location":"pyalgotrad/python-build-view-results/#stats","title":"Stats","text":"

    In this section you can see the total returns, sharpe ratio, sortino ratio, volatility, Max Drawdown, Total wins or Loses, Total short or long trades, hit ratio, number of trades, average trades per day, max profit, max loss, average profit per winning trade, average loss per losing trade.

    "},{"location":"pyalgotrad/python-build-view-results/#cumulative-returns","title":"Cumulative Returns","text":""},{"location":"pyalgotrad/python-build-view-results/#profit-loss-currency-or","title":"Profit & Loss (Currency or %)","text":"

    The trade by trade P&L in Currency or Percentage.

    "},{"location":"pyalgotrad/python-build-view-results/#end-of-year-returns-plot","title":"End of Year Returns Plot (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#monthly-returns-histogram","title":"Monthly Returns Histogram (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#monthly-returns-heatmap","title":"Monthly Returns Heatmap (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#daily-returns","title":"Daily Returns (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#underwater-drawdown-plot","title":"Underwater Drawdown Plot (%)","text":""},{"location":"pyalgotrad/python-build-view-results/#pl-book","title":"P&L Book","text":"

    View detailed trade by trade report. Premium users can analyze this data in the form of heatmaps for Gross Profit & Loss, Trading Volume & Total number of Trades.

    "},{"location":"pyalgotrad/python-build-view-results/#user-log","title":"User Log","text":"

    Real-time logs from strategy execution are displayed in this section. Use these logs to debug your strategy\u2019s behavior and performance.

    "},{"location":"pyalgotrad/python-build-view-results/#order-history","title":"Order History","text":"

    View the order state transition for every order placed by your strategy in-depth.

    "},{"location":"pyalgotrad/select/","title":"Select your Strategy","text":""},{"location":"pyalgotrad/select/#previously","title":"Previously...","text":"

    You have uploaded or saved a strategy by:

    • Your strategy is already uploaded on the AlgoBulls account and you want to search or select it

    OR

    • You have saved the strategy from the AlgoBulls Website
    "},{"location":"pyalgotrad/select/#now","title":"Now...","text":"

    You are now ready to select or import your strategy from your AlgoBulls account for Backtesting, Paper Trading and/or Real Trading.

    "},{"location":"pyalgotrad/select/#before-you-start","title":"Before you start...","text":"
    • Make sure you have an active working AlgoBulls account ready to go!
    • Open a Jupyter Notebook.
    • If you have coded the strategy yourself and not used a ready strategy from the pyalgostrategypool package, then make sure your strategy file (.py) and the Jupyter Notebook are in the same folder.
    "},{"location":"pyalgotrad/select/#lets-start","title":"Let's Start...","text":"

    Run the following code snippets into the Jupyter Notebook one by one (or all together).

    "},{"location":"pyalgotrad/select/#import-statements","title":"Import statements","text":"
    import inspect\nfrom pyalgotrading.algobulls import AlgoBullsConnection\n
    "},{"location":"pyalgotrad/select/#import-the-strategy-class","title":"Import the strategy class","text":"

    Perform the below step either to import a ready strategy OR to import your own created strategy.

    • Import a ready strategy

      from pyalgostrategypool.strategy_ema_regular_order import StrategyEMARegularOrder\n

    • Import your own strategy

      from strategy_sma_regular_order import StrategySMARegularOrder\n

    "},{"location":"pyalgotrad/select/#establish-a-connection-to-the-algobulls-platform","title":"Establish a connection to the AlgoBulls Platform","text":"

    algobulls_connection = AlgoBullsConnection()\nalgobulls_connection.get_authorization_url()\n
    The output of the above step is:

    Please login to this URL with your AlgoBulls credentials and get your developer access token: https://app.algobulls.com/user/login

    Get Developer Key

    You will need to log in to your AlgoBulls account and fetch the access token from: (See How) Settings -> General -> Developer Options

    Once you have the access token, set it in the code as shown here:

    algobulls_connection.set_access_token('4365817b795770ea31040a21ad29c8e78b63ad88')\n
    Replace the token you have copied with the token in the code above.

    "},{"location":"pyalgotrad/select/#view-all-the-strategies-in-your-algobulls-account","title":"View all the strategies in your AlgoBulls Account","text":"

    You can view all the strategy saved on your AlgoBulls account.

    all_strategies_df = algobulls_connection.get_all_strategies()\nprint(all_strategies_df)\n

    "},{"location":"pyalgotrad/select/#search-your-strategy","title":"Search your Strategy","text":"
    • Search your strategy using strategy name. Make sure you have the strategy with given name in your AlgoBulls Account.
          strategy_name = 'Exponential Moving Averages Crossover'\n    strategy_code, strategy_name = all_strategies_df.loc[all_strategies_df['strategyName'] == strategy_name].iloc[0]        \n
    • Search your strategy using strategy code. Make sure you have the strategy with given code in your AlgoBulls Account.
      strategy_code = 'afd6214c5db94dbeae7502e861fa4ffc'\nstrategycode, strategyname = all_strategies_df.loc[all_strategies_df['strategyCode'] == strategy_code].iloc[0]\n
    "},{"location":"pyalgotrad/select/#whats-next","title":"What's Next...","text":"

    You are now ready to test your uploaded strategy and perform Backtesting, Paper Trading and/or Real Trading with it.

    "},{"location":"pyalgotrad/slippage/","title":"Slippage","text":""},{"location":"pyalgotrad/slippage/#slippage-and-brokerage-parameters","title":"Slippage and Brokerage Parameters","text":"

    In the algobulls_connection.get_backtesting_report_pnl_table function, you have the option to specify slippage and brokerage parameters to account for transaction costs and execution variations. These parameters allow you to fine-tune your backtesting results to better simulate real-world trading conditions.

    "},{"location":"pyalgotrad/slippage/#slippage","title":"Slippage","text":"
    • Parameter Name: slippage_percent
    • Type: float
    • Default Value: None
    • Definition: Slippage is the difference between the expected execution price of a trade and the actual execution price. It often occurs due to market volatility and the time it takes to execute an order. Slippage can have a significant impact on trading results, and this parameter allows you to simulate it.
    • Explanation: Imagine you're trading and placing an order at a specific price, but the market moves quickly. Slippage accounts for the price difference between what you expected and what you actually get. Use this parameter to make your backtesting experience more realistic.
    "},{"location":"pyalgotrad/slippage/#how-to-use","title":"How to Use","text":"

    To incorporate slippage into your backtesting, simply pass the desired values for slippage_percent, when calling the algobulls_connection.get_backtesting_report_pnl_table function. These parameters help you account for real-world trading costs and execution variations, making your backtesting results more realistic.

    "},{"location":"pyalgotrad/slippage/#example","title":"Example","text":"
    import algobulls_connection\n# Fetch PnL data for a trading strategy with custom slippage  settings\npnl_table = algobulls_connection.get_backtesting_report_pnl_table(\n    strategy_code=\"your_strategy_code\",\n    show_all_rows=True,\n    force_fetch=True,\n    country='USA',\n    slippage_percent=4.5,             # Adjust slippage percentage as needed\n)\n# Print the PnL table with custom slippage  settings\nprint(pnl_table)\n
    "},{"location":"pyalgotrad/testing/","title":"Execute your Strategy","text":""},{"location":"pyalgotrad/testing/#previously","title":"Previously...","text":"

    You have uploaded your strategy to the AlgoBulls platform.

    "},{"location":"pyalgotrad/testing/#now","title":"Now...","text":"

    Using the uploaded strategy, you can now try:

    • Backtesting
    • Paper Trading
    • Real Trading
    "},{"location":"pyalgotrad/testing/#before-you-start","title":"Before you start...","text":"

    Open a Jupyter Notebook.

    The steps you will follow are:

    1. Establish a connection to the AlgoBulls Platform.
    2. Display all Strategies you have in your account.
    3. Select the strategy.
    4. Optionally, print the strategy once.
    5. Select instrument(s).
    6. Submit/Run a Backtest, Paper Trade or Real Trade job.
    7. Check Job Status.
    8. Fetch Logs (even while the job is running).
    9. Fetch Reports. (PnL, Statistics, Order History)
    "},{"location":"pyalgotrad/testing/#lets-start","title":"Let's Start...","text":"

    Run the following code snippets into the Jupyter Notebook one by one (or all together).

    "},{"location":"pyalgotrad/testing/#create-a-new-strategy-file","title":"Create a new strategy file","text":"

    eg: strategy_<unique_code_if_needed>_options_ema_crossover.py Make sure this strategy file is in the same folder as the jupyter notebook.

    Coding Conventions

    • Keep a unique file name
    • Make sure that the file name is in lowercase and that each word is separated with an underscore '_' as shown above.

    How to Code ?

    To know more on how to code trading strategies and understand their format, click here. We have in detail explanation for regular strategies as well as options strategies

    "},{"location":"pyalgotrad/testing/#import-statements","title":"Import statements","text":"
    from pyalgotrading.algobulls import AlgoBullsConnection\nfrom datetime import datetime as dt\nfrom pyalgotrading.constants import *\n
    "},{"location":"pyalgotrad/testing/#establish-a-connection-to-the-algobulls-platform","title":"Establish a connection to the AlgoBulls Platform","text":"

    algobulls_connection = AlgoBullsConnection()\nalgobulls_connection.get_authorization_url()\n
    The output of the above step is:

    Please login to this URL with your AlgoBulls credentials and get your developer access token: https://app.algobulls.com/user/login

    Get Developer Key

    You will need to log in to your AlgoBulls account and fetch the access token from: (See How) Settings -> General -> Developer Options

    Once you have the access token, set it in the code as shown here:

    algobulls_connection.set_access_token('4365817b795770ea31040a21ad29c8e78b63ad88')\n

    Replace the token you have copied with the token in the code above.

    "},{"location":"pyalgotrad/testing/#display-all-strategies-in-your-account","title":"Display all strategies in your account","text":"
    all_strategies = algobulls_connection.get_all_strategies()\nall_strategies\n

    An example of the output will be:

    "},{"location":"pyalgotrad/testing/#select-the-strategy","title":"Select the strategy","text":"

    Select the last entry of the strategyCode column and display it.

    strategy_code = all_strategies.iloc[-1]['strategyCode']\nstrategy_code\n

    "},{"location":"pyalgotrad/testing/#print-your-strategy-code","title":"Print your Strategy code","text":"

    You can print your strategy code once to verify if this is the correct code. This step is optional.

    strategy_details1 = algobulls_connection.get_strategy_details(strategy_code)\nprint(strategy_details1)\n
    "},{"location":"pyalgotrad/testing/#search-for-instruments-based-on-a-search-query","title":"Search for instruments (based on a search query)","text":"

    Now display a few instruments with some keyword. The example below uses 'SBIN' as the keyword.

    instruments = algobulls_connection.search_instrument('SBIN')\ninstruments\n
    "},{"location":"pyalgotrad/testing/#select-an-instrument","title":"Select an instrument","text":"

    From the output, select the instrument on which you wish to test your strategy. For this example, select the first one.

    instrument = instruments[0]['value']\ninstrument\n

    "},{"location":"pyalgotrad/testing/#submit-a-job","title":"Submit a Job","text":"

    Delete previous trades

    algobulls_connection.delete_previous_trades(strategy=strategy)\n

    Set the parameters for the strategy

    parameters={\n    'timeperiod1': 5,\n    'timeperiod2': 12\n}\n

    vendor_details = {\n    'brokerName': '<VENDOR_NAME>',\n    'credentialParameters': {\n        'api_key': '<API_KEY>',\n        'secret_key': '<SECRET_KEY>'\n    }\n}\n
    broking_details = {\n    'brokerName': '<BROKER_NAME>',\n    'credentialParameters': {\n        'user_id': '<USER_ID>',\n        'api_key': '<API_KEY>',\n        'password': '<PASSWORD>'\n    }\n}\n

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    algobulls_connection.backtest(\n        strategy=strategy_code,         # strategy code\n        start='2020-7-1 09:15 +0530',   # start date-time of strategy ('YYYY-MM-DD HH:MM z')\n        end='2020-7-7 15:30 +0530',     # end date-time of strategy ('YYYY-MM-DD HH:MM z')\n        instruments='NSE:SBIN',         # name of the instrument\n        lots=1,                         # number of lots per trade\n        parameters=parameters,          # parameters required for the strategy\n        candle='15 minutes',            # candle size eg : '1 Day', '1 hour', '3 minutes'\n        delete_previous_trades=True,    # delete the previous trades for papertrading (default is true),\n        initial_funds_virtual=10000,    # virtual funds allotted before the paper trading starts (default is 1e9)\n        vendor_details=vendor_details   # vendor's details for authentication and verification \n)\n
    algobulls_connection.papertrade(\n        strategy=strategy_code,         # strategy code\n        start='09:15 +0530',            # start time of strategy (HH:MM z)     \n        end='15:30 +0530',              # end time of strategy (HH:MM z)\n        instruments='NSE:SBIN',         # name of the instrument\n        lots=1,                         # number of lots per trade\n        parameters=parameters,          # parameters required for the strategy\n        candle='15 minutes',            # candle size eg : '1 Day', '1 hour', '3 minutes'\n        delete_previous_trades=True,    # delete the previous trades for papertrading (default is true)\n        initial_funds_virtual=10000,    # virtual funds allotted before the paper trading starts (default is 1e9)\n        vendor_details=vendor_details   # vendor's details for authentication and verification \n)\n
    algobulls_connection.realtrade(\n        strategy=strategy_code,          # strategy code\n        start='09:15 +0530',             # start time of strategy (HH:MM z)     \n        end='15:30 +0530',               # end time of strategy (HH:MM z)\n        instruments='NSE:SBIN',          # name of the instrument\n        lots=1,                          # number of lots per trade\n        parameters=parameters,           # parameters required for the strategy\n        candle='15 minutes',             # candle size eg : '1 Day', '1 hour', '3 minutes'\n        broking_details=broking_details  # broker's details for authentication and verification \n)\n
    "},{"location":"pyalgotrad/testing/#fetch-job-status","title":"Fetch Job Status","text":"

    Click on each of the tabs to see the relevant code snippet. There are 4 stages of your strategy execution : STARTING, STARTED, STOPPING and STOPPED

    BacktestingPaper TradingReal Trading
    algobulls_connection.get_backtesting_job_status(strategy_code)\n
    algobulls_connection.get_papertrading_job_status(strategy_code)\n
    algobulls_connection.get_realtrading_job_status(strategy_code)\n

    You can stop a submitted job anytime.

    "},{"location":"pyalgotrad/testing/#stop-a-job","title":"Stop a Job","text":"

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    algobulls_connection.stop_backtesting_job(strategy_code)\n
    algobulls_connection.stop_papertrading_job(strategy_code)\n
    algobulls_connection.stop_realtrading_job(strategy_code)\n

    You can fetch the logs in the middle of a job to monitor the progress.

    "},{"location":"pyalgotrad/testing/#fetch-logs","title":"Fetch logs","text":"

    Logging Tip

    • There are 2 variations when fetching logs:
      • Progressive Logs (print_live_logs = True): will show progress bar and update the latest logs as the strategy is executed
      • Complete Logs (print_live_logs = False): will fetch logs after strategy is executed.(It wont update the latest logs, unless called manually again)

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    logs = algobulls_connection.get_backtesting_logs(\n            strategy_code,                              # strategy code \n            display_progress_bar=True,                  # (default=True) to track the execution on progress bar as your strategy is executed\n            print_live_logs: True                       # (default=False) to print the live logs as your strategy is executed\n        )\nprint(logs)\n
    logs = algobulls_connection.get_papertrading_logs(\n            strategy_code,                              # strategy code \n            display_progress_bar=True,                  # (default=True) to track the execution on progress bar as your strategy is executed\n            print_live_logs: True                       # (default=True) to print the live logs as your strategy is executed\n        )\nprint(logs)\n
    logs = algobulls_connection.get_realtrading_logs(\n            strategy_code,                              # strategy code \n            display_progress_bar=True,                  # (default=True) to track the execution on progress bar as your strategy is executed\n            print_live_logs: True                       # (default=True) to print the live logs as your strategy is executed\n        )\nprint(logs)\n

    You can fetch the PnL report, statistics and order history for a job.

    "},{"location":"pyalgotrad/testing/#fetch-pnl-reports","title":"Fetch PnL Reports","text":"

    Click on each of the tabs to see the relevant code snippet.

    Please Note

    Make sure that strategy's execution status is at STOPPED stage before generating PnL reports

    BacktestingPaper TradingReal Trading
    algobulls_connection.get_backtesting_report_pnl_table(\n        strategy_code,                      # strategy code\n        show_all_rows=True,                 # default=True         \n        force_fetch=True,                   # pnl data is saved locally once fetched, to update the locally fetched data, make this parameter True\n        country='USA',                      # country of the exchange that was used while starting the job ('India' or 'USA')\n        broker_commission_percentage: 1     # Percentage of broker commission per trade\n        broker_commission_price: 0.2        # Broker fee per trade\n        slippage_percent: 3                 # Slippage percentage value\n)\n
    algobulls_connection.get_papertrading_report_pnl_table(\n        strategy_code,                      # strategy code\n        show_all_rows=True,                 # default=True         \n        force_fetch=True,                   # pnl data is saved locally once fetched, to update the locally fetched data, make this parameter True\n        country='USA',                      # country of the exchange that was used while starting the job ('India' or 'USA')\n        broker_commission_percentage: 1     # Percentage of broker commission per trade\n        broker_commission_price: 0.2        # Broker fee per trade\n        slippage_percent: 3                 # Slippage percentage value\n)\n
    algobulls_connection.get_realtrading_report_pnl_table(\n        strategy_code,              # strategy code\n        show_all_rows=True,         # default=True         \n        force_fetch=True,           # pnl data is saved locally once fetched, to update the locally fetched data, make this parameter True\n        country='USA',              # country of the exchange that was used while starting the job ('India' or 'USA')\n)\n

    To know more about slippage and brokerage parameters click here

    "},{"location":"pyalgotrad/testing/#fetch-report-statistics","title":"Fetch Report Statistics","text":"

    Click on each of the tabs to see the relevant code snippet.

    Analytics Tips

    You can view your analytics on the python build page as well, simply log inside your AlgoBulls Account, and look for your Strategy in Python Build -> My Coded Strategies

    BacktestingPaper TradingReal Trading
    algobulls_connection.get_backtesting_report_statistics(\n    strategy_code,          # strategy code\n    report='full',          # format of the report\n    html_dump=True          # save report as html file\n)\n
    algobulls_connection.get_papertrading_report_statistics(\n    strategy_code,          # strategy code\n    report='full',          # format of the report\n    html_dump=True          # save report as html file\n)\n
    algobulls_connection.get_realtrading_report_statistics(\n    strategy_code,          # strategy code\n    report='full',          # format of the report\n    html_dump=True          # save report as html file\n)\n
    "},{"location":"pyalgotrad/testing/#generate-statistics-from-external-csv","title":"Generate Statistics from External CSV","text":"

    Make sure your csv has the columns names as \"net_pnl\" and \"entry_timestamp\". The \"net_pnl\" column will contain the net profit and loss of every trade and its respective entry time will be stored in \"entry_timestamp\".

    connection.get_report_statistics(file_path=\"testing_file.csv\", initial_funds=3000)\n

    "},{"location":"pyalgotrad/testing/#fetch-order-history","title":"Fetch Order History","text":"

    Click on each of the tabs to see the relevant code snippet.

    BacktestingPaper TradingReal Trading
    order_history = algobulls_connection.get_backtesting_report_order_history(strategy_code)\nprint(order_history)\n
    order_history = algobulls_connection.get_papertrading_report_order_history(strategy_code)\nprint(order_history)\n
    order_history = algobulls_connection.get_realtrading_report_order_history(strategy_code)\nprint(order_history)\n

    Note

    • Order History for Real Trading is not supported by brokers.
    • Order History for Backtesting, Paper Trading and Real Trading is supported by the AlgoBulls Virtual Brokers.
    "},{"location":"pyalgotrad/testing/#whats-next","title":"What's Next...","text":"

    You can now explore more by creating and uploading more complex strategies.

    You can also check out the Analytics, to understand more about the returns and analyze your strategy based on the analytics report.

    "},{"location":"pyalgotrad/upload/","title":"Upload your Strategy","text":""},{"location":"pyalgotrad/upload/#previously","title":"Previously...","text":"

    You have created a strategy by:

    • Coding the complete strategy from the Create page.

    OR

    • Picking up a ready strategy from the pyalgostrategypool package.
    "},{"location":"pyalgotrad/upload/#now","title":"Now...","text":"

    You are now ready to upload your strategy into your AlgoBulls account for Backtesting, Paper Trading and/or Real Trading.

    "},{"location":"pyalgotrad/upload/#before-you-start","title":"Before you start...","text":"
    • Make sure you have an active working AlgoBulls account ready to go!
    • Open a Jupyter Notebook.
    • If you have coded the strategy yourself and not used a ready strategy from the pyalgostrategypool package, then make sure your strategy file (.py) and the Jupyter Notebook are in the same folder.
    "},{"location":"pyalgotrad/upload/#lets-start","title":"Let's Start...","text":"

    Run the following code snippets into the Jupyter Notebook one by one (or all together).

    "},{"location":"pyalgotrad/upload/#import-statements","title":"Import statements","text":"
    import inspect\nfrom pyalgotrading.algobulls import AlgoBullsConnection\n
    • Import a ready strategy

      from pyalgostrategypool.strategy_ema_regular_order import StrategyEMARegularOrder\n

    • Import your own strategy

      from strategy_sma_regular_order import StrategySMARegularOrder\n

    "},{"location":"pyalgotrad/upload/#establish-a-connection-to-the-algobulls-platform","title":"Establish a connection to the AlgoBulls Platform","text":"

    algobulls_connection = AlgoBullsConnection()\nalgobulls_connection.get_authorization_url()\n
    The output of the above step is:

    Please login to this URL with your AlgoBulls credentials and get your developer access token: https://app.algobulls.com/user/login

    Get Developer Key

    You will need to log in to your AlgoBulls account and fetch the access token from: (See How) Settings -> General -> Developer Options

    Once you have the access token, set it in the code as shown here:

    algobulls_connection.set_access_token('4365817b795770ea31040a21ad29c8e78b63ad88')\n
    Replace the token you have copied with the token in the code above.

    "},{"location":"pyalgotrad/upload/#print-your-strategy-code","title":"Print your Strategy code","text":"

    You can print your strategy code once to verify if this is the correct code before uploading it to the platform. This step is optional.

    print(inspect.getsource(StrategySMARegularOrder))\n

    "},{"location":"pyalgotrad/upload/#upload-your-strategy_1","title":"Upload your Strategy","text":"

    Upload your strategy as shown in the code below.

    algobulls_connection.create_strategy(StrategySMARegularOrder)\n

    "},{"location":"pyalgotrad/upload/#re-upload-your-strategy-after-modifications","title":"Re-upload your Strategy after modifications","text":"

    If you are re-uploading your strategy after some changes, then use the overwrite switch as shown here.

    algobulls_connection.create_strategy(StrategySMARegularOrder, overwrite=True)\n

    "},{"location":"pyalgotrad/upload/#whats-next","title":"What's Next...","text":"

    You are now ready to test your uploaded strategy and perform Backtesting, Paper Trading and/or Real Trading with it.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/","title":"Options Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyOptionsEMACrossover(StrategyOptionsBaseV2)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every options strategy is a child class of the StrategyOptionsBaseV2 class.\n
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'options_ema_crossover'\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next, we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.no_of_strikes_away_ce = self.strategy_parameters['NO_OF_STRIKES_AWAY_CE']\nself.no_of_strikes_away_p = self.strategy_parameters['NO_OF_STRIKES_AWAY_PE']\nself._strike_direction_ce = self.strategy_parameters['STRIKES_DIRECTION_CE']\nself._strike_direction_pe = self.strategy_parameters['STRIKES_DIRECTION_PE']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may change for different strategies.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters.

    try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg:

    self.main_order = None            # We save the entry order in this variable\nself.stoploss_order = None        # We save the corresponding stoploss exit order of the entry order in this variable\n
    We initialize the variables with a None value. !!! Note There could be more strategy variables required as per the strategy requirement.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
    self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags.

    eg:

    self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag

    eg:

    self.order_tag_manager.remove_tags(tags=entry_key)\n

    Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in order tags.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s).

    eg:

    self.order_tag_manager.remove_order(main_order)\n
    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_internals","title":"get_internals","text":"
    Returns the values i.e. both the entry and exit orders stored inside the tags list.\n
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#5-child-instruments-calculation","title":"5. Child instruments calculation","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_ltp","title":"get_ltp","text":"

    Fetch the ltp of the base instrument (instrument set while executing strategy)

    ltp = self.broker.get_ltp(self.underlying_instrument)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#options_instruments_set_up_local","title":"options_instruments_set_up_local","text":"

    Get the ATM ITM and OTM lists of the child instrument based on the LTP

    self.options_instruments_set_up_local(self.underlying_instrument, tradingsymbol_suffix, ltp)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_child_instrument_details","title":"get_child_instrument_details","text":"

    Select a child instrument from the lists of ATM, ITM, and OTM based on the strike direction and no of strikes given for the child instrument

    child_instrument = self.get_child_instrument_details(self.underlying_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes)\n

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#6-entry-methods","title":"6. Entry Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create a get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selectd_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#7-exit-methods","title":"7. Exit Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#8-other-common-methods","title":"8. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#options_instruments_set_up_local_1","title":"options_instruments_set_up_local","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch the ATM, ITM, and OTM lists of the child instruments based on the LTP of the base instrument.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#get_child_instrument_details_1","title":"get_child_instrument_details","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch a single child instrument based on the no of strikes and strike direction.

    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#9-cleanup","title":"9. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"pyalgotrad/strategy_guides/common_options_strategy/#10-check-out-our-docs-for-developed-options-strategies","title":"10. Check out our docs for developed Options strategies","text":"
    • Options Bear Call Ladder
    • Options Bear Put Ladder
    • Options Bull Call Ladder
    • Options Bull Put Ladder
    • Options Long Iron Butterfly
    • Options Straddle
    • Options Strangle

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/","title":"Regular Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyFuturesEMACrossover(StrategyBase)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every strategy is a child class of the StrategyBase class.\n
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'futures_ema_crossover'\n

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format, as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may be different for different strategies.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters. try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg: self.order_tag_manager = None

    We initialize the variables with a None value.

    Note

    There could be more strategy variables required as per the strategy requirement.\n
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
      self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags. eg:
      self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag eg:
      self.order_tag_manager.remove_tags(tags=entry_key)\n
    • Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in the order tags.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s). eg:
    self.order_tag_manager.remove_order(main_order)\n

    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#get_internals","title":"get_internals","text":"
    • Returns the values i.e. both the entry and exit orders stored inside the tags list.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#5-entry-methods","title":"5. Entry Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create an get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selected_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#6-exit-methods","title":"6. Exit Methods","text":""},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit:","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#7-other-common-methods","title":"7. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#8-cleanup","title":"8. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"pyalgotrad/strategy_guides/common_regular_strategy/#10-check-out-our-docs-for-developed-regular-strategies","title":"10. Check out our docs for developed Regular strategies","text":"
    • Aroon Crossover
    • Bollinger Bands
    • EMA Crossover
    • Inverse EMA Scalping
    • Reverse RSI
    • Stochastic Crossover
    • VWAP Crossover

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"pyalgotrad/strategy_guides/structure/","title":"Code Structure of Strategy","text":"

    Coding Prerequisites

    • For pyalgotrading check here.
    • For Python Build Web check here.
    "},{"location":"pyalgotrad/strategy_guides/structure/#methods","title":"Methods","text":""},{"location":"pyalgotrad/strategy_guides/structure/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function helps you choose which trading instruments you want your strategy to work with. The system will use this function to go through each instrument one by one, at each candle's time. You get to write code that decides whether to place an order for a specific instrument or not.

    "},{"location":"pyalgotrad/strategy_guides/structure/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function is where you can place orders for the instruments you selected earlier. It's executed for each instrument you picked in the previous function.

    "},{"location":"pyalgotrad/strategy_guides/structure/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    After you've entered a position for an instrument, this function is called for each of those instruments at each candle interval. You can use it to decide whether an instrument should be exited from the position.

    "},{"location":"pyalgotrad/strategy_guides/structure/#strategy_exit_position","title":"strategy_exit_position()","text":"

    In this function, you can close or exit positions for the instruments you marked for exiting in the previous function. It's done instrument by instrument.

    "},{"location":"pyalgotrad/strategy_guides/structure/#supporting-methods","title":"Supporting Methods","text":"

    You have the following supporting methods:

    "},{"location":"pyalgotrad/strategy_guides/structure/#init","title":"init()","text":"

    This method is like a starter for your strategy. It checks if the values you give it make sense and sets up some useful information for your strategy to use.

    "},{"location":"pyalgotrad/strategy_guides/structure/#initialize","title":"initialize()","text":"

    This method is called when your strategy begins, both at the very start and at the beginning of each trading day. It's like setting up your strategy's workspace and giving your tools a starting position.

    "},{"location":"pyalgotrad/strategy_guides/structure/#name","title":"name()","text":"

    This method gives your strategy a special name. It's like giving your strategy a unique nickname.

    "},{"location":"pyalgotrad/strategy_guides/structure/#versions_supported","title":"versions_supported()","text":"

    This method lets you specify which version of the AlgoBulls Platform your strategy works well with. It's like saying, \"My strategy is ready for this specific version of the platform.\"

    "},{"location":"pyalgotrad/strategy_guides/structure/#utility-functions","title":"Utility Functions","text":"

    You have the following utility function to be used in this strategy :

    Links

    • Strategy Structure (regular)
    • Strategy Structure (options)
    "},{"location":"pyalgotrad/strategy_guides/structure/#get_crossover_value","title":"get_crossover_value()","text":"This handy function calculates something called the \"crossover value\" for you. It's like having a calculator that figures out this specific value for your strategy."},{"location":"pyalgotrad/strategy_guides/structure/#flowchart","title":"Flowchart","text":"

    Once you create your own strategy or use a ready strategy from the pyalgostrategypool package, this is how it works internally on the AlgoBulls Core Trading Engine.

    "},{"location":"python_build/pyalgotrading_analytics/","title":"Pyalgotrading Analytics","text":""},{"location":"python_build/pyalgotrading_analytics/#metric-values-and-statistics","title":"Metric Values and Statistics","text":""},{"location":"python_build/pyalgotrading_analytics/#cumulative-returns","title":"Cumulative Returns","text":"
    • The Cumulative Returns chart illustrates how our strategy's returns value has evolved over time in percentage.
    • Positive values indicate gains, while negatives reflect losses. Bigger positive returns are more favourable.
    • Keep in mind, this chart focuses on gains and losses, excluding risk and timing considerations.
    • There are 2 sub categories of cumulative returns chart depending on the scale we are using. One is normal scaled and other is log scaled
    "},{"location":"python_build/pyalgotrading_analytics/#end-of-year-returns-eoy","title":"End of Year Returns (EoY)","text":"
    • The End of Year Returns chart showcases our strategy's annual performance as a percentage.
    • It quantifies its overall performance, considering gains or losses throughout each year.
    "},{"location":"python_build/pyalgotrading_analytics/#distributions-of-monthly-returns-histogram","title":"Distributions of Monthly Returns (Histogram)","text":"
    • In the Monthly Returns Distribution Histogram, we see the frequency distribution of different levels of returns over consecutive months.
    • This histogram helps us understand the range and patterns in monthly returns, shedding light on our strategy's volatility and performance trends.
    "},{"location":"python_build/pyalgotrading_analytics/#daily-returns","title":"Daily Returns","text":"
    • The Daily Returns Chart portrays the percentage change in our strategy's returns between trading days.
    • It provides insights into short-term volatility, trend analysis, and risk assessment.
    "},{"location":"python_build/pyalgotrading_analytics/#rolling-volatility-6-months","title":"Rolling Volatility (6 months)","text":"
    • A Rolling Volatility (6 months) Plot showcases the changing volatility of an investment over time using a rolling window of six months.
    • This plot reveals how the investment's price fluctuations vary as the window moves across the dataset.
    • It provides insights into short-term volatility patterns, helping investors understand how the investment's risk level evolves in response to different market conditions.
    "},{"location":"python_build/pyalgotrading_analytics/#rolling-sharpe-6-months","title":"Rolling Sharpe (6 months)","text":"
    • A Rolling Sharpe (6 months) Plot illustrates the dynamic changes in the Sharpe ratio over time using a rolling window of six months.
    • The plot shows how the risk-adjusted performance of an investment fluctuates as the window moves through the dataset.
    • This visualization helps investors understand how the Sharpe ratio varies with changing market conditions and provides insights into the investment's consistency and risk-return trade-offs over short-term periods.
    "},{"location":"python_build/pyalgotrading_analytics/#rolling-sortino-6-months","title":"Rolling Sortino (6 months)","text":"
    • A Rolling Sortino (6 months) Plot visualizes the variation in the Sortino ratio over time using a rolling window of six months.
    • This plot demonstrates how the investment's risk-adjusted performance, considering only downside volatility, changes as the window progresses through the data.
    • It offers insights into how the Sortino ratio evolves with market conditions, helping investors assess the investment's ability to generate favorable risk-adjusted returns over short-term intervals.
    "},{"location":"python_build/pyalgotrading_analytics/#worst-5-drawdown-periods","title":"Worst 5 Drawdown Periods","text":"
    • A Worst 5 Drawdown Periods plot displays the top five periods during which the strategy experienced the largest declines from peak to trough.
    • This visualization helps strategists understand the most significant loss-making episodes in the strategy's run.
    • It shows the magnitude and duration of these drawdowns, providing insights into the strategy's risk and potential vulnerabilities.
    "},{"location":"python_build/pyalgotrading_analytics/#underwater-plot","title":"Underwater Plot","text":"
    • The Underwater Plot visually narrates our strategy's performance concerning its past peaks.
    • It showcases how much our returns value has dropped from its highest point over time.
    • This aids in visualising periods of drawdown and recovery, offering insights into historical risk and resilience.
    "},{"location":"python_build/pyalgotrading_analytics/#monthly-returns-heatmap","title":"Monthly Returns (Heatmap)","text":"
    • The Monthly Returns Heatmap offers a colour-coded view of our strategy's performance across months.
    • Shades of green indicate positive returns, while shades of red signify losses.
    • This visual tool helps spot trends and patterns, aiding in identifying strong and weak performance periods.
    "},{"location":"python_build/python-build-code-gen-ai/","title":"Code Using AI","text":"

    If you have creative ideas in your mind and want to design a algotrading strategy but you are new at coding, don't worry, we have got it covered using our Python Build's Create Using AI feature which will help you to create trading strategies seamlessly.

    Tip

    You can check here on how to get your Chat-GPT API key

    "},{"location":"python_build/python-build-code-gen-ai/#set-your-gen-ai-api-keys-and-model","title":"Set your Gen-AI API keys and Model","text":"
    1. Once you have retrieved the API key, you need to paste it in the input box for API keys.
    2. Select the model of AI from the drop-down menu below.
    3. Click on the Save button to save your key and model and establish the connection.

    "},{"location":"python_build/python-build-code-gen-ai/#enter-your-prompts","title":"Enter your Prompts","text":"
    1. On the left hand side you can see the previous sessions and chat history
    2. Right below you will see a button for Prompts Library which has all the sample prompts that would generate wonderful strategies, you can pick any of them, if needed you can even tailor those prompts and use them.
    3. To start a new session click on New Session
    4. Enter your prompt or select from the sample prompts or take one prompt from the Prompts Library
    5. Click on the send button to start generating

    Please Note, It takes some time to generate the strategy as it processes a lot of data, so please be patient

    Please Note

    Direct response code from gen-ai may not be 100% accurate, you will have to make sure that pythonic errors are not present. Also dont forget to configure your strategy parameters before executing the code.

    Modify your code ?

    To know more on how to code trading strategies and understand their format, click here. We also have in detail explanation for regular strategies as well as options strategies.

    "},{"location":"python_build/python-build-code-gen-ai/#save-your-strategy","title":"Save your Strategy","text":"
    1. Once it gives you the strategy you can ask it to make more changes as per your need or you can save it directly.
    2. To save, click on the top right corner of the code, you can even copy the code if you want.
    3. Once you save it, it will redirect you to a new page where you have save your strategy and update its configuration parameters from the parameter settings.
    4. All your saved strategies can be viewed in My Coded Strategies section in Python Build.

    What's Next ?

    You can check out our strategy code structure and their respective formats for options and equity. Once you have verified that your strategy has no pythonic errors then you can move on to Configure and Execute your Strategy.

    "},{"location":"python_build/python-build-code-new/","title":"Code New Strategy","text":""},{"location":"python_build/python-build-code-new/#how-to-code-a-new-strategy","title":"How to code a new strategy?","text":"

    If you want to create your own strategy, click on the + Sign in the Code New Strategy option under the My Coded Strategies section.

    A new blank code editor will open, allowing you to start coding your new strategy. You can check out the basic building blocks of a strategy here to help you with your code structure. After you've finished coding, click Save to save this strategy in the My Coded Strategies section.

    How to Code ?

    To know more on how to code trading strategies and understand their format, click here. We also have in detail explanation for regular strategies as well as options strategies.

    Next, you need to configure the strategy\u2019s parameters by clicking on the settings symbol in the top right corner of the code editor. In this section you can add, view & edit the strategy parameters.

    To test the behavior and performance of the strategy, click on Save & Start and follow the directions given earlier. The performance of the strategy will soon be available in the Results section.

    You can rename a strategy by clicking the edit symbol beside the strategy name.

    What's Next ?

    You can check out our strategy code structure and their respective formats for options and equity. Once you have verified that your strategy has no pythonic errors then you can move on to Configure and Execute your Strategy.

    "},{"location":"python_build/python-build-code-ready-templates/","title":"Code Ready Templates","text":""},{"location":"python_build/python-build-code-ready-templates/#how-to-code-strategies-using-ready-templates","title":"How to code strategies using Ready Templates?","text":"

    Select a template that you would like to modify from the Ready Template section. To view all the ready-to-use templates, click on More.

    Click on the Code button placed in the bottom right corner of the selected template to view the strategy code.

    You should now see the code editor, where you can start modifying the code as required.

    Modify your code ?

    To know more on how to code trading strategies and understand their format, click here. We also have in detail explanation for regular strategies as well as options strategies.

    To save the strategy, click the Save button. This strategy will be added to your list of My coded strategies.

    What's Next ?

    You can check out our strategy code structure and their respective formats for options and equity. Once you have verified that your strategy has no pythonic errors then you can move on to Configure and Execute your Strategy.

    "},{"location":"python_build/python-build-config-parameters/","title":"Configure and Execute your Strategy","text":"

    To effectively use pyalgotrading and make the most of your trading strategy, it's essential to be familiar with some frequently used stock market terminologies. Let's go over these terms before diving into configuring your strategy parameters.

    1. Exchange: An exchange is a marketplace where various financial instruments like securities, commodities, and derivatives are traded. Examples include NSE (National Stock Exchange), BSE (Bombay Stock Exchange), NYSE (New York Stock Exchange), and NASDAQ.
    2. Instruments: Instruments are the specific assets or securities traded on these exchanges. These include stocks like AAPL (Apple Inc.), TSLA (Tesla, Inc.), TATAMOTORS (Tata Motors Limited), and SBIN (State Bank of India).
    3. Candlestick Charts: Candlestick charts are commonly used in stock market analysis. They represent the opening and closing prices of a stock or asset over regular time intervals, which are often referred to as \"candle size.\"
    4. Intraday Trading: Intraday trading, also known as day trading, involves buying and selling stocks within the same trading day.
    5. Delivery Trading: Delivery trading is a type of trading where traders buy shares and hold them for an extended period, which can range from a few days to several months or even years.
    6. Position: A position refers to the amount of a security or asset owned (or sold short) by an individual or entity. Traders take positions when they make buy or sell orders.
    7. Order: An order is an instruction to buy or sell a security or asset on a trading venue, such as a stock market or cryptocurrency exchange.
    8. Crossover: A crossover occurs when two signal lines intersect. Signal lines can be various indicators like moving averages, Relative Strength Index (RSI), Volume Weighted Averages, etc. Crossovers are often used to trigger and place orders. Now that we've covered these essential terms, let's move on to configuring your trading strategy parameters.
    "},{"location":"python_build/python-build-config-parameters/#configure-strategy-parameters","title":"Configure Strategy Parameters","text":"

    You can configure the strategy\u2019s parameters by clicking on the settings symbol in the top right corner of the code editor. In this section, you can view a strategy\u2019s parameters or edit these parameters too.

    There 4 sections for configuring your parameters:

    "},{"location":"python_build/python-build-config-parameters/#instruments","title":"Instruments","text":"
    • Here you can select the allowed exchanges from the drop box given on the left (eg: NASDAQ, NYSE, NSE etc.)
    • Once you have selected the exchange you can search the instrument in the search-box right beside it
    "},{"location":"python_build/python-build-config-parameters/#strategy-settings","title":"Strategy Settings","text":"
    • Here you can select the candle size, it is the size of candle on which you are running your strategy is going to be executed
    • You can even select the mode i.e. INTRADAY or DELIVERY
    "},{"location":"python_build/python-build-config-parameters/#order-settings","title":"Order Settings","text":"
    • You can adjust your orders, on how they will act when the strategy is 'Resumed' or strategy is 'Exited'
    • Resume Positions from Start: If you have previous trades in your strategy, you can resume your strategy without deleting or overwriting them. Only applicable for DELIVERY mode.
    • Exit Intraday Orders on Stop: If checked, strategy will square-off positions automatically at the end of each trading day.
    • Max Order Count: Maximum number of orders your strategy will execute per day. Once this limit is completed for the day, all BUY/SELL signals for new orders would be automatically ignored.
    • Crossover Accuracy Decimal: When running a crossover strategy, the number of decimals of the underlying indicators to be taken do decide an upward cut, downward cut or no cut.
    • Credit Exposure Factor: Applicable only for Live Trading. Use this to set the exposure limit given by your broker. System will take available funds as 'current fund balance X credit exposure factor' for executing the strategy
    "},{"location":"python_build/python-build-config-parameters/#user-parameters","title":"User Parameters","text":"
    • Use this option to pass various values of the strategy parameters from outside, without changing the code base for every execution. They are accessible as a dictionary called strategy_parameters inside your strategy class' constructor method.
    • You can customize/create your own parameters for the strategy. Click on +Add New Parameter to begin adding them. They should match with the parameters you have defined in your Python class.

    Once Strategy and User Parameters are configured, you can follow these steps to execute your strategy.

    "},{"location":"python_build/python-build-config-parameters/#follow-these-simple-steps-to-test-the-strategys-performance","title":"Follow these simple steps to test the strategy's performance","text":"

    Step 1

    After clicking Save & Start, a pop-up window will appear.

    Step 2

    In the customizations section, choose Backtesting to backtest or Paper Trading to Paper Trade a strategy.

    Select the duration option in the customizations section. Add the desired date and time, as well as the quantity/lots. In Backtesting, you will need to put the start date and end date along with time.

    In Paper Trading, you only need to add the start and end time.

    Step 3

    In the Strategy Configuration section, you can check the parameters added or modified by you.

    Step 4

    To begin testing the strategy, click on Execute.

    Step 5

    Go to the Analytics section to see the returns and performance of the strategy visualized.

    Note:

    The use of Paper Trading would be available from Monday - Friday (excluding exchange's holidays) from 9 AM to 16:00 PM. You can code your strategy & analyze the strategy results 24x7.

    Go to the Logs section to see the step-by-step execution of the strategy in logs.

    You can rename a strategy by clicking the edit symbol beside the strategy name.

    "},{"location":"python_build/python-build-getstarted/","title":"Setup your Workspace","text":""},{"location":"python_build/python-build-getstarted/#how-to-get-started-with-python-build","title":"How to get started with Python Build?","text":"

    To start developing your own strategy, you must first activate a plan from the Pricing section. Select the Developers tab in the Pricing section and select a plan of your choice. There is currently one developer plan available:

    • Advanced Developer Plan: Develop your own Algorithmic Trading Strategy for Free along with Analytics support, concurrent Strategy Executions, Professional Support, and more.

    After selecting your plan, you will be able to begin coding. You can either edit the preloaded Ready templates or use the My Coded Strategies section to create your own strategies.

    "},{"location":"python_build/python-build-introduction/","title":"Python Build Web","text":""},{"location":"python_build/python-build-introduction/#introduction","title":"Introduction","text":"

    Now you can code your own strategy easily using our Python Build service! Begin coding your own strategy from scratch, or modify some of our ready-made templates to suit your needs. Get access to our state-of-the-art AlgoBulls Core Trading Engine, which automatically leverages our infrastructure so that you can access the latest historical data to gauge the performance of your strategies. Tweak the various parameters of your strategy to choose the ideal instrument, indicator values, and profit loss percentages as per your needs! View the performance of your strategy using our visual analytics feature and continue to tweak until you are satisfied with the performance. Get your strategy approved for live trading from our experts and deploy it on 30+ supported brokers without coding any broker integration logic.

    Select Python Build from the navigation bar on the left to know more.

    "},{"location":"python_build/python-build-introduction/#an-overview","title":"An overview","text":"

    Running Strategies: This section shows how many strategies are currently active and running in your account.

    Strategies Saved: This displays the number of strategies saved in your AlgoBulls account. It also shows the number of maximum strategies that you can save as per your current plan.

    Execution Time Consumed: You can view the number of minutes that have been used for Backtesting or Paper Trading your strategies.

    Note:

    Paper Trading would be available from Monday - Friday (excluding NSE/NASDAQ holidays) within the trading time of that particular exchange. You can code your strategy, execute on Backtesting mode or analyse the strategy results 24x7.

    Analytics Support: This shows whether your analytics support is active. Analytics support is not available to free plan users.

    Professional Support: This section connects you to other professional support forums for additional support while developing the strategy.

    Active Plan: This section displays the current plan active on your AlgoBulls account.

    Ready Templates: Ready-to-use templates that you can modify and test.

    My Coded Strategies: Strategies that have been coded and saved by you are displayed here. This includes new and modified strategies developed by you.

    Need Support: You can raise support for the particular statregy from here make sure your stategy is present in My Coded Strategies section

    Quick Help: Resources to help you code better.

    "},{"location":"python_build/python-build-professional/","title":"Python Build Professional Support","text":""},{"location":"python_build/python-build-professional/#are-you-an-experienced-trader-with-limited-coding-experience","title":"Are you an Experienced Trader with Limited Coding Experience?","text":"

    If you're an experienced trader who excels at building trading strategies based on technical analysis but lacks the coding expertise to implement them, Python Build offers you the perfect solution \u2013 our Python Build Professional Support.

    "},{"location":"python_build/python-build-professional/#how-can-python-build-professional-support-help-you","title":"How Can Python Build Professional Support Help You?","text":"

    Our Python Build Professional Support bridges the gap between your market expertise in technical analysis and our proficiency in coding and algo trading strategy development. We understand that not everyone is a coding wizard, and that's where our professional support comes in.

    "},{"location":"python_build/python-build-professional/#getting-started","title":"Getting Started","text":"

    To take advantage of our Python Build Professional Support, follow these simple steps:

    1. Click on \"Professional Support\" - Look for the \"Professional Support\" button on the Python Build Web splash and click on it to get started.

    2. Describe Your Strategy - Once you're in the professional support interface, you'll be prompted to describe your trading strategy. You can provide details on how you want your strategy to work, including entry and exit criteria, risk management rules, and any specific requirements you have.

      Sample Prompt: \"I want a strategy that buys stocks when the 50-day moving average crosses above the 200-day moving average and sells when it crosses below. Additionally, I'd like a stop-loss of 5% and a take-profit at 10%.\"

    3. Indicate Technical Indicators - Specify which technical indicators you want to use in your strategy. You can mention indicators like moving averages, RSI, MACD, or any others that are crucial for your trading approach.

    4. Submit Your Request - Once you've filled in the necessary information, click on the \"Submit\" button. Your request will be sent to our professional support team.

    "},{"location":"python_build/python-build-professional/#what-happens-next","title":"What Happens Next?","text":"

    Our dedicated professional support team will promptly review your request. They will connect with you to gather any additional details if needed and ensure they have a clear understanding of your requirements.

    Our team of experienced Python developers and algo trading experts will then get to work on implementing your strategy according to your specifications. We'll ensure that your strategy is coded efficiently and effectively, leveraging the power of Python Build.

    You can expect to receive your custom-coded trading strategy as soon as possible, allowing you to put your trading expertise to work without the coding hassle.

    With Python Build's Professional Support, you can confidently bring your trading ideas to life and stay ahead in the competitive world of stock market trading. Start automating your strategies today!

    "},{"location":"python_build/python-build-view-results/","title":"Analytics","text":""},{"location":"python_build/python-build-view-results/#how-to-view-the-results","title":"How to view the Results?","text":"

    Once you start the strategy, it may take a while for it to complete the execution. You can switch to the Analytics tab after you run your strategy. Even if the strategy execution is not complete, you will still see intermediate results.

    Analytics: In the analytics section, you can view a strategy\u2019s Stats & various other metrics in the form of graphs like P&L.

    "},{"location":"python_build/python-build-view-results/#stats","title":"Stats","text":"

    In this section you can see the total returns, sharpe ratio, sortino ratio, volatility, Max Drawdown, Total wins or Loses, Total short or long trades, hit ratio, number of trades, average trades per day, max profit, max loss, average profit per winning trade, average loss per losing trade.

    "},{"location":"python_build/python-build-view-results/#cumulative-returns","title":"Cumulative Returns","text":""},{"location":"python_build/python-build-view-results/#profit-loss-currency-or","title":"Profit & Loss (Currency or %)","text":"

    The trade by trade P&L in Currency or Percentage.

    "},{"location":"python_build/python-build-view-results/#end-of-year-returns-plot","title":"End of Year Returns Plot (%)","text":""},{"location":"python_build/python-build-view-results/#monthly-returns-histogram","title":"Monthly Returns Histogram (%)","text":""},{"location":"python_build/python-build-view-results/#monthly-returns-heatmap","title":"Monthly Returns Heatmap (%)","text":""},{"location":"python_build/python-build-view-results/#daily-returns","title":"Daily Returns (%)","text":""},{"location":"python_build/python-build-view-results/#underwater-drawdown-plot","title":"Underwater Drawdown Plot (%)","text":""},{"location":"python_build/python-build-view-results/#pl-book","title":"P&L Book","text":"

    View detailed trade by trade report. Premium users can analyze this data in the form of heatmaps for Gross Profit & Loss, Trading Volume & Total number of Trades.

    "},{"location":"python_build/python-build-view-results/#user-log","title":"User Log","text":"

    Real-time logs from strategy execution are displayed in this section. Use these logs to debug your strategy\u2019s behavior and performance.

    "},{"location":"python_build/python-build-view-results/#order-history","title":"Order History","text":"

    View the order state transition for every order placed by your strategy in-depth.

    "},{"location":"python_build/strategy_guides/common_options_strategy/","title":"Options Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"python_build/strategy_guides/common_options_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyOptionsEMACrossover(StrategyOptionsBaseV2)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every options strategy is a child class of the StrategyOptionsBaseV2 class.\n
    "},{"location":"python_build/strategy_guides/common_options_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'options_ema_crossover'\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next, we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.no_of_strikes_away_ce = self.strategy_parameters['NO_OF_STRIKES_AWAY_CE']\nself.no_of_strikes_away_p = self.strategy_parameters['NO_OF_STRIKES_AWAY_PE']\nself._strike_direction_ce = self.strategy_parameters['STRIKES_DIRECTION_CE']\nself._strike_direction_pe = self.strategy_parameters['STRIKES_DIRECTION_PE']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may change for different strategies.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters.

    try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg:

    self.main_order = None            # We save the entry order in this variable\nself.stoploss_order = None        # We save the corresponding stoploss exit order of the entry order in this variable\n
    We initialize the variables with a None value. !!! Note There could be more strategy variables required as per the strategy requirement.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"python_build/strategy_guides/common_options_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"python_build/strategy_guides/common_options_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
    self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags.

    eg:

    self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"python_build/strategy_guides/common_options_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag

    eg:

    self.order_tag_manager.remove_tags(tags=entry_key)\n

    Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in order tags.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s).

    eg:

    self.order_tag_manager.remove_order(main_order)\n
    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_internals","title":"get_internals","text":"
    Returns the values i.e. both the entry and exit orders stored inside the tags list.\n
    "},{"location":"python_build/strategy_guides/common_options_strategy/#5-child-instruments-calculation","title":"5. Child instruments calculation","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#get_ltp","title":"get_ltp","text":"

    Fetch the ltp of the base instrument (instrument set while executing strategy)

    ltp = self.broker.get_ltp(self.underlying_instrument)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#options_instruments_set_up_local","title":"options_instruments_set_up_local","text":"

    Get the ATM ITM and OTM lists of the child instrument based on the LTP

    self.options_instruments_set_up_local(self.underlying_instrument, tradingsymbol_suffix, ltp)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_child_instrument_details","title":"get_child_instrument_details","text":"

    Select a child instrument from the lists of ATM, ITM, and OTM based on the strike direction and no of strikes given for the child instrument

    child_instrument = self.get_child_instrument_details(self.underlying_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes)\n

    "},{"location":"python_build/strategy_guides/common_options_strategy/#6-entry-methods","title":"6. Entry Methods","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create a get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selectd_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#7-exit-methods","title":"7. Exit Methods","text":""},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#8-other-common-methods","title":"8. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"python_build/strategy_guides/common_options_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#options_instruments_set_up_local_1","title":"options_instruments_set_up_local","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch the ATM, ITM, and OTM lists of the child instruments based on the LTP of the base instrument.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#get_child_instrument_details_1","title":"get_child_instrument_details","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch a single child instrument based on the no of strikes and strike direction.

    "},{"location":"python_build/strategy_guides/common_options_strategy/#9-cleanup","title":"9. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"python_build/strategy_guides/common_options_strategy/#10-check-out-our-docs-for-developed-options-strategies","title":"10. Check out our docs for developed Options strategies","text":"
    • Options Bear Call Ladder
    • Options Bear Put Ladder
    • Options Bull Call Ladder
    • Options Bull Put Ladder
    • Options Long Iron Butterfly
    • Options Straddle
    • Options Strangle

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/","title":"Regular Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"python_build/strategy_guides/common_regular_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyFuturesEMACrossover(StrategyBase)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every strategy is a child class of the StrategyBase class.\n
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'futures_ema_crossover'\n

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format, as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may be different for different strategies.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters. try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg: self.order_tag_manager = None

    We initialize the variables with a None value.

    Note

    There could be more strategy variables required as per the strategy requirement.\n
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
      self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags. eg:
      self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag eg:
      self.order_tag_manager.remove_tags(tags=entry_key)\n
    • Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in the order tags.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s). eg:
    self.order_tag_manager.remove_order(main_order)\n

    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#get_internals","title":"get_internals","text":"
    • Returns the values i.e. both the entry and exit orders stored inside the tags list.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#5-entry-methods","title":"5. Entry Methods","text":""},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create an get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selected_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#6-exit-methods","title":"6. Exit Methods","text":""},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit:","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#7-other-common-methods","title":"7. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"python_build/strategy_guides/common_regular_strategy/#8-cleanup","title":"8. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"python_build/strategy_guides/common_regular_strategy/#10-check-out-our-docs-for-developed-regular-strategies","title":"10. Check out our docs for developed Regular strategies","text":"
    • Aroon Crossover
    • Bollinger Bands
    • EMA Crossover
    • Inverse EMA Scalping
    • Reverse RSI
    • Stochastic Crossover
    • VWAP Crossover

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"python_build/strategy_guides/structure/","title":"Code Structure of Strategy","text":"

    Coding Prerequisites

    • For pyalgotrading check here.
    • For Python Build Web check here.
    "},{"location":"python_build/strategy_guides/structure/#methods","title":"Methods","text":""},{"location":"python_build/strategy_guides/structure/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function helps you choose which trading instruments you want your strategy to work with. The system will use this function to go through each instrument one by one, at each candle's time. You get to write code that decides whether to place an order for a specific instrument or not.

    "},{"location":"python_build/strategy_guides/structure/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function is where you can place orders for the instruments you selected earlier. It's executed for each instrument you picked in the previous function.

    "},{"location":"python_build/strategy_guides/structure/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    After you've entered a position for an instrument, this function is called for each of those instruments at each candle interval. You can use it to decide whether an instrument should be exited from the position.

    "},{"location":"python_build/strategy_guides/structure/#strategy_exit_position","title":"strategy_exit_position()","text":"

    In this function, you can close or exit positions for the instruments you marked for exiting in the previous function. It's done instrument by instrument.

    "},{"location":"python_build/strategy_guides/structure/#supporting-methods","title":"Supporting Methods","text":"

    You have the following supporting methods:

    "},{"location":"python_build/strategy_guides/structure/#init","title":"init()","text":"

    This method is like a starter for your strategy. It checks if the values you give it make sense and sets up some useful information for your strategy to use.

    "},{"location":"python_build/strategy_guides/structure/#initialize","title":"initialize()","text":"

    This method is called when your strategy begins, both at the very start and at the beginning of each trading day. It's like setting up your strategy's workspace and giving your tools a starting position.

    "},{"location":"python_build/strategy_guides/structure/#name","title":"name()","text":"

    This method gives your strategy a special name. It's like giving your strategy a unique nickname.

    "},{"location":"python_build/strategy_guides/structure/#versions_supported","title":"versions_supported()","text":"

    This method lets you specify which version of the AlgoBulls Platform your strategy works well with. It's like saying, \"My strategy is ready for this specific version of the platform.\"

    "},{"location":"python_build/strategy_guides/structure/#utility-functions","title":"Utility Functions","text":"

    You have the following utility function to be used in this strategy :

    Links

    • Strategy Structure (regular)
    • Strategy Structure (options)
    "},{"location":"python_build/strategy_guides/structure/#get_crossover_value","title":"get_crossover_value()","text":"This handy function calculates something called the \"crossover value\" for you. It's like having a calculator that figures out this specific value for your strategy."},{"location":"python_build/strategy_guides/structure/#flowchart","title":"Flowchart","text":"

    Once you create your own strategy or use a ready strategy from the pyalgostrategypool package, this is how it works internally on the AlgoBulls Core Trading Engine.

    "},{"location":"strategies/aroon_crossover/","title":"Aroon Crossover","text":"

    This is a trading strategy called \"Aroon Crossover\" implemented in Python using the PyAlgoTrading library. The strategy is based on the Aroon indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/aroon_crossover/#aroon-indicator","title":"Aroon Indicator","text":"
    • In the stock market, Aroon refers to the Aroon indicator, which is a technical analysis tool used to measure the strength and direction of a trend. It consists of two lines, the Aroon-Up line and the Aroon-Down line.

    • The Aroon-Up line measures the number of periods since the highest price within a given period, while the Aroon-Down line measures the number of periods since the lowest price within a given period. The Aroon indicator ranges from 0 to 100, with values closer to 100 indicating a strong trend and values closer to 0 indicating a weak or non-existent trend.

    • Traders and investors use the Aroon indicator to identify potential trend reversals, assess the strength of a trend, and generate buy or sell signals. For example, when the Aroon-Up line crosses above the Aroon-Down line, it may suggest a bullish trend, while a cross below may indicate a bearish trend.

    • It is important to note that the Aroon indicator is just one of many tools used in technical analysis, and its effectiveness can vary depending on market conditions and other factors. It is often used in conjunction with other indicators and analysis techniques to make informed trading decisions.

    Fig.1 - SPY candle chart (top), Aroon Indicator for that chart (bottom)"},{"location":"strategies/aroon_crossover/#strategy-overview","title":"Strategy Overview","text":"

    This strategy, called Aroon Crossover, implements a crossover strategy using the Aroon indicator. It generates entry and exit signals based on the crossover of Aroon Up and Aroon Down values.

    "},{"location":"strategies/aroon_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 The period for which we calculate the Aroon Value"},{"location":"strategies/aroon_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the Aroon Up and Aroon Down values for a given instrument based on the historical data. It uses the talib.AROON function from the Talib library to calculate the values. The method then determines the crossover of Aroon Up and Aroon Down and returns the corresponding entry or exit action.

    "},{"location":"strategies/bollinger_bands/","title":"Bollinger Bands","text":"

    This is a trading strategy called \"Bollinger Bands\" implemented in Python using the PyAlgoTrading library. The strategy is based on the bollinger bands indicator values.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/bollinger_bands/#bollinger-bands-indicator","title":"Bollinger Bands Indicator","text":"

    Bollinger Bands consists of a middle band (typically a 20-day Simple Moving Average) and two bands that represent the upper and lower price boundaries based on standard deviations. The bands adjust dynamically with market volatility.

    Key points about Bollinger Bands:

    • The middle band is a moving average, while the upper and lower bands are calculated by adding/subtracting standard deviations from the middle band.
    • Bollinger Bands help assess price volatility and identify potential overbought or oversold market conditions.
    • A narrowing of the bands (Bollinger Squeeze) suggests low volatility, often followed by increased volatility and potential price breakout.
    • Touching or exceeding the upper band may indicate an overbought market, while touching or falling below the lower band may suggest an oversold market.
    • Price reversals can be observed when the price moves from one band to the other.
    • The upper and lower bands can act as dynamic support and resistance levels.
    • Bollinger Bands are used in combination with other indicators and analysis techniques to make trading decisions. They are not a standalone strategy but provide valuable insights when combined with other tools like the RSI.
    Fig.1 - SPY candle chart (top) with Bollinger Bands (purple), 20 day standard deviation graph (bottom)"},{"location":"strategies/bollinger_bands/#strategy-overview","title":"Strategy Overview","text":"

    This strategy, called Bollinger Bands, is an implementation of the Bollinger Bands indicator. It uses the Bollinger Bands values to compare with previous candle's OPEN, HIGH, LOW and CLOSE values and generate entry and exit signals for trading instruments.

    "},{"location":"strategies/bollinger_bands/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which Bollinger Bands are calculated STANDARD_DEVIATION None between 0 to 10 Standard deviation (in percent) for upper and lower band from the signal bands"},{"location":"strategies/bollinger_bands/#decision-calculation","title":"Decision Calculation","text":"

    The get_decision method calculates the Bollinger Bands values for a given instrument based on the OHLC (Open, High, Low, Close) historical data. It uses the talib.BBANDS function from the Talib library to calculate the upper and lower bands. The method compares the previous candle's open, low, and close values with the upper and lower bands to determine the entry or exit action. If the conditions for a buy or sell signal are met, the corresponding action is returned.

    "},{"location":"strategies/ema_crossover/","title":"EMA Crossover","text":"

    This is a trading strategy called \"EMA Regular Order Strategy\" implemented in Python using the PyAlgoTrading library. The strategy is based on the exponential moving average crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/ema_crossover/#ema-indicator","title":"EMA indicator","text":"

    Exponential Moving Averages (EMAs) are a popular technical analysis tool used in the stock market. They are similar to Simple Moving Averages (SMAs), but they place greater emphasis on recent price data.

    Here is a summary of Exponential Moving Averages:

    • An Exponential Moving Average is a type of moving average that assigns more weight to recent prices, making it more responsive to current market conditions.
    • Unlike the SMA, which gives equal weight to all data points, the EMA assigns exponentially decreasing weights to older data points.
    • The formula for calculating an EMA involves using a smoothing factor or multiplier that determines the weight given to the previous EMA value and the current price.
    • The most common period used for EMAs is 12 and 26 days, representing short-term and long-term trends, respectively.
    • EMAs are commonly used to identify trend direction, support and resistance levels, and potential entry or exit points.
    • When the price crosses above the EMA, it may signal a bullish trend, while a cross below the EMA may suggest a bearish trend.
    • The EMA is more responsive to price changes compared to the SMA, making it useful for short-term trading strategies.
    • EMAs are often used in conjunction with other technical indicators, such as the Moving Average Convergence Divergence (MACD), to generate trading signals.
    • Traders and investors use Exponential Moving Averages to smooth out price fluctuations, identify trend reversals, and determine potential support and resistance levels. They provide a visual representation of the average price over a specific period, with greater weight given to recent prices.
    Fig.1 - IBM candle chart (top) with EMA (green) and SMA (red) lines"},{"location":"strategies/ema_crossover/#strategy-overview","title":"Strategy Overview","text":"

    This strategy, called EMA Regular Order Strategy, implements a crossover strategy using Exponential Moving Averages (EMA). It generates entry and exit signals based on the crossover of two EMAs.

    "},{"location":"strategies/ema_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD1 None greater than 0 Period (number of candles) by which EMA-1 is calculated TIME_PERIOD2 None greater than 0 Period (number of candles) by which EMA-2 is calculated"},{"location":"strategies/ema_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the two EMAs of the closing prices. It uses the talib.EMA function from the Talib library to calculate the EMAs. The method then determines the crossover between the two EMAs and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/inverse_ema_scalping/","title":"Inverse EMA Scalping","text":"

    This is a trading strategy called \"Inverse EMA Scalping Regular Order Strategy\" implemented in Python using the PyAlgoTrading library. The strategy is based on the exponential moving average crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebooks for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebooks for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/inverse_ema_scalping/#what-is-inverse-ema","title":"What is Inverse EMA","text":"

    Inverse EMA, also known as Reverse Exponential Moving Average (REMA), is a variation of the Exponential Moving Average (EMA) in the stock market. While the EMA gives more weight to recent price data, the Inverse EMA assigns more weight to older data points.

    Here is a summary of Inverse EMA:

    • Inverse EMA is calculated by applying the EMA formula in reverse, giving greater weight to older data points and less weight to recent prices.
    • Instead of smoothing out price fluctuations like the EMA, the Inverse EMA amplifies them, making it more responsive to historical data.
    • The formula for calculating Inverse EMA is similar to the EMA, but it uses a different smoothing factor or multiplier that assigns higher weight to older data points.
    • The Inverse EMA is primarily used to identify historical patterns and potential turning points in the market.
    • When the price crosses above the Inverse EMA, it may suggest a potential reversal from a downtrend to an uptrend, and vice versa when the price crosses below the Inverse EMA.
    • Inverse EMA is not as widely used as the EMA or other moving averages, and its applications may vary among traders and analysts.
    • Inverse EMA is a less commonly used variation of the Exponential Moving Average. While the EMA is designed to provide a smoothed average of recent prices, the Inverse EMA emphasizes historical data, potentially highlighting significant turning points in the market. Traders and analysts who utilize the Inverse EMA may incorporate it into their technical analysis toolkit to complement other indicators and gain insights into price reversals and historical patterns.
    "},{"location":"strategies/inverse_ema_scalping/#strategy-overview","title":"Strategy Overview","text":"

    This strategy implements a scalping strategy using Exponential Moving Averages (EMA). It generates entry and exit signals based on the inverse crossover of two EMAs.

    "},{"location":"strategies/inverse_ema_scalping/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description LARGER_TIME_PERIOD None greater than 0 Period (number of candles) by which large period EMA is calculated SMALLER_TIME_PERIOD None greater than 0 Period (number of candles) by which short period EMA is calculated"},{"location":"strategies/inverse_ema_scalping/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the inverse crossover of the two EMAs of the closing prices. It uses the talib.EMA function from the Talib library to calculate the EMAs. The method then determines the inverse crossover between the two EMAs and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/macd_crossover/","title":"MACD Crossover","text":"

    This is a trading strategy called \"MACD Crossovers\" implemented in Python using the PyAlgoTrading library. The strategy is based on the MACD indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/macd_crossover/#macd-crossover_1","title":"MACD Crossover","text":"

    In the dynamic world of stock trading, mastering effective strategies is the key to success. The Moving Average Convergence Divergence (MACD) Crossover strategy is a powerful tool that can help traders identify potential entry and exit points in the stock market.

    Here is a summary of RSI and MACD in the stock market: - The MACD is a trend-following momentum indicator that consists of two lines: the MACD line and the Signal line. - A bullish signal is generated when the MACD line crosses above the Signal line, indicating a potential uptrend. - Conversely, a bearish signal occurs when the MACD line crosses below the Signal line, suggesting a potential downtrend. - When the MACD crosses above the Signal line, it's a signal to consider a long (BUY) position. - Conversely, when the MACD crosses below the Signal line, it may be time to think about a short (SELL) position.

    "},{"location":"strategies/macd_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The MACD Crossover strategy is a robust approach that leverages the power of the MACD indicator to identify potential entry and exit points in the stock market.

    "},{"location":"strategies/macd_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIMEPERIOD_FAST None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SLOW None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SIGNAL None greater than 0 Period (number of candles) by which moving average is calculated"},{"location":"strategies/macd_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the inverse crossover of the two EMAs of the closing prices. It uses the talib.MACD function from the Talib library to calculate the MACDs. The method then determines the crossover between the two MACDs and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/mean_reversion_bollinger_bands/","title":"Mean Reversion Bollinger Bands","text":"

    This is a trading strategy called \"Mean Reversion Bollinger Bands\" implemented in Python using the PyAlgoTrading library. The strategy is based on the bollingerbands indicator.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/mean_reversion_bollinger_bands/#mean-reversion-bollinger-bands_1","title":"Mean Reversion Bollinger Bands","text":"

    In the dynamic world of stock trading, effective strategies can make all the difference. The Mean Reversion Bollinger Bands strategy is a powerful tool that traders can use to identify potential entry and exit points in the stock market.

    Here is a summary of RSI and MACD in the stock market: - Bollinger Bands are a volatility indicator that consists of a middle band (usually a simple moving average), an upper band, and a lower band. These bands expand and contract based on price volatility. The strategy leverages these bands to identify potential mean reversion opportunities. - Mean reversion is the idea that prices tend to revert to their historical average over time. In this strategy, traders look for situations where the price deviates significantly from the middle Bollinger Band and expect it to revert to the mean. - The Mean Reversion Bollinger Bands strategy involves identifying price movements that touch or cross the upper or lower bands and anticipating a reversal. - When the price touches the upper band, traders may consider a short (SELL) position, expecting a downward move. - Conversely, when the price touches the lower band, it may signal a potential long (BUY) opportunity, anticipating an upward move.

    "},{"location":"strategies/mean_reversion_bollinger_bands/#strategy-overview","title":"Strategy Overview","text":"

    The Mean Reversion Bollinger Bands strategy is a robust approach that leverages the power of Bollinger Bands to identify potential mean reversion opportunities in the stock market.

    "},{"location":"strategies/mean_reversion_bollinger_bands/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which Bollinger Bands are calculated STANDARD_DEVIATION None between 0 to 10 Standard deviation (in percent) for upper and lower band from the signal bands"},{"location":"strategies/mean_reversion_bollinger_bands/#decision-calculation","title":"Decision Calculation","text":"

    The get_decision method calculates the Bollinger Bands values for a given instrument based on the OHLC (Open, High, Low, Close) historical data. It uses the talib.BBANDS function from the Talib library to calculate the upper and lower bands. The method compares the previous candle's open, low, and close values with the upper and lower bands to determine the entry or exit action. If the conditions for a buy or sell signal are met, the corresponding action is returned.

    "},{"location":"strategies/options_bear_call_ladder/","title":"Options Bear Call Ladder","text":""},{"location":"strategies/options_bear_call_ladder/#options-bear-call-ladder","title":"Options Bear Call Ladder","text":"

    This class implements the Options Bear Call Ladder strategy.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bear_call_ladder/#bear-call-ladder","title":"Bear Call Ladder","text":"
    • In the stock market, an options bear call ladder is a strategy that involves buying and selling call options with different strike prices to profit from a moderate bearish outlook on the underlying asset. It is a complex strategy that combines both long and short call positions.

    • To create a bear call ladder, an investor typically does the following:

      1. Sells a lower strike call option.
      2. Buys two higher strike call options.
      3. Sells a final even higher strike call option.
    • The bear call ladder aims to generate a limited profit if the price of the underlying asset remains below the middle strike price at expiration. The strategy benefits from time decay and a moderate decrease in the price of the underlying asset.

    • The maximum profit potential of the bear call ladder is achieved when the price of the underlying asset is below the middle strike price at expiration. If the price declines further, the profit potential remains limited. However, if the price rises above the higher strike price, the strategy can result in losses.

    • The key feature of the bear call ladder is the combination of short call options, which generate premium income, and long call options, which provide protection against unlimited losses in case the price of the underlying asset rises sharply.

    • Traders implementing the bear call ladder strategy should carefully consider factors such as the strike prices, premium costs, and expiration date to assess their risk-reward profile. It's important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    • Please be aware that options trading can be complex and involves significant risks. It is always recommended to consult with a qualified financial advisor or broker before engaging in options trading activities.

    "},{"location":"strategies/options_bear_call_ladder/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 0 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bear_put_ladder/","title":"Options Bear Put Ladder","text":""},{"location":"strategies/options_bear_put_ladder/#options-bear-put-ladder","title":"Options Bear Put Ladder","text":"

    This is a template for the Options Bear Put Ladder strategy. The strategy involves the combination of buying and selling put options to profit from a downward price movement in the underlying asset. It utilizes multiple legs with different strike prices and transaction types to create a ladder-like structure.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bear_put_ladder/#bear-put-ladder","title":"Bear Put Ladder","text":"
    • In the stock market, an options bear put ladder is a strategy that combines buying and selling put options with different strike prices to profit from a moderate bearish view on the underlying asset. It involves a mix of long and short put positions.

    • To implement a bear put ladder strategy, an investor generally follows these steps:

      1. Buys a put option with a lower strike price.
      2. Sells two put options with higher strike prices.
      3. Buys a final put option with an even higher strike price.
    • The goal of the bear put ladder is to generate a limited profit if the price of the underlying asset remains below the middle strike price at expiration. The strategy benefits from time decay and a moderate decline in the price of the underlying asset.

    • The maximum profit potential is reached when the price of the underlying asset is below the middle strike price at expiration. If the price continues to decrease, the profit potential remains limited. However, if the price rises above the higher strike price, the strategy can result in losses.

    • The bear put ladder strategy combines short put options to generate premium income and long put options to provide protection against significant losses in case the price of the underlying asset declines substantially.

    • Traders implementing the bear put ladder strategy should consider factors such as the strike prices, premium costs, and expiration date to assess the risk-reward profile. It's crucial to have a comprehensive understanding of options trading and associated risks before employing this strategy in the stock market.

    • Keep in mind that options trading can be complex and involves substantial risks. It is advisable to consult with a qualified financial advisor or broker before engaging in options trading activities.

    "},{"location":"strategies/options_bear_put_ladder/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 0 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bull_call_ladder/","title":"Options Bull Call Ladder","text":""},{"location":"strategies/options_bull_call_ladder/#options-bull-call-ladder","title":"Options Bull Call Ladder","text":"

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bull_call_ladder/#bull-call-ladder","title":"Bull Call Ladder","text":"
    • In the stock market, an options bull call ladder is a strategy that involves buying and selling call options with different strike prices to profit from a moderate bullish outlook on the underlying asset. It is a complex strategy that combines both long and short call positions.

    • To create a bull call ladder, an investor typically does the following:

      1. Buys a lower strike call option.
      2. Sells two higher strike call options.
      3. Buys a final even higher strike call option.
    • The key feature of the bull call ladder is that it provides limited risk and potential for limited profit. The strategy is constructed in such a way that it can benefit from both a moderate rise in the price of the underlying asset and from time decay.

    • The profit potential of the bull call ladder is highest if the price of the underlying asset rises to the level of the middle strike price at expiration. In this case, the investor can achieve the maximum profit. If the price of the underlying asset rises above the middle strike price, the profit potential is limited.

    • On the other hand, if the price of the underlying asset remains below the lower strike price or declines, the strategy can result in losses. The maximum loss occurs if the price falls below the lower strike price.

    • The bull call ladder is a moderately bullish strategy that aims to benefit from both time decay and the potential for a moderate increase in the price of the underlying asset. Traders implementing this strategy should carefully consider factors such as the strike prices, premium costs, and expiration date to assess their risk-reward profile.

    • It is important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    "},{"location":"strategies/options_bull_call_ladder/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 4 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bull_put_ladder/","title":"Options Bull Put Ladder","text":""},{"location":"strategies/options_bull_put_ladder/#options-bull-put-ladder","title":"Options Bull Put Ladder","text":"

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_bull_put_ladder/#bull-put-ladder","title":"Bull Put ladder","text":"
    • In the stock market, an options bull put ladder is a strategy that involves buying and selling put options with different strike prices to profit from a moderate bullish outlook on the underlying asset. It is a complex strategy that combines both long and short put positions.

    • To create a bull put ladder, an investor typically does the following:

      1. Sells a higher strike put option.
      2. Buys two lower strike put options.
      3. Sells a final even lower strike put option.
    • The key feature of the bull put ladder is that it provides limited risk and potential for limited profit. The strategy is constructed in such a way that it can benefit from both a moderate rise in the price of the underlying asset and from time decay.

    • The profit potential of the bull put ladder is highest if the price of the underlying asset rises to the level of the middle strike price at expiration. In this case, the investor can achieve the maximum profit. If the price of the underlying asset rises above the middle strike price, the profit potential is limited.

    • On the other hand, if the price of the underlying asset remains above the higher strike price or increases, the strategy can result in losses. The maximum loss occurs if the price rises above the higher strike price.

    • The bull put ladder is a moderately bullish strategy that aims to benefit from both time decay and the potential for a moderate increase in the price of the underlying asset. Traders implementing this strategy should carefully consider factors such as the strike prices, premium costs, and expiration date to assess their risk-reward profile.

    • It is important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    "},{"location":"strategies/options_bull_put_ladder/#initialization","title":"Initialization","text":"

    The __init__ method initializes the strategy and accepts parameters for configuring the strategy. The parameters are:

    Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 4 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_bull_put_ladder/#additional-notes","title":"Additional Notes","text":"
    • The transaction_type_map, tradingsymbol_suffix_map, and strike_direction_map dictionaries are used for mapping transaction types, trading symbol suffixes, and strike directions, respectively.

    • The strategy supports a single allowed expiry date, which can be modified for multiple expiry dates.

    • The strategy uses the get_options_instrument_with_strike_direction method from the base class to fetch child instruments.

    • The initialize method sets up the list of instruments processed for the day.

    • The options_instruments_set_up_local method sets up the Call and Put Options instruments for a given base instrument.

    • The strategy_select_instruments_for_entry method selects instruments for entry by setting up child instruments and appending them to the selected instruments list.

    • The strategy_enter_position method

    "},{"location":"strategies/options_long_iron_butterfly/","title":"Options Long Iron Butterfly","text":""},{"location":"strategies/options_long_iron_butterfly/#options-long-iron-butterfly","title":"Options Long Iron Butterfly","text":"

    This is a template for implementing the Options Long Iron Butterfly strategy in Python.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)
    "},{"location":"strategies/options_long_iron_butterfly/#long-iron-butterfly","title":"Long Iron Butterfly","text":"
    • In the stock market, an options long iron butterfly is a complex strategy that involves buying two options with the same expiration date but different strike prices. It combines elements of both a bullish and bearish strategy and is designed to profit from low volatility in the underlying asset.

    • To create a long iron butterfly, an investor typically does the following:

      1. Buys an at-the-money (ATM) put option.
      2. Buys an ATM call option.
      3. Sells an out-of-the-money (OTM) put option with a lower strike price.
      4. Sells an OTM call option with a higher strike price.
    • The key feature of the long iron butterfly is that the sold options (OTM put and OTM call) help offset the cost of the purchased options (ATM put and ATM call). This results in a limited-risk, limited-reward strategy.

    • The strategy profits when the price of the underlying asset remains within a specific range, known as the \"profit zone.\" The profit zone is determined by the strike prices of the options involved in the strategy. If the price of the underlying asset is within this range at expiration, the investor can achieve the maximum profit.

    • However, if the price of the underlying asset moves significantly beyond the profit zone, the strategy can result in losses. The maximum loss occurs if the price falls below the lower strike price or rises above the higher strike price.

    • The long iron butterfly is commonly used when traders anticipate low volatility in the underlying asset. It is a neutral strategy that seeks to benefit from the passage of time and a decrease in implied volatility. Traders implementing this strategy should carefully analyze factors such as the strike prices, premium costs, and expiration date to determine their risk-reward profile.

    • It is important to note that options trading involves risks, and traders should have a thorough understanding of the strategy and associated risks before employing it in the stock market.

    "},{"location":"strategies/options_long_iron_butterfly/#strategy-parameters","title":"Strategy Parameters","text":"

    The strategy accepts the following parameters:

    Name Default Value Expected Value Description LEG_ONE_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_ONE_TRADING_SYMBOL_SUFFIX 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_ONE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_ONE_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_TWO_TRANSACTION_TYPE 1 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_TWO_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_TWO_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_TWO_NUMBER_OF_STRIKES 0 greater than 0 Number of strikes for leg one. LEG_THREE_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_THREE_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_THREE_STRIKE_DIRECTION 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_THREE_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one. LEG_FOUR_TRANSACTION_TYPE 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] LEG_FOUR_TRADING_SYMBOL_SUFFIX 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] LEG_FOUR_STRIKE_DIRECTION 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] LEG_FOUR_NUMBER_OF_STRIKES 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_straddle/","title":"Options Straddle","text":""},{"location":"strategies/options_straddle/#options-straddle","title":"Options Straddle","text":"

    This class represents the implementation of an options straddle trading strategy.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_straddle/#straddle-options","title":"Straddle Options","text":"
    • In the stock market, an options straddle is a strategy where an investor simultaneously purchases a call option and a put option with the same strike price and expiration date on a particular underlying asset, such as a stock. The purpose of this strategy is to profit from significant price movements in the underlying asset, regardless of whether the price goes up or down.

    • By using an options straddle, the investor is essentially betting on volatility rather than the direction of the price movement. If the price of the underlying asset experiences a substantial increase or decrease, either the call or put option will generate profits, offsetting any losses from the other option. The potential for profit is highest when there is a significant price swing, while the risk is limited to the cost of purchasing the options.

    • This strategy is often employed when traders anticipate an upcoming event or announcement that could cause significant market volatility, such as earnings reports or regulatory decisions. The goal is to take advantage of the resulting price movement, regardless of whether it is upward or downward.

    • It is important to note that options straddles can be risky as they require significant price movements to be profitable. If the price remains relatively stable, the trader may experience losses due to the cost of purchasing the options. Therefore, careful consideration of market conditions and risk management is crucial when implementing an options straddle strategy.

    "},{"location":"strategies/options_straddle/#parameters","title":"Parameters","text":"Name Default Value Expected Value Description _leg_one_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_one_tradingsymbol_suffix 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_one_strike_direction 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_one_number_of_strikes 0 greater than 0 Number of strikes for leg one. _leg_two_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_two_tradingsymbol_suffix 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_two_strike_direction 1 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_two_number_of_strikes 0 greater than 0 Number of strikes for leg one."},{"location":"strategies/options_strangle/","title":"Options Strangle","text":""},{"location":"strategies/options_strangle/#options-strangle","title":"Options Strangle","text":"

    The StrategyOptionsStrangle class is a strategy template for trading options strangles. It is derived from the StrategyOptionsBaseV2 class.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Options from Indian Exchange (NSE)

    • Click here to view a working notebook for options from NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for options from NSE exchange in cloud. No installation required.
    "},{"location":"strategies/options_strangle/#strangle-options","title":"Strangle Options","text":"
    • In the stock market, an options strangle is a strategy where an investor simultaneously buys or sells a call option and a put option on the same underlying asset but with different strike prices and the same expiration date. The purpose of this strategy is to profit from significant price volatility in the underlying asset.

    • Unlike an options straddle, which involves purchasing options at the same strike price, an options strangle involves selecting different strike prices. Typically, the investor buys an out-of-the-money call option (with a strike price above the current market price) and an out-of-the-money put option (with a strike price below the current market price).

    • The strategy aims to benefit from a significant price movement in either direction. If the price of the underlying asset moves significantly upwards, the call option can generate profits. Conversely, if the price moves significantly downwards, the put option can generate profits. The investor is essentially betting on increased price volatility rather than predicting the direction of the price movement.

    • Options strangles are commonly used when traders anticipate a substantial price movement but are unsure about the direction. This strategy allows for potential profits in either an upward or downward market scenario. However, it is important to note that options strangles can involve higher risks, as the underlying asset's price must move significantly to offset the cost of purchasing both options.

    • Traders employing options strangles should carefully consider factors such as the expected price volatility, the expiration date, and the costs associated with purchasing the options. Implementing risk management techniques and monitoring market conditions are essential when utilizing an options strangle strategy.

    "},{"location":"strategies/options_strangle/#parameters","title":"Parameters","text":"

    The following parameters can be set in the Parameters Configuration Pane:

    Name Default Value Expected Value Description _leg_one_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_one_tradingsymbol_suffix 1 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_one_strike_direction 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_one_number_of_strikes 2 greater than 0 Number of strikes for leg one. _leg_two_transaction_type 2 1 or 2 Transaction type for leg one. [BUY: 1, SELL: 2] _leg_two_tradingsymbol_suffix 2 1 or 2 Trading symbol suffix for leg one. [CE: 1, PE: 2] _leg_two_strike_direction 2 0, 1 or 2 Strike direction for leg one. [ITM: 0, ATM: 1, OTM: 2] _leg_two_number_of_strikes 2 greater than 0 Number of strikes for leg one."},{"location":"strategies/reverse_rsi/","title":"Reverse RSI","text":"

    This is a trading strategy called \"Reverse RSI\" implemented in Python using the PyAlgoTrading library. The strategy is based on the relative strength index indicator.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/reverse_rsi/#relative-strength-index","title":"Relative Strength Index","text":"

    RSI stands for Relative Strength Index, and it is a popular technical indicator used in the stock market to analyze the strength and momentum of a price trend. The RSI provides insights into whether a stock is overbought or oversold and can help identify potential trend reversals.

    Here is a summary of RSI in the stock market:

    • The Relative Strength Index (RSI) is a momentum oscillator that measures the speed and change of price movements.
    • It compares the magnitude of recent gains to recent losses over a specified period, typically 14 days, and generates a value between 0 and 100.
    • The RSI is calculated using a formula that involves averaging the upward price movements (gains) and the downward price movements (losses) over the chosen period.
    • A high RSI value (typically above 70) indicates that a stock is overbought, meaning it may have experienced a significant price increase and could be due for a correction or pullback.
    • Conversely, a low RSI value (typically below 30) suggests that a stock is oversold, indicating it may have experienced a significant price decline and could be poised for a potential rebound or upward move.
    • Traders often use RSI as a tool to identify potential trend reversals, as extreme RSI readings (above 70 or below 30) can signal a potential change in the direction of the price trend.
    • Additionally, traders may look for bullish or bearish divergences between the RSI and the price chart, which can provide further indications of a potential trend reversal.
    • The RSI is just one tool among many in technical analysis, and it is often used in conjunction with other indicators and analysis techniques to make more informed trading decisions.

    Overall, the Relative Strength Index (RSI) is a widely used indicator in the stock market to assess the strength and momentum of price movements. It helps traders identify overbought and oversold conditions, as well as potential trend reversals, which can assist in making trading decisions.

    Fig.1 - MCD candle chart (top) and RSI plot (bottom)"},{"location":"strategies/reverse_rsi/#strategy-overview","title":"Strategy Overview","text":"

    The Reverse RSI strategy is a trading strategy based on the Relative Strength Index (RSI) indicator. It generates entry and exit signals based on the reverse crossover of the RSI values from specified overbought and oversold levels.

    "},{"location":"strategies/reverse_rsi/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which RSI is calculated OVERBOUGHT_VALUE None greater than 0 RSI value above which stocks are considered over-bought OVERSOLD_VALUE None greater than 0 RSI value below which stocks are considered over-sold"},{"location":"strategies/reverse_rsi/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover values for the RSI indicator using historical data of the instrument. It compares the RSI values with the overbought and oversold levels to determine the entry and exit actions. The method returns the crossover values for oversold and overbought levels.

    "},{"location":"strategies/rsi_macd_crossover/","title":"RSI MACD Crossover","text":"

    This is a trading strategy called \"RSI MACD Crossovers\" implemented in Python using the PyAlgoTrading library. The strategy is based on the RSI and MACD indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/rsi_macd_crossover/#rsi-and-macd-crossover","title":"RSI and MACD Crossover","text":"

    In the dynamic world of stock trading, effective strategies are the key to success. The combination of two powerful technical indicators, the Moving Average Convergence Divergence (MACD) and the Relative Strength Index (RSI), can be a game-changer for traders. This strategy leverages MACD and RSI crossovers to identify potential entry and exit points in the stock market.

    Here is a summary of RSI and MACD in the stock market: - The MACD is a trend-following momentum indicator. It consists of two lines: the MACD line and the Signal line. When the MACD line crosses above the Signal line, it generates a bullish signal, suggesting a potential uptrend. Conversely, a cross below the Signal line indicates a bearish signal, signaling a potential downtrend.

    • The RSI is an oscillator that measures the speed and change of price movements. RSI values above 70 typically indicate an overbought condition, signaling a potential price reversal to the downside. RSI values below 30 suggest an oversold condition, indicating a potential price reversal to the upside.

    • The essence of this strategy lies in the crossover of the MACD and RSI indicators. When the MACD generates a bullish crossover and the RSI confirms by being below 70 (not in an overbought condition), it could be an opportune time to consider a long (BUY) position.

    • Conversely, when the MACD produces a bearish crossover and the RSI is above 30 (not in an oversold condition), it may be a suitable moment to contemplate a short (SELL) position.

    "},{"location":"strategies/rsi_macd_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The MACD and RSI crossover strategy is a robust approach that combines the strength of two widely used technical indicators. By identifying potential entry and exit points based on these crossovers, traders can make more informed decisions in the stock market.

    "},{"location":"strategies/rsi_macd_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIMEPERIOD_FAST None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SLOW None greater than 0 Period (number of candles) by which EMA 2 is calculated TIMEPERIOD_SIGNAL None greater than 0 Period (number of candles) by which moving average is calculated TIMEPERIOD_RSI None greater than 0 Period (number of candles) by which RSI is calculated OVERSOLD_VALUE None greater than 0 Threshould value indicating potential buying opportunites OVERBOUGHT_VALUE None greater than 0 Threshould value indicating potential selling opportunites"},{"location":"strategies/rsi_macd_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover value based on the inverse crossover of the two EMAs of the closing prices. It uses the talib.MACD and talib.RSI function from the Talib library to calculate the MACD and RSI. The method then determines the crossover between the MACD and RSI and returns the corresponding value (-1, 0, or 1).

    "},{"location":"strategies/stochastic_crossover/","title":"Stochastic Crossover","text":"

    This is a trading strategy called \"Stochastic Crossover\" implemented in Python using the PyAlgoTrading library. The strategy is based on the Stochastic indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/stochastic_crossover/#stochastic-oscillator-indicator","title":"Stochastic Oscillator Indicator","text":"

    In the stock market, Stochastic refers to the Stochastic Oscillator, which is a popular technical indicator used to analyze price momentum and identify potential trend reversals. The Stochastic Oscillator compares the closing price of a security to its price range over a specific period of time. It consists of two lines, %K and %D, and generates values between 0 and 100.

    Here is a summary of the Stochastic Oscillator in the stock market:

    • The Stochastic Oscillator measures the relationship between a security's closing price and its price range over a chosen period.
    • The indicator consists of two lines: %K and %D. %K represents the current closing price relative to the price range, while %D is a smoothed average of %K.
    • The Stochastic Oscillator is bound between 0 and 100. Readings above 80 are typically considered overbought, suggesting a potential price decline or correction. Readings below 20 are often considered oversold, indicating a potential price increase or rebound.
    • Traders use the Stochastic Oscillator to identify potential trend reversals, as overbought or oversold conditions can indicate a possible change in the direction of the price trend.
    • The indicator also generates bullish or bearish divergences, where the price trend and the Stochastic lines move in opposite directions, which can signal a potential trend reversal.
    • The Stochastic Oscillator has various trading strategies associated with it, such as crossovers, overbought/oversold levels, and divergences, which traders use to make buy or sell decisions.
    • It is important to note that the Stochastic Oscillator is a lagging indicator, meaning it may not provide precise timing for trade entries or exits. Therefore, it is often used in conjunction with other indicators and analysis techniques to confirm signals and improve the accuracy of trading decisions.
    • Overall, the Stochastic Oscillator is a widely used technical indicator in the stock market that helps traders assess price momentum, identify overbought and oversold conditions, and spot potential trend reversals. By analyzing the relationship between the closing price and price range, traders can gain insights into potential buying or selling opportunities.
    Fig.1 - IBM candle chart (top) with Stochastic Fast (bottom) Fig.2 - QQQQ candle chart (top) with Stochastic Fast (bottom 1), Stochastic Slow (bottom 2) and Full Stochastic (bottom 3)"},{"location":"strategies/stochastic_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The strategy follows a simple rule based on the Stochastic indicator crossover. When the Stochastic indicator's %K line crosses above the %D line, a buy signal is generated. Conversely, when the %K line crosses below the %D line, a sell signal is generated. The strategy aims to capture potential trend reversals.

    "},{"location":"strategies/stochastic_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description FASTK_PERIOD or PERIOD None greater than 0 The period for the fast %K line of the Stochastic indicator. SLOWK_PERIOD or SMOOTH_K_PERIOD None greater than 0 The period for the slow %K line of the Stochastic indicator. SLOWD_PERIOD or SMOOTH_D_PERIOD None greater than 0 The period for the slow %D line of the Stochastic indicator."},{"location":"strategies/stochastic_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the crossover values for the Slow-K and Slow-D of Stochastic indicator using historical data of the instrument. The method returns the crossover values between slow-K and slow-D.

    "},{"location":"strategies/volatility_trend_atr/","title":"Volatility Trends with Average True Range (ATR)","text":"

    This is a trading strategy called \"Volatility Trends ATR\" implemented in Python using the PyAlgoTrading library. The strategy is based on the ATR indicator crossover.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.
    "},{"location":"strategies/volatility_trend_atr/#volatility-trends-with-average-true-range-atr-indicator","title":"Volatility Trends with Average True Range (ATR) Indicator","text":"

    In the ever-changing realm of stock trading, market volatility can be both an opportunity and a challenge. Traders and investors require a reliable instrument to gauge price fluctuations and devise informed strategies. The Average True Range (ATR) steps in as a robust technical indicator to fulfill this role. ATR delivers valuable insights into market volatility trends, equipping traders with the necessary tools to make calculated decisions in the stock market.

    Here is a summary of ATR in the stock market: - The Average True Range (ATR), is a technical gauge designed to quantify a security's trading range over a specific time frame. Rather than simply tracking daily price changes, ATR calculates the \"true range,\" accounting for gaps between trading sessions.

    • ATR serves as a reliable volatility indicator. It quantifies the market's propensity for price movement. Elevated ATR values indicate significant price fluctuations, while lower values suggest relative price stability.

    • ATR is adaptable to individual trading preferences. Traders can tailor the ATR period to match their specific trading style. For daily charts, a typical choice is the 14-day period, but adjustments can be made for shorter or longer timeframes, allowing for versatile application.

    • ATR provides a numerical value, and its magnitude corresponds to the extent of market volatility. Larger ATR values signal more significant trading opportunities, much like a roller coaster promising an exhilarating ride.

    • However, ATR isn't solely focused on turbulence. It effectively identifies periods of low volatility or consolidation in the market, signaling a need for caution or a potential shift in trading strategies.

    "},{"location":"strategies/volatility_trend_atr/#strategy-overview","title":"Strategy Overview","text":"

    The Average True Range (ATR) steps in as a robust technical indicator to fulfill this role. ATR delivers valuable insights into market volatility trends, equipping traders with the necessary tools to make calculated decisions in the stock market.

    "},{"location":"strategies/volatility_trend_atr/#strategy-parameters","title":"Strategy Parameters","text":"

    The following parameters can be configured for the strategy:

    Name Default Value Expected Value Description TIME_PERIOD None greater than 0 Period (number of candles) by which ATR is calculated ATR_PREV_CANDLES_NUM None greater than 0 nth Previous candle ATR"},{"location":"strategies/volatility_trend_atr/#decision-calculation","title":"Decision Calculation","text":"

    The get_trend_direction method calculates the ATR values for the volatility trend atr indicator using historical data of the instrument. It uses the talib.AROON function from the Talib library to calculate the values. It compares the ATR values with the atr of previous specified candle and determine the entry and exit actions. The method returns the ATR values for current candle.

    "},{"location":"strategies/vwap_crossover/","title":"VWAP Crossover","text":"

    This is a trading strategy called \"VWAP Crossover\" implemented in Python using the PyAlgoTrading library. The strategy is based on the crossover of the VWAP (Volume Weighted Average Price) indicator.

    Links

    • Strategy Code (.py)
    • Strategy Structure (common methods used in a regular and options strategy)

    Jupyter Notebook for Indian Exchange (NSE)

    • Click here to view a working notebook for NSE exchange in cloud. No installation required.
    • Click here to execute a working notebook for NSE exchange in cloud. No installation required.

    Jupyter Notebook for US Exchange (NASDAQ)

    • Click here to view a working notebook for NASDAQ exchange in cloud. No installation required.
    • Click here to execute a working notebook for NASDAQ exchange in cloud. No installation required.
    "},{"location":"strategies/vwap_crossover/#vwap-indicator","title":"VWAP indicator","text":"

    In the stock market, VWAP stands for Volume-Weighted Average Price. VWAP is a trading indicator that calculates the average price at which a particular stock or security has traded throughout the day, taking into account both the price and the volume of each trade.

    Here is a summary of VWAP in the stock market:

    • VWAP is calculated by multiplying the price of each trade by the corresponding volume and then summing up these values over a specific time period. The total value is divided by the cumulative volume to obtain the average price.
    • The volume-weighted aspect of VWAP gives more weight to trades with higher volume, reflecting the significance of larger trades in the overall average price calculation.
    • VWAP is typically calculated on an intraday basis, such as the trading day or a specific session, and resets at the start of each new period.
    • Traders and investors use VWAP as a benchmark to assess whether their own trades are executed at a better or worse price compared to the average market price. It helps evaluate the quality of their execution and determine if they are buying or selling at a favorable price.
    • VWAP is commonly used by institutional traders who execute large orders as it helps them minimize market impact and avoid unfavorable executions. By comparing their execution price to VWAP, they can assess their performance and adjust their trading strategies accordingly.
    • In addition to being used as a benchmark, VWAP is also employed as a trading strategy. Some traders use VWAP as a reference point for making buy or sell decisions. For example, if the current price is above VWAP, it may be considered bullish, while a price below VWAP could be seen as bearish.
    • VWAP is often displayed as a line on intraday price charts, allowing traders to visually compare the current price to the average price. It can provide insights into the market's overall sentiment and potential support or resistance levels.
    • It is important to note that VWAP is a lagging indicator since it is based on historical data. Therefore, it is often used in combination with other indicators and analysis techniques to validate trade signals and make informed trading decisions.
    • Overall, VWAP is a widely used indicator in the stock market that provides a volume-weighted average price, serving as a benchmark for evaluating trade execution quality and as a reference point for trading decisions. By considering both price and volume, VWAP offers insights into market dynamics and helps traders assess their performance relative to the average market price.
    Fig.1 - IBM candle chart (top) with VWAP line (Blue), Volume chart with SMA line"},{"location":"strategies/vwap_crossover/#strategy-overview","title":"Strategy Overview","text":"

    The strategy follows a simple rule based on the crossover of the VWAP indicator. When the price crosses above the VWAP, a buy signal is generated, and when the price crosses below the VWAP, a sell signal is generated. The strategy aims to capture potential trend reversals based on the VWAP.

    "},{"location":"strategies/vwap_crossover/#strategy-parameters","title":"Strategy Parameters","text":"

    No specific strategy parameters are mentioned in the code.

    "},{"location":"strategies/vwap_crossover/#crossover-calculation","title":"Crossover Calculation","text":"

    The get_crossover_value method calculates the VWAP from historical data and the crossover values for the VWAP of the instrument. The method returns the crossover values between close of hist data and vwap.

    "},{"location":"strategies/strategy_guides/common_options_strategy/","title":"Options Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"strategies/strategy_guides/common_options_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyOptionsEMACrossover(StrategyOptionsBaseV2)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every options strategy is a child class of the StrategyOptionsBaseV2 class.\n
    "},{"location":"strategies/strategy_guides/common_options_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'options_ema_crossover'\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next, we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.no_of_strikes_away_ce = self.strategy_parameters['NO_OF_STRIKES_AWAY_CE']\nself.no_of_strikes_away_p = self.strategy_parameters['NO_OF_STRIKES_AWAY_PE']\nself._strike_direction_ce = self.strategy_parameters['STRIKES_DIRECTION_CE']\nself._strike_direction_pe = self.strategy_parameters['STRIKES_DIRECTION_PE']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may change for different strategies.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters.

    try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg:

    self.main_order = None            # We save the entry order in this variable\nself.stoploss_order = None        # We save the corresponding stoploss exit order of the entry order in this variable\n
    We initialize the variables with a None value. !!! Note There could be more strategy variables required as per the strategy requirement.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"strategies/strategy_guides/common_options_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"strategies/strategy_guides/common_options_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
    self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags.

    eg:

    self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"strategies/strategy_guides/common_options_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag

    eg:

    self.order_tag_manager.remove_tags(tags=entry_key)\n

    Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in order tags.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s).

    eg:

    self.order_tag_manager.remove_order(main_order)\n
    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_internals","title":"get_internals","text":"
    Returns the values i.e. both the entry and exit orders stored inside the tags list.\n
    "},{"location":"strategies/strategy_guides/common_options_strategy/#5-child-instruments-calculation","title":"5. Child instruments calculation","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#get_ltp","title":"get_ltp","text":"

    Fetch the ltp of the base instrument (instrument set while executing strategy)

    ltp = self.broker.get_ltp(self.underlying_instrument)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#options_instruments_set_up_local","title":"options_instruments_set_up_local","text":"

    Get the ATM ITM and OTM lists of the child instrument based on the LTP

    self.options_instruments_set_up_local(self.underlying_instrument, tradingsymbol_suffix, ltp)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_child_instrument_details","title":"get_child_instrument_details","text":"

    Select a child instrument from the lists of ATM, ITM, and OTM based on the strike direction and no of strikes given for the child instrument

    child_instrument = self.get_child_instrument_details(self.underlying_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes)\n

    "},{"location":"strategies/strategy_guides/common_options_strategy/#6-entry-methods","title":"6. Entry Methods","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create a get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selectd_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#7-exit-methods","title":"7. Exit Methods","text":""},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#8-other-common-methods","title":"8. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"strategies/strategy_guides/common_options_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#options_instruments_set_up_local_1","title":"options_instruments_set_up_local","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch the ATM, ITM, and OTM lists of the child instruments based on the LTP of the base instrument.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#get_child_instrument_details_1","title":"get_child_instrument_details","text":"

    This method is called in the strategy_select_instruments_for_entry to fetch a single child instrument based on the no of strikes and strike direction.

    "},{"location":"strategies/strategy_guides/common_options_strategy/#9-cleanup","title":"9. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"strategies/strategy_guides/common_options_strategy/#10-check-out-our-docs-for-developed-options-strategies","title":"10. Check out our docs for developed Options strategies","text":"
    • Options Bear Call Ladder
    • Options Bear Put Ladder
    • Options Bull Call Ladder
    • Options Bull Put Ladder
    • Options Long Iron Butterfly
    • Options Straddle
    • Options Strangle

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/","title":"Regular Strategy Structure","text":"

    Links

    • Code Structure of Strategy (workflow of a strategy)
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#1-initial-steps","title":"1. Initial steps","text":""},{"location":"strategies/strategy_guides/common_regular_strategy/#naming-a-class","title":"Naming a Class","text":"eg: For the above strategy name the class name would be:
    StrategyFuturesEMACrossover(StrategyBase)\n

    Coding Conventions

    * Make a class with the same name as the file name\n* Make sure the first letter of each word is in uppercase and the initials should be in uppercase as well.\n* If the class name includes indicator names like EMA, SMA, and VWAP the name should be in uppercase in the class name but not in the file name.\n* Every strategy is a child class of the StrategyBase class.\n
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#naming-your-strategy","title":"Naming your Strategy","text":"

    This name will be displayed in your My Coded Strategies in Python Build Web, and it will also be the strategy_name when you are fetching all strategies in pyalgotrading. Inside your strategy class, you can write your first parameter as name.

    name = 'futures_ema_crossover'\n

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#2-init-method","title":"2. Init method","text":"

    This method gets called only once when the strategy is started.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy-info","title":"Strategy info","text":"

    In the init method add the line given below

    super().__init__(*args, **kwargs)\n

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#parameter-creation","title":"Parameter creation","text":"

    Next we assign the parameter values to the class variables of the same name as the parameters but in the lowercase format, as shown below:

    eg:

    self.fresh_order_candle = self.strategy_parameters['FRESH_ORDER_CANDLE']\nself.start_time_hours = self.strategy_parameters['START_TIME_HOURS']\nself.start_time_minutes = self.strategy_parameters['START_TIME_MINUTES']\nself.end_time_hours = self.strategy_parameters['END_TIME_HOURS']\nself.end_time_minutes = self.strategy_parameters['END_TIME_MINUTES']\nself.ema_period_one = self.strategy_parameters['EMA_PERIOD_ONE']\nself.ema_period_two = self.strategy_parameters['EMA_PERIOD_TWO']\nself.target_percentage = self.strategy_parameters['TARGET_PERCENTAGE']\nself.stoploss_percentage = self.strategy_parameters['STOPLOSS_PERCENTAGE']\nself.stoploss_range = self.strategy_parameters['STOPLOSS_RANGE']\nself.stoploss_order_count_allowed = self.strategy_parameters['STOPLOSS_ORDER_COUNT_ALLOWED']\n

    Note

    • The parameter names and the number of parameters may be different for different strategies.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#start-time-and-end-time-creation","title":"Start time and End time creation","text":"

    Adding Start and End time is useful when you want to define a timerange between which the strategy will be running each day. Add the below code to calculate the strategy start time and end time, from the strategy_parameters. try:

        self.candle_start_time = time(hour=self.start_time_hours, minute=self.start_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting start hours and minutes... EXITING')\n    raise SystemExit\n
    try:
        self.candle_end_time = time(hour=self.end_time_hours, minute=self.end_time_minutes)\nexcept ValueError:\n    self.logger.fatal('Error converting end time hours and minutes... EXITING')\n    raise SystemExit\n

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy-variables","title":"Strategy variables","text":"

    We create our own strategy variables other than the strategy parameter variables which will be used throughout the strategy.

    eg: self.order_tag_manager = None

    We initialize the variables with a None value.

    Note

    There could be more strategy variables required as per the strategy requirement.\n
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#3-initialize-method","title":"3. Initialize method","text":"

    Unlike the init method, this method gets called every day at the beginning of the day once the strategy is started.

    Here the strategy variables that were initialized as None are again defined as dictionaries/lists except for the self.order_tag_manager. Create a reference for OrderTagManager as shown below:

    self.order_tag_manager = OrderTagManager\n
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#4-ordertagmanager","title":"4. OrderTagManager","text":"

    The self.order_tag_manager is used to store/remove the entry/exit orders. The self.order_tag_manager has the following methods:

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#add_order","title":"add_order","text":"
    • Stores the order object for the given tags. eg:
      self.order_tag_manager.add_order(_order, tags=[base_inst_str, entry_key])\n
    • Here the _order is the order object stored inside the OrderTagManager for the tags base_inst_str and entry_key.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#get_orders","title":"get_orders","text":"
    • Retrieve the order(s) for the given tags. eg:
      self.order_tag_manager.get_orders(tags=[base_inst_str, BrokerExistingOrderPositionConstants.ENTER, entry_key], ignore_errors=True)\n
    • Here the order object retrieved from the OrderTagManager for the tags base_inst_str, BrokerExistingOrderPositionConstants.ENTER and entry_key
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#remove_tags","title":"remove_tags","text":"
    • Removes the tags stored in the OrderTagManager along with the orders related stored in that tag eg:
      self.order_tag_manager.remove_tags(tags=entry_key)\n
    • Here the entry_key tag is removed from the OrderTagManager.

    Note

    When the tag is removed the order objects stored in that tag are also removed but the same order objects would still be present in the order tags.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#remove_order","title":"remove_order","text":"
    • Remove the order(s) from the OrderTagManager for the given tag(s). eg:
    self.order_tag_manager.remove_order(main_order)\n

    Here the main_order order object is removed from the OrderTagManager.

    Note

    The order object will be removed from all the tags ta

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#get_internals","title":"get_internals","text":"
    • Returns the values i.e. both the entry and exit orders stored inside the tags list.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#5-entry-methods","title":"5. Entry Methods","text":""},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry","text":"
    • In this method we process each instrument in the instruments bucket, if there is some entry condition to be checked then we create an get_entry_decision method that calculates the entry condition like a crossover or compares the latest value of the OHLC data or indicator data.

    • When the order has to be placed we add the instrument to selected_instruments_bucket and additional data related to the instrument that will be required while placing to the sideband_info. This information is passed to the strategy_enter_position method

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_enter_position","title":"strategy_enter_position","text":"
    • Here is where we actually place the entry order for which we calculate the quantity for the order to be placed. If the order is placed successfully we save the order in a class variable such that we can access the order object via the variable in the exit methods.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#6-exit-methods","title":"6. Exit Methods","text":""},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit:","text":"
    • This method is called before the entry methods because in the case of delivery strategy we want to resume and exit previous day orders before we can place new entry orders.
    • Here we place stoploss exit orders, target exit orders, and check for exit conditions for the open entry orders.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#strategy_exit_position","title":"strategy_exit_position","text":"
    • Here is where we actually place the exit order for where we exit the order which was placed during entry. If the order is placed successfully we clear the order in a class variable such that we can add new orders to the vacant place in variable in the entry methods.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#7-other-common-methods","title":"7. Other common methods","text":"

    There are other methods that are used in the strategy:

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#check_and_place_stoploss_order","title":"check_and_place_stoploss_order","text":"

    This method is called in the strategy_select_instruments_for_exit when our entry order is open, and we want to place a stoploss exit order for the same.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#set_all_none","title":"set_all_none","text":"

    This method is called in the strategy_exit_position when our entry order has exited, and we want to remove the order object from the self.main_order variable.

    "},{"location":"strategies/strategy_guides/common_regular_strategy/#8-cleanup","title":"8. Cleanup","text":"
    1. Add comments and docstrings wherever possible to improve code readability.
    2. Once the strategy is completed you can optimize imports, give proper indentation and proper formatting to the strategy code and remove unwanted imports, variables, and methods before delivering the code.
    "},{"location":"strategies/strategy_guides/common_regular_strategy/#10-check-out-our-docs-for-developed-regular-strategies","title":"10. Check out our docs for developed Regular strategies","text":"
    • Aroon Crossover
    • Bollinger Bands
    • EMA Crossover
    • Inverse EMA Scalping
    • Reverse RSI
    • Stochastic Crossover
    • VWAP Crossover

    Tip

    To know more about a strategy from our given template, simply check the first line of comment in the code of that specific strategy.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/","title":"Common Strategy Building Guide","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#understanding-the-strategy-structure","title":"Understanding the Strategy Structure","text":"

    The strategy code is basically a Python Class, with its Base Class as StrategyBase (for regular strategies) or StrategyBaseOptionsV2 (for options strategies). In this documentation we will focus on a regular strategy called \u2018EMA Regular Order\u2019 - a strategy which gives BUY and SELL signals based on two EMA indicators and takes new-entry & previous-exit at every crossover. We also will be discussing about an options strategy called \"Options Bear Call Ladder Strategy\" - strategy which uses 3 legs to optimize the risk and returns of the options. Inside the strategy class there are many methods that could be divided into 2 different sections: Mandatory Methods: Initialization Methods, 4-Core Loop Methods & Optional Methods: Algorithmic Calculation Methods & Miscellaneous Methods. These sections are explained briefly below.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#mandatory-functions","title":"Mandatory Functions:","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#initialization-methods","title":"Initialization Methods","text":"

    In this section, you will have the Strategy Class\u2019 \u201cinit\u201d method (a.k.a. Constructor). This method will extract the Strategy\u2019s Configured Parameters and save them in the different variables. There is another method in this section called \u201cinitialization\u201d, which will be called at the start of every trading day that will occur inside the timeline for which you are executing the strategy.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#4-core-loop-methods","title":"4 Core Loop Methods","text":"

    These are the main methods that will be called by the AlgoBulls Core in a sequence for every candle (candle is the minimum time range for which the Open, High, Low and Close values of that instrument are available. Basically it is a representation of a time period and the data corresponds to the trades executed during that period). All the logic design methods are called inside these Core Methods, along with the helping methods.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#optional-function","title":"Optional Function","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#algorithmic-calculations-methods","title":"Algorithmic Calculations Methods","text":"

    This section contains the methods that are defined by the user. These are not mandatory but good to keep your code organized and simple. Their main purpose will be to perform operations on historical data or LTP data of the selected instrument. Based on the results of these operations, it needs to decide whether it should Buy, Sell or take no action on the instrument. Apart from decision making, some of the other methods can also be useful to calculate the stop loss or target price for a trade. Point being, the purpose of these methods are totally dependent on the application of the user.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#miscellaneous-methods","title":"Miscellaneous Methods","text":"

    These are handy methods that are created by a team of expert strategy developers and they are already a part of the base class. These methods do a lot of heavy lifting under the hood and can be used here for various purposes like getting the latest price of a stock, placing an order etc. These methods are not always necessary to be used and are generally a part of other methods mentioned above.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#working-flow-of-the-strategy","title":"Working Flow of the Strategy","text":"

    Below Diagram is Sample Diagram on how the strategy execution engine works. Blocks in green are the mandatory methods that need to be implemented for every strategy.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#setting-up-imports-and-environment","title":"Setting Up: Imports and Environment","text":"

    Before we dive into building of a strategy we need to fist setup our workspace depending the tool we are using. The available tools for creating a workspace of strategy are Pyalgotrading and Python Build Web.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#pyalgotrading","title":"Pyalgotrading","text":"

    If you're coding on your local machine, I recommend setting up a virtual environment and installing the \"pyalgotrading\" Python package to keep things organised.

    pip3 install pyalgotrading\n
    Once you've got it installed, it's time to bring in the magic. Import the package and its constants into your Python file where your trading strategy will take shape.

    from pyalgotrading.algobulls import AlgoBullsConnection\nfrom pyalgotrading.strategy import *\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#python-build-web","title":"Python Build Web","text":"

    Now, if you prefer a web-based approach, we've got you covered. Head over to the \"Code New Strategy\" section on the Python Build page of the AlgoBulls website. Here, you can craft your strategy without the need to import any classes or packages. The choice is yours \u2013 flexibility at its best.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy-code-creation-lets-get-started","title":"Strategy Code Creation: Let's Get Started","text":"

    With the groundwork laid, it's time to create your strategy class. Be sure to choose the appropriate base class for your strategy. For regular equity strategies, the base class is StrategyBase while for options strategies, it's StrategyOptionsBaseV2.

    Examples:

    RegularOptions
    class MovingAverageCrossoverV2(StrategyBase):\n    name = 'Moving Average Crossover V2'\n
    class StrategyOptionsBearCallLadder(StrategyOptionsBaseV2):\n    name = 'Options Bear Call Ladder Template'\n

    Feel free to get creative with your class name, but it's good practice to make it unique among your strategy class names. Below this declaration, we set the strategy's name.

    For Pyalgotrading users

    If you are uploading the strategy via pyalgotrading functions, then this name parameter's value will be the name of the strategy. That means this name will be displayed in My Coded Strategies section in Python Build.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#initialization-functions","title":"Initialization Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#init","title":"init()","text":"

    Every great trading strategy starts with a solid foundation \u2013 the constructor method, also known as the \"init\" method. Here's what it looks like:

    def __init__(self, *args, **kwargs):\n    super().__init__(*args, **kwargs)\n
    Within this method, you extract the parameters provided by the user. These user-defined parameters are stored in a dictionary called \"self.strategy_parameters.\" Here's how you can access these values:

    self.timeperiod1 = self.strategy_parameters['TIMEPERIOD1']\nself.timeperiod2 = self.strategy_parameters['TIMEPERIOD2']\n
    Feel free to initialise other variables here, such as self.main_order, self.number_of_allowed_expiry_dates, self.transaction_type_map and more.

    Example: This is how the declaration of class along with its constructor would look like.

    RegularOptions
    class StrategyEMARegularOrder(StrategyBase):\n    name = 'EMA Regular Order Strategy'\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        self.timeperiod1 = self.strategy_parameters['TIMEPERIOD1']\n        self.timeperiod2 = self.strategy_parameters['TIMEPERIOD2']\n\n        self.main_order_map = None\n
    class StrategyOptionsBearCallLadder(StrategyOptionsBaseV2):\n    name = 'Options Bear Call Ladder Template'\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # Parameters (currently set with default values, can be overridden from the Parameters Configuration Pane)\n        self._leg_one_transaction_type = self.strategy_parameters.get('LEG_ONE_TRANSACTION_TYPE', 1)  # BUY: 1 | SELL: 2\n        self._leg_one_tradingsymbol_suffix = self.strategy_parameters.get('LEG_ONE_TRADING_SYMBOL_SUFFIX', 1)  # CE: 1 | PE: 2\n        self._leg_one_strike_direction = self.strategy_parameters.get('LEG_ONE_STRIKE_DIRECTION', 1)  # ITM: 0| ATM: 1| OTM: 2\n        self._leg_one_number_of_strikes = self.strategy_parameters.get('LEG_ONE_NUMBER_OF_STRIKES', 0)\n\n        self._leg_two_transaction_type = self.strategy_parameters.get('LEG_TWO_TRANSACTION_TYPE', 1)  # BUY: 1 | SELL: 2\n        self._leg_two_tradingsymbol_suffix = self.strategy_parameters.get('LEG_TWO_TRADING_SYMBOL_SUFFIX', 1)  # CE: 1 | PE: 2\n        self._leg_two_strike_direction = self.strategy_parameters.get('LEG_TWO_STRIKE_DIRECTION', 2)  # ITM: 0| ATM: 1| OTM: 2\n        self._leg_two_number_of_strikes = self.strategy_parameters.get('LEG_TWO_NUMBER_OF_STRIKES', 2)\n\n        self._leg_three_transaction_type = self.strategy_parameters.get('LEG_THREE_TRANSACTION_TYPE', 2)  # BUY: 1 | SELL: 2\n        self._leg_three_tradingsymbol_suffix = self.strategy_parameters.get('LEG_THREE_TRADING_SYMBOL_SUFFIX', 1)  # CE: 1 | PE: 2\n        self._leg_three_strike_direction = self.strategy_parameters.get('LEG_THREE_STRIKE_DIRECTION', 0)  # ITM: 0| ATM: 1| OTM: 2\n        self._leg_three_number_of_strikes = self.strategy_parameters.get('LEG_THREE_NUMBER_OF_STRIKES', 2)\n\n        # Maps\n        self.transaction_type_map = {1: \"BUY\", 2: \"SELL\"}\n        self.tradingsymbol_suffix_map = {1: \"CE\", 2: \"PE\"}\n        self.strike_direction_map = {0: OptionsStrikeDirection.ITM, 1: OptionsStrikeDirection.ATM, 2: OptionsStrikeDirection.OTM}\n\n        # Variables\n        self.number_of_allowed_expiry_dates = 1\n        self.instruments_done_for_the_day = None\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#initialize","title":"initialize()","text":"

    The \"initialize\" method is your strategy's workspace, where you get everything ready for a fresh trading day. It's called at the start of each trading day, allowing you to reset variables, set up your tools, and perform any other tasks to ensure your strategy is primed and ready.

    Example:

    Examples:

    RegularOptions
    def initialize(self):\n    self.main_order_map = {}\n
    def initialize(self):\n    super().initialize()\n    self.instruments_done_for_the_day = []\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#algorithmic-calculation-functions","title":"Algorithmic Calculation Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#get_decision","title":"get_decision()","text":"

    Now, let's dive into the heart of your strategy \u2013 the \"get_decision\" method. This method is where the magic happens, where you decide when to enter or exit a trade, set stop losses, and target prices. Here's how it works: Historical data of the instrument up to a certain point in your strategy is collected using:

    • Historical data is a time series data of open, high, low and close values of an instrument. These values are fetched at an interval same as that of the candle interval. The method given below fetches multiple historical data values till the current candle on which the strategy is executing. Historical data of the instrument up to a certain point in your strategy is collected using:
      hist_data = self.get_historical_data(instrument)\n
      Here the variable hist_data is a pandas.Dataframe object. A Pandas DataFrame is a 2 dimensional data structure, like a 2 dimensional array, or a table with rows and columns. The hist_data Dataframe will have 4 columns named as : \u201copen\u201d, \u201chigh\u201d, \u201cclose\u201c and \u201clow\u201d. For every row there will be a unique timestamp and the difference between each timestamp is of candle interval.
    • To access all the values of one particular column from the hist_data, you can use the following syntax code. Remember the data type of the column fetched here is pandas.Series
      hist_data[\u2018<column_name>\u2019]\n
      Example:
      close = hist_data[\u2018close\u2019]\n
    • To access the O-H-L-C values of the current latest candle you can use the following code. This also tells us that the index -1 is for latest, -2 will be for second latest and so on. This also implies that index 0 will get the oldest data, index 1 will give second oldest data and so on.
      latest_ohlc = hist_data.iloc[-1]\n
    • Next, you analyse this historical data to determine trading signals and calculate indicator values. You can rely on functions from \"talib\" for this, as shown below:

      ema_x = talib.EMA(hist_data['close'], timeperiod=self.timeperiod1)\nema_y = talib.EMA(hist_data['close'], timeperiod=self.timeperiod2)\n
      As you can see, we have passed the \u201cclose\u201d column and a strategy parameter value called \u201cself.timeperiod1\u201d and \u201cself.timeperiod2\u201d to the talib function. Each of the talib functions require unique input values, some require pandas.Series, some require constants like integers and floats and some require both. To understand the working of each talib function, refer here.

    • In many strategies, the condition to buy or sell can be triggered based on the crossover direction of 2 signals/indicators. A crossover refers to an instance where an indicator and a price, or multiple indicators, overlap and cross one another. Crossovers are used in technical analysis to confirm patterns and trends such as reversals and breakouts, generating buy or sell signals accordingly. Below we have given an example of how to calculate the crossover of the 2 indicator values we had calculated above.

      crossover_value = self.utils.crossover(ema_x, ema_y)\n
      Here if crossover_value is 0 then the indicators ema_x and ema_y have not crossed. If it is 1 then indicator ema_x has crossed ema_y in upward direction. Similarly if it is -1 then indicator ema_x has crossed ema_y in downward direction

    By combining these calculated values with historical data, you can make informed decisions about when to initiate or close a trade. Additionally, you can use this information to compute potential target prices or set stop losses. AlgoBulls' Python Build empowers you to navigate the complexities of options trading with ease.

    Example:

    This is how an ideal get_decision() function would look like. This example is from RSI Crossover Strategy.

    def get_crossover_value(self, instrument):\n    hist_data = self.get_historical_data(instrument)\n\n    rsi_value = talib.RSI(hist_data['close'],    timeperiod=self.time_period)\n\n    oversold_list = [self.oversold_value] * rsi_value.size\n    overbought_list = [self.overbought_value] * rsi_value.size\n\n    oversold_crossover_value = self.utils.crossover(rsi_value, oversold_list)\n    overbought_crossover_value = self.utils.crossover(rsi_value, overbought_list)\n\n    return oversold_crossover_value, overbought_crossover_value\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#miscellaneous-functions","title":"Miscellaneous Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#get_child_instrument_details","title":"get_child_instrument_details()","text":"

    The get_child_instrument_details function is at your disposal. It takes several parameters:

    • base_instrument: The foundation of your options strategy, often represented by an index.
    • tradingsymbol_suffix: Specifies whether the option should be a call option (CE) or a put option (PE), determining the trading symbol's suffix.
    • strike_direction: Defines the direction relative to the current strike price, with options like \"In The Money\" (ITM), \"Out of The Money\" (OTM), and \"At the Money\" (ATM).
    • no_of_strikes: Specifies how many strikes away from the current strike price the function should consider, setting the distance in strike prices within the chosen strike direction.

    This function calls two other functions: self.get_allowed_expiry_dates() and get_options_instrument_with_strike_direction().

    Example: This is how the function looks ideally. This example was taken from \u201cOptions Bear Call Strategy\u201d from ready templates.

        def get_child_instrument_details(self, base_instrument, tradingsymbol_suffix, strike_direction, no_of_strikes):\n        expiry_date = self.get_allowed_expiry_dates()[0]\n        child_instrument = self.get_options_instrument_with_strike_direction(base_instrument, expiry_date, tradingsymbol_suffix, strike_direction, no_of_strikes)\n        return child_instrument\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#get_allowed_expiry_dates","title":"get_allowed_expiry_dates()","text":"

    In options strategies, the get_allowed_expiry_dates function plays a vital role. It doesn't require parameters; instead, it relies on the number_of_allowed_expiry_dates variable defined in the constructor method.

    • If number_of_allowed_expiry_dates is set to 1, the function returns the monthly expiry date.
    • If number_of_allowed_expiry_dates is set to 0, the function returns a weekly expiry date.

    In essence, this function helps you select the appropriate expiry date based on the value you assign to number_of_allowed_expiry_dates variable.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#get_options_instrument_with_strike_direction","title":"get_options_instrument_with_strike_direction()","text":"

    This function is a key player in options strategies, taking parameters such as:

    • base_instrument: The foundation of your options strategy.
    • expiry_date: The expiry date of the child instrument, calculated using the \"get_allowed_expiry_dates\" function.
    • tradingsymbol_suffix: Specifies whether the option should be a call option (CE) or a put option (PE), helping identify the appropriate options.
    • strike_direction: Determines the direction in relation to the current strike price, offering options like \"In The Money\" (ITM), \"Out of The Money\" (OTM), and \"At the Money\" (ATM).
    • no_of_strikes: Specifies how many strikes away from the current strike price the function should consider, defining the distance in strike prices within the chosen strike direction.
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#options_instruments_set_up_local","title":"options_instruments_set_up_local()","text":"

    Now, let's talk about a crucial piece of the options strategy puzzle \u2013 options_instruments_set_up_local. This function creates local instances of all available child instruments based on specified parameters:

    • base_instrument: The foundation of your options strategy, typically an index.
    • tradingsymbol_suffix: Specifies whether the child instrument should be a call option (CE) or a put option (PE), aiding in the identification of the appropriate options.
    • current_close (strike_price): The current price of the base instrument, also known as the strike price.
    • direction: Determines the direction in relation to the current strike price, helping select the child instrument (i.e., ATM, ITM, or OTM).

    Once executed, this function sets up and stores local instances of child instruments matching your criteria. These instances become valuable assets for further analysis or operations, including utilising the \"get_child_instrument_details\" function.

    Example: This is how this function looks ideally. This example was taken from \u201cOptions Bear Call Ladder\u201d from ready templates.

    def options_instruments_set_up_local(self, base_instrument, tradingsymbol_suffix, current_close, direction=OptionsInstrumentDirection.EXACT):\n        expiry_dates = self.get_allowed_expiry_dates()\n        for expiry_date in expiry_dates:\n            self.options_instruments_set_up(base_instrument, direction, expiry_date, tradingsymbol_suffix, current_close)\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#options_instruments_set_up","title":"options_instruments_set_up()","text":"

    The final piece of the puzzle is \"options_instruments_set_up.\" This function takes parameters like:

    • base_instrument: The foundation of your options strategy.
    • direction: Determines the direction in relation to the current strike price, helping select the child instrument (i.e., ATM, ITM, or OTM).
    • expiry_date: The expiry date of the child instrument, calculated using the \"get_allowed_expiry_dates\" function.
    • tradingsymbol_suffix: Specifies whether the child instrument should be a call option (CE) or a put option (PE), aiding in the identification of the appropriate options.
    • current_close: The current price of the base instrument, also known as the strike price.

    Now, let's talk about the engine that drives your strategy \u2013 the core loop functions.

    These include \"strategy_select_instruments_for_entry\", \"strategy_enter_position\", \"strategy_select_instruments_for_exit\" and \"strategy_exit_position\" These functions are called within a loop from the AlgoBulls core until an Exit Event for the strategy occurs.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#the-4-core-loop-functions","title":"The 4 Core Loop Functions","text":""},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument_bucket: A list of all the instruments provided by the user when starting the strategy. Here, you iterate through the instruments, calling \"self.get_decision()\" to determine actions for each. For options strategies, you can also use \"self.options_instruments_set_up_local()\" to set up child instruments for each base instrument. The selected instruments and their meta-information are returned by the function.

    Example: This function would ideally look like this. This example was taken from \u201cOptions Straddle\u201d from Ready Templates.

    Examples:

    RegularOptions
    def strategy_select_instruments_for_entry(self, candle, instruments_bucket):\n    selected_instruments, meta = [], []\n\n    for instrument in instruments_bucket:\n        crossover = self.get_decision(instrument)\n        action_constants = {1: 'BUY', -1: 'SELL'}\n\n        if crossover in [-1, 1]:\n            selected_instruments.append(instrument)\n            meta.append({'action': action_constants[crossover]})\n\n    return selected_instruments, meta\n
    def strategy_select_instruments_for_entry(self, candle, instruments_bucket):\n    selected_instruments, meta = [], []\n\n    for instrument in instruments_bucket:\n        if instrument not in self.instruments_done_for_the_day:\n            self.instruments_done_for_the_day.append(instrument)\n            ltp = self.broker.get_ltp(instrument)\n\n            self.options_instruments_set_up_local(instrument, \"CE\", ltp)\n            self.options_instruments_set_up_local(instrument, \"PE\", ltp)\n\n            leg_wise_list = [('LEG_ONE', self._leg_one_tradingsymbol_suffix, self._leg_one_strike_direction, self._leg_one_number_of_strikes, self._leg_one_transaction_type),\n                             ('LEG_TWO', self._leg_two_tradingsymbol_suffix, self._leg_two_strike_direction, self._leg_two_number_of_strikes, self._leg_two_transaction_type),\n                             ('LEG_THREE', self._leg_three_tradingsymbol_suffix, self._leg_three_strike_direction, self._leg_three_number_of_strikes, self._leg_three_transaction_type)]\n\n            for leg_number, tradingingsymbol_suffix, strike_direction, number_of_strikes, transaction_type in leg_wise_list:\n                self.logger.info(f'Processing {leg_number}...')\n                child_instrument = self.get_child_instrument_details(instrument, self.tradingsymbol_suffix_map[tradingingsymbol_suffix], self.strike_direction_map[strike_direction], number_of_strikes)\n                selected_instruments.append(child_instrument)\n                meta.append({'base_instrument': instrument, 'action': self.transaction_type_map[transaction_type]})\n\n    return selected_instruments, meta\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument: One of the instruments from the selected instruments list returned by \"strategy_select_instruments_for_entry.\"
    • meta: Meta-information of that particular instrument, aligning with the instrument from the meta list.

    Here, you place orders for the selected instruments, updating them in \"self.main_order\" for easy access in exit functions.

    Example: This function would ideally look like this. This example was taken from \u201cOptions Straddle\u201d from Ready Templates.

    Examples:

    RegularOptions
    def strategy_enter_position(self, candle, instrument, meta):\n    self.main_order_map[instrument] = _ = self.broker.OrderRegular(instrument, meta['action'], quantity=self.number_of_lots * instrument.lot_size)\n    return _\n
    def strategy_enter_position(self, candle, instrument, sideband_info):\n    _ = self.broker.OrderRegular(instrument, sideband_info['action'], quantity=self.number_of_lots * instrument.lot_size)\n    return _\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#orderregular","title":"OrderRegular","text":"

    The self.broker.OrderRegular is used to place the entry/exit orders.

    "},{"location":"strategies/strategy_guides/common_strategy_guide/#parameters","title":"Parameters:","text":"
    • instrument: Instrument object on which to place the order.
    • action: Action to be taken, either 'BUY' or 'SELL'.
    • quantity: The quantity of the order, generally calculated as self.number_of_lots * instrument.lot_size.
    • order_variety: (Optional) Type of order. Default is MARKET order (BrokerOrderVarietyConstants.MARKET).
    • price: (Optional) The price at which the limit order will be placed.
    • trigger_price: (Optional) The trigger price for stop-loss orders.

    Click on each of the tabs to see the relevant code snippet.

    Market OrderLimit OrderStoploss Market OrderStoploss Limit Order
    self.broker.OrderRegular(\n    instrument,\n    action, \n    quantity \n    )\n
    self.broker.OrderRegular(\n    instrument, \n    action, \n    quantity, \n    order_variety=BrokerOrderVarietyConstants.LIMIT, \n    price=price \n    )\n
    self.broker.OrderRegular(\n    instrument, \n    action, \n    quantity, \n    order=order_variety=BrokerOrderVarietyConstants.STOPLOSS_MARKET, \n    trigger_price=trigger_price\n    )\n
    self.broker.OrderRegular(\n    instrument,  \n    action, \n    quantity,  \n    order_variety=BrokerOrderVarietyConstants.STOPLOSS_LIMIT, \n    price=price, \n    trigger_price=trigger_price\n)\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    Similar to entry, this function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument_bucket: A list of all instruments provided by the user when starting the strategy.

    The function iterates through the instrument bucket, checking if the instrument is present in \"self.main_order\" and whether its exit condition is satisfied. Instruments meeting exit conditions are added to the selected instruments list, along with their respective actions and meta-information.

    Example: This function should ideally look like this. This example was taken from \u201cEMA Crossover Strategy\u201d.

        def strategy_select_instruments_for_exit(self, candle, instruments_bucket):\n        selected_instruments, meta = [], []\n\n        for instrument in instruments_bucket:\n            if self.main_order_map.get(instrument) is not None:\n                crossover = self.get_decision(instrument)\n\n                if crossover in [1, -1]:\n                    selected_instruments.append(instrument)\n                    meta.append({'action': 'EXIT'})\n\n        return selected_instruments, meta\n
    "},{"location":"strategies/strategy_guides/common_strategy_guide/#strategy_exit_position","title":"strategy_exit_position()","text":"

    Finally, this function takes parameters:

    • candle: The current candle where the strategy is executing its algorithm.
    • instrument: One of the instruments from the selected instruments list returned by \"strategy_select_instruments_for_exit.\"
    • meta: Meta-information of that particular instrument, aligning with the instrument from the meta list.

    Here, you place orders for the selected instruments, removing them from \"self.main_order\" to prepare for the next iteration of the AlgoBulls core loop.

    Example: This function should ideally look like this. This example was taken from the \"EMA Crossover Strategy\". Here, we are telling the core to exit all positions:

    def strategy_exit_position(self, candle, instrument, meta):\n    if meta['action'] == 'EXIT':\n        self.main_order_map[instrument].exit_position()\n        self.main_order_map[instrument] = None\n        return True\n    return False\n
    If you want the strategy to place the exit order instead of letting the core handle it, then this is what the function should look like:
    def strategy_exit_position(self, candle, instrument, meta):\n    if meta['action'] == 'EXIT':\n        self.broker.OrderRegular(\n            instrument,\n            action,\n            quantity,\n            related_order=entry_order,\n            position=BrokerExistingOrderPositionConstants.EXIT\n            )\n        return True\n    return False\n

    Note

    • meta['action'] has to be opposite of the entry order's transaction type. For example: if the entry order is 'BUY', then meta['action'] should be 'SELL', and vice versa.
    • Pass the entry order object as the related_order parameter.
    • You can specify a lesser quantity if you want to partially exit your entry order. In case of partial exits, ensure that you return 'True' only if the quantity becomes zero after placing this order, else return 'False' for your intermediate/partial exits.
    "},{"location":"strategies/strategy_guides/fee/","title":"Frequently Encountered Errors","text":""},{"location":"strategies/strategy_guides/fee/#execution-time-exceeded-timeout_duration-duration-of-60-sec","title":"Execution time exceeded timeout_duration duration of 60 sec.","text":""},{"location":"strategies/strategy_guides/fee/#possible-causes","title":"Possible Causes","text":"
    • Historical Data Fetching Duration:

      Fetching historical data may take longer, especially if the duration is set to a large number of days.

    • Suboptimal Decision-Making Logic:

      The decision-making logic might be suboptimal, leading to increased processing time.

    • Sequential Execution Approach:

      A sequential approach of fetching historical data and then making the decisions in case of multiple instruments can contribute to delays.

    • Real-Time Calculations:

      If there are calculations that could be pre-conditioned or pre-calculated before the market opens, optimizing real-time calculations might help.

    "},{"location":"strategies/strategy_guides/fee/#solutions","title":"Solutions","text":"
    • Optimize Historical Data Fetching:

      Consider reducing the number of days for which historical data is fetched. A shorter duration, like 5 days, can be a reasonable compromise.

      @staticmethod\ndef get_historical_data_duration():\n    return 5\n
    • Optimize the Decision-Making logic:

      Revisit your strategy logic and check if any code block can be optimized.

    • Batch Processing for Decision-Making:

      In case of multiple instruments, lets say you are fetching the historical data for the instrument, and have implemented the decision-making logic for whether this instrument should get selected for order placement or not. Once this is done, you repeat the same process for the next instrument. Instead of a sequential approach, try fetching historical data for all instruments in one loop and then making decisions for all instruments in another loop.

    • Pre-Calculate Conditions:

      Identify conditions that can be pre-calculated before the market opens. Adjust the strategy start time to accommodate these pre-calculations. If certain conditions can be chcked before the market starts, set the trading start time of the strategy to a value before the market start time. Add specific checks inside the strategy to ensure that the actual order placement, etc. are executed after the market starts.

    "},{"location":"strategies/strategy_guides/fee/#no-data-in-charts","title":"No Data in Charts","text":""},{"location":"strategies/strategy_guides/fee/#description","title":"Description","text":"

    Encountering the \"NO data in charts\" error while running a strategy is a common issue. This problem arises when using a small quantity with very large funds. Limited visibility on charts due to large funds with a small quantity setting.

    "},{"location":"strategies/strategy_guides/fee/#possible-causes_1","title":"Possible Causes","text":"
    • Scale Discrepancy:

      The large fund amount may lead to extremely small values on the y-axis, which are not visible, causing charts to appear empty.

    • Default Quantity and Funds:

      Default quantity and funds settings, if not adjusted, may lead to similar issues with empty charts.

    "},{"location":"strategies/strategy_guides/fee/#solutions_1","title":"Solutions","text":"
    • Normalize Values:

      Normalize values by using larger quantities or scaling to ensure meaningful data display across various scenarios.

    • Adjust Default Settings:

      Consider adjusting default values to something more suitable for common scenarios. Charts displaying proper data with suitable funds and quantity settings

    "},{"location":"strategies/strategy_guides/fee/#openai-api-quota-depletion","title":"OpenAI API Quota Depletion","text":""},{"location":"strategies/strategy_guides/fee/#description_1","title":"Description","text":"

    The \"OpenAI API current quota exceeded\" error indicates that the current quota or available credits for the OpenAI API has been exhausted. This typically occurs when the allotted usage limit for the API key has been reached.

    "},{"location":"strategies/strategy_guides/fee/#possible-causes_2","title":"Possible Causes","text":"
    • Credit Depletion:

      The API key has utilized its entire quota or available credits.

    "},{"location":"strategies/strategy_guides/fee/#solutions_2","title":"Solutions","text":"
    • Purchase More Credits:

      To continue using the OpenAI API, consider purchasing additional credits or upgrading your plan to increase the quota. Click here to add more credits.

    • Alternative Key:

      If available, switch to a different API key that still has unused credits.

    "},{"location":"strategies/strategy_guides/how_to/","title":"How to","text":""},{"location":"strategies/strategy_guides/how_to/#fetch-last-traded-price-ltp-of-an-instrument","title":"Fetch Last Traded Price (LTP) of an Instrument","text":"

    To fetch the Last Traded Price (LTP) of any instrument, use the following method:

    self.broker.get_ltp(instrument)\n

    This method retrieves the last traded price of the specified instrument.

    "},{"location":"strategies/strategy_guides/how_to/#access-attributes-of-an-instrument-object","title":"Access Attributes of an Instrument Object","text":"

    An instrument object typically contains various attributes providing information about the instrument:

    • exchange: Exchange on which the instrument is listed.
    • expiry: Expiration date of the instrument (applicable for derivatives).
    • lot_size: Number of units in a single lot of the instrument.
    • strike_price: Strike price of the instrument (applicable for options).
    • segment: Trading segment of the instrument.
    • tradingsymbol: Unique trading symbol of the instrument.
    • tick_size: Minimum price movement (tick) of the instrument.

    To access these attributes, use the following notation:

    instrument.exchange\ninstrument.expiry\ninstrument.lot_size\ninstrument.strike_price\ninstrument.segment\ninstrument.tradingsymbol\ninstrument.tick_size\n
    "},{"location":"strategies/strategy_guides/how_to/#fetch-different-types-of-instruments","title":"Fetch Different Types of Instruments","text":"

    To fetch different types of instruments, use the get_instruments_filtered method:

    Method Signature:

    self.broker.get_instruments_filtered(segment, tradingsymbol_exact=None, tradingsymbol_prefix=None, tradingsymbol_suffix=None, expiry=None)\n
    Example:
    from datetime import date\ninstruments = self.broker.get_instruments_filtered(segment='NSE_FO', tradingsymbol_prefix='NIFTY', expiry=date(2024,01,04))\n

    This example fetches equity instruments with a trading symbol prefix of 'NIFTY' and an expiry date of 4th January, 2024.

    "},{"location":"strategies/strategy_guides/how_to/#access-attributes-of-an-order-object","title":"Access Attributes of an Order Object","text":"

    An order object typically contains various attributes providing information about the order:

    • entry_price: Entry price of the order.
    • id: AlgoBulls specific alphanumeric order ID.
    • instrument: Instrument for which the order is placed.
    • order_code: Code for the order type (INTRADAY/DELIVERY).
    • order_time: Time at which the order is placed.
    • order_transaction_type: Type of transaction (BUY/SELL).
    • order_type: Type of order (REGULAR/BRACKET/COVER).
    • order_variety: Variety of the order (MARKET, LIMIT, STOPLOSS_MARKET, STOPLOSS_LIMIT).
    • position: Position (ENTER/EXIT).
    • price: Price of the order.
    • quantity: Order quantity.
    • quantity_pending: Quantity that is currently pending.
    • trigger_price: Trigger price of the order.

    To access these attributes, use the following notation:

    order.entry_price\norder.id\norder.instrument\norder.order_code\norder.order_time\norder.order_transaction_type\norder.order_type\norder.order_variety\norder.position\norder.price\norder.quantity\norder.quantity_pending\norder.trigger_price\n

    "},{"location":"strategies/strategy_guides/structure/","title":"Code Structure of Strategy","text":"

    Coding Prerequisites

    • For pyalgotrading check here.
    • For Python Build Web check here.
    "},{"location":"strategies/strategy_guides/structure/#methods","title":"Methods","text":""},{"location":"strategies/strategy_guides/structure/#strategy_select_instruments_for_entry","title":"strategy_select_instruments_for_entry()","text":"

    This function helps you choose which trading instruments you want your strategy to work with. The system will use this function to go through each instrument one by one, at each candle's time. You get to write code that decides whether to place an order for a specific instrument or not.

    "},{"location":"strategies/strategy_guides/structure/#strategy_enter_position","title":"strategy_enter_position()","text":"

    This function is where you can place orders for the instruments you selected earlier. It's executed for each instrument you picked in the previous function.

    "},{"location":"strategies/strategy_guides/structure/#strategy_select_instruments_for_exit","title":"strategy_select_instruments_for_exit()","text":"

    After you've entered a position for an instrument, this function is called for each of those instruments at each candle interval. You can use it to decide whether an instrument should be exited from the position.

    "},{"location":"strategies/strategy_guides/structure/#strategy_exit_position","title":"strategy_exit_position()","text":"

    In this function, you can close or exit positions for the instruments you marked for exiting in the previous function. It's done instrument by instrument.

    "},{"location":"strategies/strategy_guides/structure/#supporting-methods","title":"Supporting Methods","text":"

    You have the following supporting methods:

    "},{"location":"strategies/strategy_guides/structure/#init","title":"init()","text":"

    This method is like a starter for your strategy. It checks if the values you give it make sense and sets up some useful information for your strategy to use.

    "},{"location":"strategies/strategy_guides/structure/#initialize","title":"initialize()","text":"

    This method is called when your strategy begins, both at the very start and at the beginning of each trading day. It's like setting up your strategy's workspace and giving your tools a starting position.

    "},{"location":"strategies/strategy_guides/structure/#name","title":"name()","text":"

    This method gives your strategy a special name. It's like giving your strategy a unique nickname.

    "},{"location":"strategies/strategy_guides/structure/#versions_supported","title":"versions_supported()","text":"

    This method lets you specify which version of the AlgoBulls Platform your strategy works well with. It's like saying, \"My strategy is ready for this specific version of the platform.\"

    "},{"location":"strategies/strategy_guides/structure/#utility-functions","title":"Utility Functions","text":"

    You have the following utility function to be used in this strategy :

    Links

    • Strategy Structure (regular)
    • Strategy Structure (options)
    "},{"location":"strategies/strategy_guides/structure/#get_crossover_value","title":"get_crossover_value()","text":"This handy function calculates something called the \"crossover value\" for you. It's like having a calculator that figures out this specific value for your strategy."},{"location":"strategies/strategy_guides/structure/#flowchart","title":"Flowchart","text":"

    Once you create your own strategy or use a ready strategy from the pyalgostrategypool package, this is how it works internally on the AlgoBulls Core Trading Engine.

    "},{"location":"support/support_pyalgo/","title":"Support pyalgo","text":"

    In this dedicated section, you'll find everything you need to receive the support you deserve for pyalgotrading. Whether it's troubleshooting an issue or seeking clarification, we've got you covered every step of the way. Requesting Support from pyalgotrading Module:

    If you're looking to raise a support request from pyalgotrading module, follow these simple steps: - Start by executing your strategy from the pyalgotrading module. - Next, navigate to the \"My Coded Strategies\" section in python build web.

    My Coded Strategies: This section displays all the strategies you've created or modified. It includes both new and updated strategies.

    From this section, select the strategy you're experiencing issues with.

    Need Support: If you require assistance with a specific strategy, you can raise a support request from here. Please ensure that your strategy is present in the My Coded Strategies section.

    After clicking on Need Support, you'll see a popup window. Here, select the strategy for which you need assistance and explain you issue in brief.

    Then, click the Submit button. Our support team will actively assist you with any issues you're facing.

    "},{"location":"support/support_pybuild/","title":"Python Build Support","text":"

    Welcome to the realm of unparalleled support at AlgoBulls, where your algorithmic trading journey takes centre stage. Whether you're navigating the Python Build Web or harnessing the power of pyalgotrading, our commitment to your success remains unwavering. The Python Build Support page is your gateway to a world where every query, every challenge is met with expertise and dedication. We understand that your experience matters, and so does every line of code you craft.

    "},{"location":"support/support_pybuild/#steps-to-get-the-support-you-need","title":"Steps to get the support you need.","text":""},{"location":"support/support_pybuild/#choose-your-strategy","title":"Choose your strategy","text":"
    • Log in to your AlgoBulls account and choose Python Build from the left-side menu.
    • From the Python Build Splash Screen, choose the My Coded Strategies section display card. This is the section that holds all your saved strategies, whether you have coded them from scratch or modified them from ready templates.
    • Click and open the strategy that you think requires our assistance.

    "},{"location":"support/support_pybuild/#need-support","title":"Need Support","text":"
    • In the chosen strategy, click on the Need Support button on the top right corner of the page.

    • From the pop-up window that appears, click on the Select Strategy dropdown and choose the name of your strategy.

    • Write your query in the Explain your query briefly dialog box. This will help our team to get the best solution for you.

    • Click the Submit button. Our team will reach out to you with the solution within 1-2 business days.

    "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 75afc035..9cd64edb 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,297 +2,297 @@ https://algobulls.github.io/pythonbuild/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/analytics/pyalgotrading_analytics/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/analytics/python-build-view-results/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/brokers/broker_alpaca_guide/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/brokers/connecting_alpaca/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/brokers/non_auth_alpaca/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/gen_ai/gen_ai_prompt_library/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/gen_ai/get_open_ai_keys/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/brokerage/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/introduction/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/prerequisites/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/programexample/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/pyalgotrading_analytics/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/python-build-view-results/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/select/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/slippage/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/testing/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/upload/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/strategy_guides/common_options_strategy/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/strategy_guides/common_regular_strategy/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/pyalgotrad/strategy_guides/structure/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/pyalgotrading_analytics/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-code-gen-ai/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-code-new/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-code-ready-templates/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-config-parameters/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-getstarted/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-introduction/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-professional/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/python-build-view-results/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/strategy_guides/common_options_strategy/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/strategy_guides/common_regular_strategy/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/python_build/strategy_guides/structure/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/aroon_crossover/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/bollinger_bands/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/ema_crossover/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/inverse_ema_scalping/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/macd_crossover/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/mean_reversion_bollinger_bands/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_bear_call_ladder/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_bear_put_ladder/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_bull_call_ladder/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_bull_put_ladder/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_long_iron_butterfly/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_straddle/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/options_strangle/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/reverse_rsi/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/rsi_macd_crossover/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/stochastic_crossover/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/volatility_trend_atr/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/vwap_crossover/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/strategy_guides/common_options_strategy/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/strategy_guides/common_regular_strategy/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/strategy_guides/common_strategy_guide/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/strategy_guides/fee/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/strategy_guides/how_to/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/strategies/strategy_guides/structure/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/support/support_pyalgo/ - 2024-03-14 + 2024-04-09 daily https://algobulls.github.io/pythonbuild/support/support_pybuild/ - 2024-03-14 + 2024-04-09 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 17874214f573bc631bf2cf967de323d425d6f276..415ede13fc93f9aa622eb5518eadcae58717a6b6 100644 GIT binary patch literal 737 zcmV<70v`PziwFq(+!SU4|8r?{Wo=<_E_iKh0Nt9wZrd;nhVOlfAa}=EvBNr~>1|K2 zodw!rY@xEKNpw=b{iwuUodI1B0|qcg5ZjER{GTn0Kke+EUIxE9V#z0jYEE1_ssEYU7t>;O?Hd}#Jr)@)w%6uC)abZ-fkY& z`@5AarGv}XdD(et_obIC-GJ|?8NJV&&T&6B8%K4VxTnyJ&f9udm)6TKL*{|({(gJ^ zx!TI>L7L35MYFbt(BUEB&%Fibr(L~>TvXM+W&Mjl2;e7nZI)f-2!Lq4YkwlAyCP<OfJR1sM0(}PhfS84S8qmri;Zb)^Qlb zf>A7aDVx`iZ-FUcH+o37!6f_Q9mb^MqAuI!Pb77T?22NM%388miIJ|vNNdLkcv8=h z5bRVjipc{d7WI9eaBy7}q1aX~^|4|YDKaxdVzinmwAF3zaY!+Az+7(Gg4fKUt&mu7 z+>rPBm`bDj`U{mJ|20c@q8btjQJW}dI$~0#y&><#Gh#9g1e;Z9#{rZcbr;HmJv4sA`vIZMoAZ-Zqxk}O&1nrv3XoysjR$L$osTPsII?O6X|Df76bR)f z!c*vsOJ}3OQsN!_q>`hAto5i?eCU*kzhnk9k{xvE&dw;#%9%-iB(rOk0vyQ$JMVZh zoG@4etPJ1;QSIQlk&^#oCVd6}$4u8@)kFu>t-q&}VN#8t=^oM;BPD)ao6BQ7jk^ES T|AEh|jJ*E^^wAh<9xVU>b)t1R literal 738 zcmV<80v-JyiwFo2`toH0|8r?{Wo=<_E_iKh0Nt9wa@sHuhVOX_hPyFIb7(t2ZheCG ztXW%&(L~m&(i+Ea-xW9wbSBNAGo4vDV0#hb|7=P7ug&J^rT2>?rtBzem-nmna)F^G z>q56({`mf_`n-JF-ED^CGx9;N&9b*qMuPAkOZVz&h>p57jS6`O9 zyM??;2j{)hYvZZim0q%R1HPkX@IJ3P$A_U=IjZBt2MW#LysbBNX?^)+$lR0NJ**!d ztM#Yq{!yCDv5RKy0YZoSggJ+Yy4#z5C9y}|6Xc9fkNS?O_e1sNEH#m!W#J3azwtN~tCjdRt0|f&EAJho%Pz1Yq zV`8E{vhl7-kS0ay*-$(qJmaKbp1!S;^U#3~RjGD?6WKv#DFs!+V?ybDa3w)!Wy+~b z(BljA(d!y5YE8ivgIZT`L6Ol*YSks#yBM{tkFvNF1EWgw5Iup_H8$j(v762ow^+x% z7YjzQ64@2SMJj8_VkJhp5+ki0BjBi> zAtBhQVic1HN-XO8JYny;DnhZXTtia7?&~j9iu~6s-HB>QBt&hZoau;3mG*|b7te^vG!Sf7r5$@vde&Vi5BAU$ zg4}|SDr)izfF4?_^xXFdW!;>gtQyS|;5DZ;C@DaOkvAT!RdzkDAmYHP8Kk-X3sE4H zUkFd3GcKKs21|*z_mfJF60+8#TJfP%CjOim&`5UBr8_&LI4fr+`H{@7RSIw<5A3|- z$#BA84X`qR5u)0`b0a1H$4vSP{*Rfi!>Wn)s9XPmM#H2ULDM~?Ax294x;5v=cp7#8 Ur~d<=HW_*M3m7i|B_1sR0KmIwK>z>%