YouTube2Text

GPT-5 tested: Is it good for algo trading strategies? (surprising results!) — Transcript

by Algo-trading with Saleh · 4,616 words · 643 segments · language en · Watch on YouTube

Full transcript

  1. 0:00Hey guys, so OpenAI just released GPT5.
  2. 0:04Now, I've been waiting for this model
  3. 0:05for more than a year. But as always,
  4. 0:07what we care about on this channel is
  5. 0:09the performance of these models for algo
  6. 0:11trading, specifically for writing
  7. 0:13strategies in Python, debugging, and
  8. 0:15whether or not these models have some
  9. 0:17actual trading knowledge to help us
  10. 0:19improve the result of our strategies.
  11. 0:21So, in this video, we're going to test
  12. 0:22this model. If that sounds good, let's
  13. 0:24get right into it. All right. So, it's
  14. 0:26been just a few minutes since they
  15. 0:28released the model and this blog post.
  16. 0:30And according to the benchmark they are
  17. 0:32releasing here, this model is beating
  18. 0:34even the O3 model which was supposed to
  19. 0:37be really good. And on the Ader Polyglot
  20. 0:40benchmark, you can see that it is
  21. 0:42scoring 88%. That is absolutely crazy.
  22. 0:45So, if I'm not mistaken, this is even
  23. 0:47beating Claude Opus. And the price of
  24. 0:49this model is significantly cheaper than
  25. 0:51Claude. So if it is as useful as the
  26. 0:53benchmarks are claiming here, then it's
  27. 0:56going to be awesome. So let's get to
  28. 0:58testing it. Now for this video, I'm
  29. 1:00going to use GSGPT, which is the
  30. 1:02cloud-based service specifically made
  31. 1:04for algo trading in Python. So it gives
  32. 1:06us access to these models such as GPT5
  33. 1:09or any other models, but it has some
  34. 1:11instructions for algo trading
  35. 1:12specifically. Signing up on this service
  36. 1:14is completely free. But if you don't
  37. 1:16want to use this service, let's say you
  38. 1:18have some privacy concerns, or maybe you
  39. 1:20want to use the premium models, but you
  40. 1:22don't want to pay us anything, that is
  41. 1:23perfectly fine for that. Come and check
  42. 1:26out this video on my channel where I
  43. 1:28show you how you can self-host this
  44. 1:30service all by yourself. So all the
  45. 1:32instructions are open source, so you can
  46. 1:34make this all by yourself, but I'm going
  47. 1:36to use this GPT, which is just more
  48. 1:38convenient for me. Now, we're going to
  49. 1:39ask 10 questions from the model. So
  50. 1:41let's begin. Now, by the way, make sure
  51. 1:43the open AI GP5 is selected. We also
  52. 1:45added support for GP5 mini, right? Write
  53. 1:48a golden cross strategy that uses the 50
  54. 1:50and 100 moving averages. Close the
  55. 1:52position when the entry rule is no
  56. 1:53longer valid. All right. So, it did
  57. 1:56write it, but the formatting is a bit
  58. 2:00off. So, this is the first time I'm
  59. 2:02seeing this. All right. So, let's go to
  60. 2:04Jess's dashboard and create a new
  61. 2:06strategy. And I'm going to name it test
  62. 2:08GPT5.
  63. 2:11and paste the whole thing here. Now, the
  64. 2:13formatting is a bit off. I don't know
  65. 2:15why this happened. So, I'm going to fix
  66. 2:18this manually.
  67. 2:21All right. So, I believe this should
  68. 2:23work. Okay. So, let's give it a read.
  69. 2:24So, it defined a moving average with the
  70. 2:26syntax. SMA for an SMA with the period
  71. 2:31of 50. By the way, this should also be
  72. 2:33like this. It defined another one with
  73. 2:36the period of 100. It passed the current
  74. 2:38candles which is correct syntax in
  75. 2:40Jesse. It defined a property for trend
  76. 2:42return one if the moving average 50 is
  77. 2:45above 100 otherwise minus one for a
  78. 2:47downtrend. So that's perfect. The shoot
  79. 2:49function which is the in rule of the
  80. 2:51strategy is simply if the current trend
  81. 2:53is one and then in the golang which is
  82. 2:55where we do the position sizing it's
  83. 2:57first determining the quantity using the
  84. 2:59size to quantity utility function of
  85. 3:01Jesse. It is passing the entire balance
  86. 3:02and then the enterprise which is the
  87. 3:04current price. So this is correct. Then
  88. 3:06to submit the actual buy order is saying
  89. 3:07self buy equals quantity and then the
  90. 3:09current price. So this is going to
  91. 3:11execute the market order. It is now
  92. 3:13shorting which we didn't ask and it's
  93. 3:15also listening to this part where we
  94. 3:17said you know stop the position or trade
  95. 3:19if that condition is no longer valid. So
  96. 3:21in the update position which is called
  97. 3:24when we already have a open position and
  98. 3:25a new candle has closed. It is checking
  99. 3:27if the current trend is minus one or a
  100. 3:30downtrend then liquid the current
  101. 3:31position. So this is perfect. So let's
  102. 3:33go and run it. So let's change this into
  103. 3:37test GPT5 and this time frame symbol and
  104. 3:42period is fine. Let's also enable fast
  105. 3:45mode.
  106. 3:49There we go. So this is perfect. All
  107. 3:51right. Next, convert this pin script
  108. 3:52strategy into Python. All right. So for
  109. 3:54this part, I'm going to need a strategy.
  110. 3:56So on trading view, I will look up super
  111. 3:58trend strategy.
  112. 4:00And to get the source code of it, I will
  113. 4:03click here.
  114. 4:05go back and paste the whole thing.
  115. 4:09All right. So, by the way guys, uh the
  116. 4:12GPT5 couldn't get this process done. I
  117. 4:15don't know why. Maybe it's because they
  118. 4:16had just released the model and the API
  119. 4:18is heavy. I don't know. But I had to
  120. 4:20change the model from GPT5 into GPT5
  121. 4:23mini in order to for it to just go
  122. 4:25through. So, I mean, if this is going to
  123. 4:28be a pass, GPT5 should definitely be a
  124. 4:30pass, right? Because this is a smaller
  125. 4:32model. Now let's see if it works at all
  126. 4:43and it does. Okay, so this is really
  127. 4:45cool. Okay, so this is a pass. Now let's
  128. 4:48change it back into GP5 again. All
  129. 4:51right, next. Develop a mean diversion
  130. 4:53strategy using the Ballinger bands and
  131. 4:55the RSI with the seven period. All
  132. 4:57right, there we go. So let's copy
  133. 5:00the whole thing.
  134. 5:05update the code and run the back test
  135. 5:08again.
  136. 5:10There we go. So, this is a perfect pass.
  137. 5:12Now, by the way, let's take a look at
  138. 5:13the code. So, it defined the Ballinger
  139. 5:16bands with the syntax tinger bands and
  140. 5:18then it passed the current candles with
  141. 5:19a period of 20. It knows this is the
  142. 5:22default and it's also telling us about
  143. 5:23it in the comment. So, this is pretty
  144. 5:25cool. Next, it define the RSI 7 simply
  145. 5:30TA. RSI it passed the current candles
  146. 5:33and the second parameter which is the
  147. 5:35period is seven the ATR TATR the perfect
  148. 5:39syntax of JC framework then it defined
  149. 5:42the inter rules is saying if the current
  150. 5:43price is below the lower band of the
  151. 5:45Ballinger bands and the RSI 7 is below
  152. 5:4930 you should go long the opposite for
  153. 5:52short positions and as for position
  154. 5:53sizing is saying the entry is the
  155. 5:55current price the stop is the entry
  156. 5:58minus 2.5 times of the current ATR as
  157. 6:01for the quantity it's using the risk to
  158. 6:02quantity utility function is passing the
  159. 6:04current available margin 2% to risk per
  160. 6:07each trade entry price stop and then the
  161. 6:10current fees of the current exchange and
  162. 6:12then it's submitting the buy order. So
  163. 6:14it's doing the opposite for short
  164. 6:16position. So this is perfect typical
  165. 6:18strategy. Then it's saying once the
  166. 6:19position is open if it's a long position
  167. 6:21submit the stop loss and take profit for
  168. 6:23the quantity use the current positions
  169. 6:25quantity and for the price use the entry
  170. 6:28price of the current position minus 2.5
  171. 6:30times the ATR and for take profit you
  172. 6:33want to use the middle band of the
  173. 6:35Ballinger band. So this is a perfect 101
  174. 6:39mean division strategy in Python. As for
  175. 6:41update position, if it's a long position
  176. 6:43and the current price is above middle
  177. 6:45band or the RSI is above 50, we want to
  178. 6:47liquidate the position. And the opposite
  179. 6:50if it's a short position, right? So,
  180. 6:53perfect. It also defined some values for
  181. 6:56the chart so we can debug the strategy
  182. 6:59easier. So, this seems perfect. Now, it
  183. 7:02was a pass. So, let's go and give it
  184. 7:05perfect 10. Next, write a strategy that
  185. 7:07uses Fibonacci retracement levels for
  186. 7:09entry and exit points. All right, so
  187. 7:11again, it failed and I'm guessing it's
  188. 7:14because the API is under a lot of load
  189. 7:17right now. So again, I'm trying with
  190. 7:19GPT5 mini because I believe this model
  191. 7:22is also really good. And you know, if
  192. 7:25this model gets it right, then we know
  193. 7:27GP5 will definitely get it right. Now,
  194. 7:30another interesting thing is that the
  195. 7:32model is super fast. like I haven't seen
  196. 7:35anything this fast.
  197. 7:40All right. So let's paste it. Now it
  198. 7:42defined the hyperparameter. So it is
  199. 7:44assuming that we want to do
  200. 7:45optimization. That's fine. It defined
  201. 7:47the highs as the current candles and
  202. 7:50then it is selecting a certain number of
  203. 7:52them. So it defined a look back and the
  204. 7:55default value for it is 100. That makes
  205. 7:57perfect sense. And then it is select the
  206. 7:59high values of the current candles. So
  207. 8:01this is the correct syntax. and index in
  208. 8:04Jesse for low it is four and then swing
  209. 8:07high is the max of these max values
  210. 8:10swing low is the low of these I mean the
  211. 8:13min of these low values the range is
  212. 8:16swing high minus swing low if swing high
  213. 8:19is bigger than swing low otherwise zero
  214. 8:22okay so I guess this makes sense now
  215. 8:24here's the important part it defined the
  216. 8:26fib levels as range equals self range h
  217. 8:29equals self swing high l equals swing
  218. 8:32low and then the magical numbers of
  219. 8:35Fibonacci. So this is also really
  220. 8:38interesting syntax how it is simply
  221. 8:40returning a dictionary and then it's
  222. 8:42saying high minus low multiplied by
  223. 8:44these numbers. So this is very beautiful
  224. 8:48and easy to read math. Then you define
  225. 8:50two moving averages with periods of fast
  226. 8:52and slow. So we can find these values
  227. 8:55here. So 50 and 200. Then define the ATR
  228. 9:00the trend. So it's using the moving
  229. 9:03averages for the trend and then it's
  230. 9:04getting the nearest fib and in the shoot
  231. 9:07we're saying if the current trend is not
  232. 9:10one return false. So okay I didn't have
  233. 9:13to do this. I don't usually do it like
  234. 9:15this. It could just simply put it here
  235. 9:17but anyways. So this is perfectly fine.
  236. 9:19And then it's saying if the current
  237. 9:21price is below the current level plus to
  238. 9:26which is the entry tolerance and this.
  239. 9:30Okay guys, so this is really beautiful.
  240. 9:33It's already prepared for optimization
  241. 9:35and it also makes sense. So I think this
  242. 9:37is the best that I've seen so far even
  243. 9:39though this is GPT mini. So yeah, this
  244. 9:44is really good. So let's run it.
  245. 9:48and it goes through and it's perfect. I
  246. 9:51mean, it's not even performing that bad
  247. 9:53like because you know with these
  248. 9:55strategies, the raw version of them
  249. 9:58because they take so many trades, they
  250. 10:00lose a lot of money in these type of
  251. 10:03test, but this one isn't losing that
  252. 10:05much and I consider this a good result.
  253. 10:07All right, that's a perfect 10. Next,
  254. 10:09update my code to display the values of
  255. 10:11important indicators of my strategy in
  256. 10:13back test for debugging purposes. All
  257. 10:14right. So, for this one, we're going to
  258. 10:16need a strategy to give it. And I'm
  259. 10:18selecting one from our website. I'm
  260. 10:20copying the code and
  261. 10:24pasting it here. And I will also remove
  262. 10:27this part because this is actually what
  263. 10:29we expect the model to give us. Now,
  264. 10:32let's give it another try with GPT5.
  265. 10:39And it didn't work again. So let's try
  266. 10:42with GPT5 mini again.
  267. 10:46All right. So let's copy it.
  268. 10:53Update the code and let's give it a
  269. 10:55read.
  270. 10:56So it defined the after method just like
  271. 11:00we asked it to do. It put it inside a
  272. 11:03try catch block which is good practice
  273. 11:06actually. It is using addline to candle
  274. 11:09charts method of Jesse. It's giving it
  275. 11:12the name of the TMA indicator once for
  276. 11:15TMA 10 and then TMA 80. So this is
  277. 11:17great. It defined
  278. 11:19two more times for TMA in the forest
  279. 11:22time frame. Then it is defining extra
  280. 11:26line charts for ADX and CMO and it's
  281. 11:30putting both of them inside the same
  282. 11:32chart. So this actually makes perfect
  283. 11:34sense because both of them have values
  284. 11:36from 0 to 100 and then it defined the
  285. 11:39threshold lines of these indicators. So
  286. 11:42this is very beautiful guys. It's also
  287. 11:44doing some logging here. Now I didn't
  288. 11:47ask it to do that but maybe because we
  289. 11:49mentioned debugging it also added this.
  290. 11:51So this is pretty beautiful. So let's
  291. 11:53give it tries to see if it runs well.
  292. 11:56Now I should have enabled the generate
  293. 11:59interactive chart. So let's give it one
  294. 12:01more go
  295. 12:04now. There we go. So we can see the temo
  296. 12:07lines.
  297. 12:09They are beautiful and they make sense.
  298. 12:12And here we can see the values for ADX
  299. 12:17and also the CMO. Now this green isn't
  300. 12:22really visible on the dark mode. Now we
  301. 12:24could also specifically ask for a
  302. 12:26certain color when we define it with
  303. 12:28that function. Otherwise, Jesse will
  304. 12:30just randomly assign a color to it. So,
  305. 12:33don't worry about this much. But this
  306. 12:35seems perfect. By the way, in my
  307. 12:36previous test, I've seen many models not
  308. 12:39being able to do a great job with this
  309. 12:41question. So, the fact that GPT5 mini
  310. 12:44model is doing a perfect job is really
  311. 12:47awesome. All right. Next, write a trend
  312. 12:49following strategy that uses 15 minutes
  313. 12:51time frame for entry and 4 hours time
  314. 12:53frame for confirmation. I believe GPT5
  315. 12:57mini should also nail this one. So, I
  316. 12:59don't think we even need the bigger
  317. 13:00model. So, in fact, this model seems to
  318. 13:03be so good that I'm going to set this as
  319. 13:06a default model for new users because
  320. 13:08not only is cheap, it's also pretty
  321. 13:10great and really fast.
  322. 13:13All right, so let's copy the whole
  323. 13:15thing,
  324. 13:21update our code. And by the way, I've
  325. 13:23seen this before. Sometimes it adds an
  326. 13:26extra py here which breaks the
  327. 13:29execution. So let's remove that one. All
  328. 13:31right. So it defined the big candles as
  329. 13:33a separate property using the get
  330. 13:36candles method of Jesse passing the
  331. 13:38current exchange symbol and 4 hours time
  332. 13:40frame which is what we ask for. It
  333. 13:42defined it like this so that later it
  334. 13:44can use it twice. So that makes perfect
  335. 13:46sense. It already prepared the strategy
  336. 13:48for optimization as well. And then it
  337. 13:50defined an ADX filter saying that the
  338. 13:54current ADX must be above the threshold.
  339. 13:57Now let's see what's the value for it.
  340. 14:00So by default it is 25. Okay. And next
  341. 14:04it defined the in rule of the strategy
  342. 14:07as the big EMA short must be above big
  343. 14:10EMA long. So we're waiting for a
  344. 14:13crossover basically. And then the EMA
  345. 14:15short must also be above EMA long and
  346. 14:18ADX must be okay. So this okay word that
  347. 14:21added at the end of it kind of clarifies
  348. 14:24that this is a filter and I actually
  349. 14:25like that. So everything else seems
  350. 14:28fine. Let's go and give it a test. And
  351. 14:32it runs perfectly. So again this is a
  352. 14:34perfect 10. Now no model so far had
  353. 14:38gotten a perfect 10 score on the first
  354. 14:40six questions. So, so far this is
  355. 14:43beating everything. All right. Next,
  356. 14:44here's the quote for my trend following
  357. 14:46strategy in the 15 minutes time frame.
  358. 14:47The strategy is losing money because it
  359. 14:49is taking too many trades and there are
  360. 14:52too many false breakouts during the
  361. 14:53ranging markets. Please improve the
  362. 14:55strategy. So, we're talking about this
  363. 14:56same strategy that he just wrote for us.
  364. 14:58You see, it's losing money. Now, by the
  365. 15:00way, I didn't execute it on the 15
  366. 15:02minutes. So, let's do this. Let's also
  367. 15:06disable the charts so that it would go a
  368. 15:08little bit faster.
  369. 15:11All right. So, you see it's losing a lot
  370. 15:12of money. Why? Because it's taking too
  371. 15:14many trades. So, 561,
  372. 15:17which is too much because we're paying a
  373. 15:19lot of money in trading fees. So, if we
  374. 15:21add this fees into here, we will end up
  375. 15:24profitable, right? But we are going to
  376. 15:26have trading fees in actual trading. So,
  377. 15:28we need some filters to only take the
  378. 15:30good trades to prevent false breakouts.
  379. 15:33Right? So with this question, what I
  380. 15:35want to test is to see if the model has
  381. 15:37some actual trading knowledge to know
  382. 15:39about this to, you know, what to do in
  383. 15:41these type of situations. So let's go
  384. 15:43back and copy this code. And I'm going
  385. 15:46to paste it here.
  386. 15:50All right, there we go. So let's copy
  387. 15:51this. Go back, paste it again, and
  388. 15:54remove this extra py.
  389. 15:57And let's take a look.
  390. 15:59So this is a should our entry rule. So
  391. 16:02it defined a couple of filters. So one
  392. 16:05is recent trend gap. Okay. So let's see
  393. 16:08what this is. All right. So it's
  394. 16:10checking if the current index minus the
  395. 16:12last 30 index is bigger than a certain
  396. 16:15number. So it's basically checking to
  397. 16:16see some time has passed since our last
  398. 16:19trade. So this makes perfect sense
  399. 16:20because you know sometimes especially in
  400. 16:22trend following strategies we try to
  401. 16:24escal a certain trend and then and we do
  402. 16:27this a couple of times but sometimes you
  403. 16:29know maybe after two or three times that
  404. 16:32trend is about to finish right so it's a
  405. 16:34good idea to say that okay if you took
  406. 16:37already two trades very fast then don't
  407. 16:40take a trade for at least 10 more
  408. 16:42candles so I've seen this in practice so
  409. 16:45this is great it also define another
  410. 16:47filter called breakout confirmed med
  411. 16:49long. So it's checking to see if the ATR
  412. 16:52multiplied by a certain number plus the
  413. 16:54current donin's upper band is below the
  414. 16:58price. So so to put it simply we're
  415. 17:00using the donin channel and we want to
  416. 17:02make sure that the current price has
  417. 17:04broken above that. Next it did the
  418. 17:06opposite for short trades and then we
  419. 17:10also have one volatility
  420. 17:13filter. So let's see how is this one. So
  421. 17:16it defined the BBW which is Ballinger
  422. 17:18bands weight and it and it needs its
  423. 17:20value to be above a certain value. So
  424. 17:22this is also really good because when we
  425. 17:23are in a range market the value for the
  426. 17:26Ballinger bands width is tends to be
  427. 17:29low. So this is also a great one. And
  428. 17:32the next one is ADX which is simply if
  429. 17:35the ADX is bigger than its threshold.
  430. 17:37All right. So it defined two ADX for
  431. 17:40both the current trading time frame and
  432. 17:41the bigger time frame. So this is really
  433. 17:44great. All right. So, this is perfect.
  434. 17:45Even if it doesn't run, I'm going to
  435. 17:47give it a good score, but I believe it
  436. 17:50should. Okay, I think I forgot to save
  437. 17:52the code. All right, so let's save it
  438. 17:55this time. And go back and run it again.
  439. 18:01There we go. So, now it only took nine
  440. 18:03trades instead of that many. And it's
  441. 18:05not losing as much. The draw down is
  442. 18:08also pretty good. Okay, so it's not
  443. 18:10profitable, but it didn't take as many
  444. 18:12trades. And I really like the filters
  445. 18:13that you define. Okay, so this is
  446. 18:15another perfect 10. And guys, this is
  447. 18:17GPT5 mini, not the bigger model. All
  448. 18:19right, next. Define a strategy that
  449. 18:21combines the Williams percentage or MACD
  450. 18:24and Ballinger bands.
  451. 18:26Now, considering what it did with the
  452. 18:28previous questions, I think this is a
  453. 18:30very easy one for this model. And you
  454. 18:32see how it just appeared. So, it is
  455. 18:35really fast. So, apparently, it's a
  456. 18:37thinking model. So it does some
  457. 18:39reasoning and then it outputs the result
  458. 18:41almost instantly. So that's pretty
  459. 18:43helpful. Okay. So let's copy it.
  460. 18:50Okay. So let's paste it. It defined the
  461. 18:52Williams R with this syntax which is
  462. 18:55correct. The MAC is correct. Ballinger
  463. 18:57bands the ATR and for the entry rules
  464. 19:00it's getting the upper middle and lower
  465. 19:02band from the current Ballinger bands.
  466. 19:05So this is also correct. And then it's
  467. 19:06checking if the current closing price is
  468. 19:09below the lower band and the Williams R
  469. 19:11is is below a certain threshold and the
  470. 19:14MAC H is above zero. Okay, so this seems
  471. 19:18perfect. Let's go back and give it a
  472. 19:22try.
  473. 19:24And there we go. Okay, so this is again
  474. 19:27a perfect 10. Now it's still it is
  475. 19:29beating all the other models so far.
  476. 19:31Right. Next, write the entry functions
  477. 19:33of the strategy for me in a way that it
  478. 19:35should use two limit orders for opening
  479. 19:37the position and it should only risk 2%
  480. 19:39of capital per trade. So, I want to see
  481. 19:41whether or not it will just give me the
  482. 19:43functions, not the whole strategy
  483. 19:44because sometimes you need one specific
  484. 19:46function for your strategy. You want to
  485. 19:48copy and paste it and use it very
  486. 19:50quickly. So, a model which prints out
  487. 19:53extra stuff isn't really useful in these
  488. 19:55type of cases. And also I want to see if
  489. 19:57it is able to use the correct syntax for
  490. 20:00opening the position using multiple
  491. 20:02orders. So not just one market order
  492. 20:04like all the previous questions. All
  493. 20:05right. So it did give it to us but it's
  494. 20:08not pretty. The formatting is incorrect.
  495. 20:10So let's ask it to fix it.
  496. 20:19All right. So let's see if it will fix
  497. 20:21it. Okay. It didn't. So, this isn't
  498. 20:23great because it's going to be a bit
  499. 20:25hard for me. Now, I don't know why this
  500. 20:27is happening, but here's the thing. This
  501. 20:29might be just on our website. So, I'm
  502. 20:31not sure if I should subtract points
  503. 20:33from the model because of this. All
  504. 20:35right, but just in case, let's just copy
  505. 20:37this whole thing. Go to GPT and I will
  506. 20:40simply ask it to fix the formatting,
  507. 20:44please. And I didn't even write it
  508. 20:47correctly. And let's see what it will
  509. 20:49give me. Okay, so this is an easy task
  510. 20:51for JBT and you know hard for humans to
  511. 20:54manually fix something.
  512. 20:56Okay, so it's defining the current ATR.
  513. 21:01It defined one entry and two and it's
  514. 21:04using the ATR for setting the price and
  515. 21:07then it defined the stop price. Okay, so
  516. 21:09this is all good. It is using risk to
  517. 21:11quantity utility function of Jesse. So
  518. 21:13this is the correct syntax for risking
  519. 21:152% per each trade on with Jesse. So it's
  520. 21:19it's even defining the precision which
  521. 21:21usually the other models didn't. They
  522. 21:23just went with the default. Now the
  523. 21:24default value is fine but this is
  524. 21:27interesting. Then it defined the two
  525. 21:30quantities and it's also ensuring the
  526. 21:34quantities are bigger than zero. So this
  527. 21:37is also good practice but you know not
  528. 21:39necessarily at all. And at the end it is
  529. 21:41submitting both orders using this
  530. 21:43syntax. So instead of giving it just one
  531. 21:45tupil of values, it defined one list and
  532. 21:48inside it it defined two tupils. So
  533. 21:51first the quantity and then the price.
  534. 21:52So this is perfect and it did actually
  535. 21:54just give us the functions. So I'm going
  536. 21:56to give it a pass.
  537. 22:00All right. So last question. Write a
  538. 22:01press rating strategy for ETH and BT.
  539. 22:03Now because this is a tough one, I want
  540. 22:05to give GPT5 another try. Okay. So it
  541. 22:08fell again. Now again guys, by the time
  542. 22:11you're watching this video, this issue
  543. 22:13has probably been fixed. So don't worry
  544. 22:16about it much. But I'm going to try it
  545. 22:18with GPT5 Mini because so far it was
  546. 22:20able to solve all the questions and it
  547. 22:23got a perfect 10 for all of them. So
  548. 22:25maybe it will get this one right too.
  549. 22:27Now before I continue, I got to say this
  550. 22:29is a tough one because it's a pair
  551. 22:31threading strategy and the model is
  552. 22:33supposed to define two classes. The
  553. 22:35first class is the one that has all the
  554. 22:37trading logic in it. And the second one
  555. 22:40is simply follower class because it
  556. 22:42needs to execute the decisions that the
  557. 22:45master strategy class has made for it.
  558. 22:47And the code of it is also a bit
  559. 22:49complex. So if you're not familiar with
  560. 22:52pair trading, go ahead and watch this
  561. 22:54previous video of mine called praing
  562. 22:56strategy from scratch in Python where I
  563. 22:58go through the basic math and coding
  564. 23:00behind this strategy. But anyways, let's
  565. 23:03copy and see if this will work.
  566. 23:09Okay, so I'm going to define a new
  567. 23:11strategy and call it test GPT
  568. 23:15pair one
  569. 23:20and this is the follower. So we don't
  570. 23:23need this one. Now this seems perfect.
  571. 23:26It define hyperparameters. Okay, so this
  572. 23:28might be an issue
  573. 23:31because you see when we use multiple
  574. 23:33trading routes, we don't do optimization
  575. 23:35on it. So I don't know if this will
  576. 23:37work, but it's not really the model's
  577. 23:39fault, I guess. Let's make sure this is
  578. 23:41saved. And then define the second one.
  579. 23:44Test GPT pair 2. Paste the whole thing.
  580. 23:51And this time I only want this second
  581. 23:54class. So let's res it. And this also
  582. 23:59seems fine to me. Okay. So let's run it.
  583. 24:05The first one is BTC. The second one is
  584. 24:08ETH. And let's change this to be hourly.
  585. 24:14Test
  586. 24:17GPT pair one
  587. 24:20and test GPT pair two.
  588. 24:24All right. And we also need to disable
  589. 24:26the fast mode because we're trading
  590. 24:28multiple trading routes.
  591. 24:35There we go. So, yeah, it works. Now,
  592. 24:38it's losing a lot of money. It doesn't
  593. 24:39matter because it took so many trades.
  594. 24:41We're paying a lot in trading fees,
  595. 24:42which is also a typical issue with the
  596. 24:44pair trading strategy. And that wasn't
  597. 24:46really what I was looking for. So the
  598. 24:48fact that it wrote it fine and it works
  599. 24:52means it will get a perfect 10. And look
  600. 24:54at this. It got a perfect 100 score. And
  601. 24:58let's not forget for most questions I
  602. 25:00use GPT5 mini. Not even the GP5 itself
  603. 25:04which was supposed to be the model we
  604. 25:06were going to test in this video. Right?
  605. 25:08So even the smaller model is nailing all
  606. 25:11the questions. And guys to give you a
  607. 25:13comparison the Grog for model when I ran
  608. 25:16the same test it scored 85. Now the
  609. 25:20second question wasn't running. So even
  610. 25:22if we gave it the perfect 10 here still
  611. 25:25the ending result would have been 95.
  612. 25:27And the cloth for set which to this day
  613. 25:30was my go-to coding model wasn't able to
  614. 25:33answer all the questions. Now back then
  615. 25:36we weren't using a numberbased system
  616. 25:38but still three of the questions were
  617. 25:40fail. So again, the GPT5 mini model
  618. 25:44according to my tests is beating not
  619. 25:47only Grock 4, the big model, and it's
  620. 25:50also beating cloth for Sonnet. This is
  621. 25:53crazy because GPT5 mini is extremely
  622. 25:55cheap and not only that right now I'm
  623. 25:58wondering if this model is so good, how
  624. 26:00good is GPT5 itself. So yes, according
  625. 26:03to these tests, we didn't even get to
  626. 26:04need a bigger model, but one day we
  627. 26:07will, right? So, let's say you are
  628. 26:08really stuck and GPT5 mini isn't able to
  629. 26:11help you. In that day, GPT5 is going to
  630. 26:14be even better. So, just wow. Like, I
  631. 26:16don't know what to say. Great job,
  632. 26:18OpenAI. You guys really surprised us,
  633. 26:20and I'm glad the wait was worth it. So,
  634. 26:22anyways, if you guys want me to make
  635. 26:24more videos like this, please like the
  636. 26:25video, post a comment, let me know your
  637. 26:27opinion, and subscribe to the channel.
  638. 26:29It will help me out a lot. Thank you so
  639. 26:31much for watching. I'll see you in the
  640. 26:33next one.
  641. 26:43[Music]
  642. 26:44[Applause]
  643. 26:47[Music]

About this transcript

This page contains the full transcript of GPT-5 tested: Is it good for algo trading strategies? (surprising results!) by Algo-trading with Saleh, generated from the public captions YouTube serves with the video. The transcript has 4,616 words across 643 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.