File size: 51,119 Bytes
5fdb69e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
# tickers is a list of stock tickers
import tickers

# prices is a dict; the key is a ticker and the value is a list of historic prices, today first
import prices

# Trade represents a decision to buy or sell a quantity of a ticker
import Trade

import random
import numpy as np

def trade2():
    # Buy top performing stock in the last 5 days
    avg_prices = {ticker: np.mean(prices[ticker][:5]) for ticker in tickers}
    best_ticker = max(avg_prices, key=avg_prices.get)
    trade = Trade(best_ticker, 100)
    return [trade]

def trade3():
    # Sell worst performing stock in the last 5 days
    avg_prices = {ticker: np.mean(prices[ticker][:5]) for ticker in tickers}
    worst_ticker = min(avg_prices, key=avg_prices.get)
    trade = Trade(worst_ticker, -100)
    return [trade]

def trade4():
    # Buy random stock from top 5 performing in the last 10 days
    avg_prices = {ticker: np.mean(prices[ticker][:10]) for ticker in tickers}
    top_5_tickers = sorted(avg_prices, key=avg_prices.get, reverse=True)[:5]
    ticker = random.choice(top_5_tickers)
    trade = Trade(ticker, 100)
    return [trade]

def trade5():
    # Sell random stock from bottom 5 performing in the last 10 days
    avg_prices = {ticker: np.mean(prices[ticker][:10]) for ticker in tickers}
    bottom_5_tickers = sorted(avg_prices, key=avg_prices.get)[:5]
    ticker = random.choice(bottom_5_tickers)
    trade = Trade(ticker, -100)
    return [trade]

def trade6():
    # Buy stocks with a positive trend over the last 7 days
    trending_up = [ticker for ticker in tickers if prices[ticker][0] > prices[ticker][6]]
    ticker = random.choice(trending_up)
    trade = Trade(ticker, 100)
    return [trade]

def trade7():
    # Sell stocks with a negative trend over the last 7 days
    trending_down = [ticker for ticker in tickers if prices[ticker][0] < prices[ticker][6]]
    ticker = random.choice(trending_down)
    trade = Trade(ticker, -100)
    return [trade]

def trade8():
    # Buy stocks with the lowest volatility over the last 20 days
    volatilities = {ticker: np.std(prices[ticker][:20]) for ticker in tickers}
    least_volatile = min(volatilities, key=volatilities.get)
    trade = Trade(least_volatile, 100)
    return [trade]

def trade9():
    # Sell stocks with the highest volatility over the last 20 days
    volatilities = {ticker: np.std(prices[ticker][:20]) for ticker in tickers}
    most_volatile = max(volatilities, key=volatilities.get)
    trade = Trade(most_volatile, -100)
    return [trade]

def trade10():
    # Random mixed strategy: randomly buy or sell a random stock
    ticker = random.choice(tickers)
    quantity = random.choice([-100, 100])
    trade = Trade(ticker, quantity)
    return [trade]

def trade11():
    # Buy the top 3 performing stocks in the last 15 days
    avg_prices = {ticker: np.mean(prices[ticker][:15]) for ticker in tickers}
    top_3_tickers = sorted(avg_prices, key=avg_prices.get, reverse=True)[:3]
    trades = [Trade(ticker, 100) for ticker in top_3_tickers]
    return trades

def trade12():
    # Sell the bottom 3 performing stocks in the last 15 days
    avg_prices = {ticker: np.mean(prices[ticker][:15]) for ticker in tickers}
    bottom_3_tickers = sorted(avg_prices, key=avg_prices.get)[:3]
    trades = [Trade(ticker, -100) for ticker in bottom_3_tickers]
    return trades

def trade13():
    # Buy 2 random stocks with the highest increase in price in the last 10 days
    price_increases = {ticker: prices[ticker][0] - prices[ticker][9] for ticker in tickers}
    top_2_increases = sorted(price_increases, key=price_increases.get, reverse=True)[:2]
    trades = [Trade(ticker, 100) for ticker in top_2_increases]
    return trades

def trade14():
    # Sell 2 random stocks with the highest decrease in price in the last 10 days
    price_decreases = {ticker: prices[ticker][0] - prices[ticker][9] for ticker in tickers}
    top_2_decreases = sorted(price_decreases, key=price_decreases.get)[:2]
    trades = [Trade(ticker, -100) for ticker in top_2_decreases]
    return trades

def trade15():
    # Buy stocks that have shown the highest volatility in the last 30 days
    volatilities = {ticker: np.std(prices[ticker][:30]) for ticker in tickers}
    high_volatility_tickers = sorted(volatilities, key=volatilities.get, reverse=True)[:3]
    trades = [Trade(ticker, 100) for ticker in high_volatility_tickers]
    return trades

def trade16():
    # Sell stocks that have shown the lowest volatility in the last 30 days
    volatilities = {ticker: np.std(prices[ticker][:30]) for ticker in tickers}
    low_volatility_tickers = sorted(volatilities, key=volatilities.get)[:3]
    trades = [Trade(ticker, -100) for ticker in low_volatility_tickers]
    return trades

def trade17():
    # Buy stocks with prices above their 50-day moving average
    ma_50 = {ticker: np.mean(prices[ticker][:50]) for ticker in tickers}
    above_ma_tickers = [ticker for ticker in tickers if prices[ticker][0] > ma_50[ticker]]
    trades = [Trade(ticker, 100) for ticker in random.sample(above_ma_tickers, min(3, len(above_ma_tickers)))]
    return trades

def trade18():
    # Sell stocks with prices below their 50-day moving average
    ma_50 = {ticker: np.mean(prices[ticker][:50]) for ticker in tickers}
    below_ma_tickers = [ticker for ticker in tickers if prices[ticker][0] < ma_50[ticker]]
    trades = [Trade(ticker, -100) for ticker in random.sample(below_ma_tickers, min(3, len(below_ma_tickers)))]
    return trades

def trade19():
    # Mixed strategy: buy 2 random stocks and sell 2 random stocks
    buy_tickers = random.sample(tickers, 2)
    sell_tickers = random.sample([ticker for ticker in tickers if ticker not in buy_tickers], 2)
    trades = [Trade(ticker, 100) for ticker in buy_tickers] + [Trade(ticker, -100) for ticker in sell_tickers]
    return trades

def trade20():
    # Buy stocks that have positive return in the last 20 days and sell those with negative return
    returns = {ticker: (prices[ticker][0] - prices[ticker][19]) / prices[ticker][19] for ticker in tickers}
    buy_tickers = [ticker for ticker in tickers if returns[ticker] > 0]
    sell_tickers = [ticker for ticker in tickers if returns[ticker] < 0]
    trades = [Trade(ticker, 100) for ticker in random.sample(buy_tickers, min(2, len(buy_tickers)))] + \
             [Trade(ticker, -100) for ticker in random.sample(sell_tickers, min(2, len(sell_tickers)))]
    return trades

def trade21():
    # Buy the top performing stock in the last 3 days
    avg_prices = {ticker: np.mean(prices[ticker][:3]) for ticker in tickers}
    best_ticker = max(avg_prices, key=avg_prices.get)
    trade = Trade(best_ticker, 100)
    return [trade]

def trade22():
    # Sell the worst performing stock in the last 3 days
    avg_prices = {ticker: np.mean(prices[ticker][:3]) for ticker in tickers}
    worst_ticker = min(avg_prices, key=avg_prices.get)
    trade = Trade(worst_ticker, -100)
    return [trade]

def trade23():
    # Buy stocks that have not changed price in the last 7 days
    stable_tickers = [ticker for ticker in tickers if prices[ticker][0] == prices[ticker][6]]
    trades = [Trade(ticker, 100) for ticker in random.sample(stable_tickers, min(3, len(stable_tickers)))]
    return trades

def trade24():
    # Sell stocks that have the smallest price change in the last 5 days
    smallest_changes = sorted(tickers, key=lambda t: abs(prices[t][0] - prices[t][4]))[:3]
    trades = [Trade(ticker, -100) for ticker in smallest_changes]
    return trades

def trade25():
    # Buy random stocks from the top 10 highest priced stocks
    highest_priced = sorted(tickers, key=lambda t: prices[t][0], reverse=True)[:10]
    ticker = random.choice(highest_priced)
    trade = Trade(ticker, 100)
    return [trade]

def trade26():
    # Sell random stocks from the bottom 10 lowest priced stocks
    lowest_priced = sorted(tickers, key=lambda t: prices[t][0])[:10]
    ticker = random.choice(lowest_priced)
    trade = Trade(ticker, -100)
    return [trade]

def trade27():
    # Buy 2 stocks with the highest momentum (last 5 days)
    momentums = {ticker: prices[ticker][0] - prices[ticker][4] for ticker in tickers}
    top_momentum_tickers = sorted(momentums, key=momentums.get, reverse=True)[:2]
    trades = [Trade(ticker, 100) for ticker in top_momentum_tickers]
    return trades

def trade28():
    # Sell 2 stocks with the lowest momentum (last 5 days)
    momentums = {ticker: prices[ticker][0] - prices[ticker][4] for ticker in tickers}
    lowest_momentum_tickers = sorted(momentums, key=momentums.get)[:2]
    trades = [Trade(ticker, -100) for ticker in lowest_momentum_tickers]
    return trades

def trade29():
    # Buy the stock with the highest daily price increase yesterday
    yesterday_increase = {ticker: prices[ticker][1] - prices[ticker][2] for ticker in tickers}
    best_yesterday_ticker = max(yesterday_increase, key=yesterday_increase.get)
    trade = Trade(best_yesterday_ticker, 100)
    return [trade]

def trade30():
    # Sell the stock with the highest daily price decrease yesterday
    yesterday_decrease = {ticker: prices[ticker][1] - prices[ticker][2] for ticker in tickers}
    worst_yesterday_ticker = min(yesterday_decrease, key=yesterday_decrease.get)
    trade = Trade(worst_yesterday_ticker, -100)
    return [trade]

def trade31():
    # Long/short strategy: Buy the top performing stock and sell the worst performing stock over the last 7 days
    avg_prices = {ticker: np.mean(prices[ticker][:7]) for ticker in tickers}
    best_ticker = max(avg_prices, key=avg_prices.get)
    worst_ticker = min(avg_prices, key=avg_prices.get)
    trades = [Trade(best_ticker, 100), Trade(worst_ticker, -100)]
    return trades

def trade32():
    # Buy stocks that have had a positive return in the last 5 days and sell those with a negative return
    returns = {ticker: (prices[ticker][0] - prices[ticker][4]) / prices[ticker][4] for ticker in tickers}
    buy_tickers = [ticker for ticker in tickers if returns[ticker] > 0]
    sell_tickers = [ticker for ticker in tickers if returns[ticker] < 0]
    trades = [Trade(ticker, 100) for ticker in random.sample(buy_tickers, min(2, len(buy_tickers)))] + \
             [Trade(ticker, -100) for ticker in random.sample(sell_tickers, min(2, len(sell_tickers)))]
    return trades

def trade33():
    # Buy 2 stocks with the highest price-to-earnings ratio and sell 2 with the lowest
    pe_ratios = {ticker: random.uniform(10, 30) for ticker in tickers}  # Mock P/E ratios
    top_pe_tickers = sorted(pe_ratios, key=pe_ratios.get, reverse=True)[:2]
    low_pe_tickers = sorted(pe_ratios, key=pe_ratios.get)[:2]
    trades = [Trade(ticker, 100) for ticker in top_pe_tickers] + [Trade(ticker, -100) for ticker in low_pe_tickers]
    return trades

def trade34():
    # Buy the stock with the highest volume and sell the one with the lowest volume
    volumes = {ticker: random.randint(1000, 10000) for ticker in tickers}  # Mock volumes
    high_volume_ticker = max(volumes, key=volumes.get)
    low_volume_ticker = min(volumes, key=volumes.get)
    trades = [Trade(high_volume_ticker, 100), Trade(low_volume_ticker, -100)]
    return trades

def trade35():
    # Buy 3 stocks with the highest recent momentum and sell 3 with the lowest recent momentum
    momentums = {ticker: prices[ticker][0] - prices[ticker][5] for ticker in tickers}
    top_momentum_tickers = sorted(momentums, key=momentums.get, reverse=True)[:3]
    low_momentum_tickers = sorted(momentums, key=momentums.get)[:3]
    trades = [Trade(ticker, 100) for ticker in top_momentum_tickers] + [Trade(ticker, -100) for ticker in low_momentum_tickers]
    return trades

def trade36():
    # Buy stocks in the technology sector and sell stocks in the energy sector
    tech_stocks = random.sample(tickers, 3)  # Mock tech stocks
    energy_stocks = random.sample(tickers, 3)  # Mock energy stocks
    trades = [Trade(ticker, 100) for ticker in tech_stocks] + [Trade(ticker, -100) for ticker in energy_stocks]
    return trades

def trade37():
    # Long/short strategy: Buy the top 2 stocks with the highest recent gains and sell the top 2 with the highest recent losses
    recent_gains = {ticker: prices[ticker][0] - prices[ticker][10] for ticker in tickers}
    top_gainers = sorted(recent_gains, key=recent_gains.get, reverse=True)[:2]
    top_losers = sorted(recent_gains, key=recent_gains.get)[:2]
    trades = [Trade(ticker, 100) for ticker in top_gainers] + [Trade(ticker, -100) for ticker in top_losers]
    return trades

def trade38():
    # Buy the stocks with the highest dividend yield and sell those with the lowest
    dividend_yields = {ticker: random.uniform(1, 5) for ticker in tickers}  # Mock dividend yields
    high_yield_tickers = sorted(dividend_yields, key=dividend_yields.get, reverse=True)[:2]
    low_yield_tickers = sorted(dividend_yields, key=dividend_yields.get)[:2]
    trades = [Trade(ticker, 100) for ticker in high_yield_tickers] + [Trade(ticker, -100) for ticker in low_yield_tickers]
    return trades

def trade39():
    # Buy stocks that are trading near their 52-week highs and sell those near their 52-week lows
    highs_52w = {ticker: max(prices[ticker]) for ticker in tickers}
    lows_52w = {ticker: min(prices[ticker]) for ticker in tickers}
    near_highs = [ticker for ticker in tickers if prices[ticker][0] >= 0.9 * highs_52w[ticker]]
    near_lows = [ticker for ticker in tickers if prices[ticker][0] <= 1.1 * lows_52w[ticker]]
    trades = [Trade(ticker, 100) for ticker in random.sample(near_highs, min(2, len(near_highs)))] + \
             [Trade(ticker, -100) for ticker in random.sample(near_lows, min(2, len(near_lows)))]
    return trades

def trade40():
    # Long/short strategy: Buy 2 random stocks from the top 10 performing sectors and sell 2 from the bottom 10
    sectors = {ticker: random.choice(['Tech', 'Energy', 'Health', 'Finance', 'Retail']) for ticker in tickers}
    sector_performance = {sector: random.uniform(-10, 10) for sector in set(sectors.values())}
    top_sectors = sorted(sector_performance, key=sector_performance.get, reverse=True)[:2]
    bottom_sectors = sorted(sector_performance, key=sector_performance.get)[:2]
    buy_tickers = [ticker for ticker in tickers if sectors[ticker] in top_sectors]
    sell_tickers = [ticker for ticker in tickers if sectors[ticker] in bottom_sectors]
    trades = [Trade(ticker, 100) for ticker in random.sample(buy_tickers, min(2, len(buy_tickers)))] + \
             [Trade(ticker, -100) for ticker in random.sample(sell_tickers, min(2, len(sell_tickers)))]
    return trades

def trade41():
    # Buy the stock with the highest price increase today
    price_increases = {ticker: prices[ticker][0] - prices[ticker][1] for ticker in tickers}
    best_ticker = max(price_increases, key=price_increases.get)
    trade = Trade(best_ticker, 100)
    return [trade]

def trade42():
    # Sell the stock with the highest price decrease today
    price_decreases = {ticker: prices[ticker][0] - prices[ticker][1] for ticker in tickers}
    worst_ticker = min(price_decreases, key=price_decreases.get)
    trade = Trade(worst_ticker, -100)
    return [trade]

def trade43():
    # Buy stocks that have had a positive return in the last 3 days
    returns = {ticker: (prices[ticker][0] - prices[ticker][2]) / prices[ticker][2] for ticker in tickers}
    buy_tickers = [ticker for ticker in tickers if returns[ticker] > 0]
    trades = [Trade(ticker, 100) for ticker in random.sample(buy_tickers, min(3, len(buy_tickers)))]
    return trades

def trade44():
    # Sell stocks that have had a negative return in the last 3 days
    returns = {ticker: (prices[ticker][0] - prices[ticker][2]) / prices[ticker][2] for ticker in tickers}
    sell_tickers = [ticker for ticker in tickers if returns[ticker] < 0]
    trades = [Trade(ticker, -100) for ticker in random.sample(sell_tickers, min(3, len(sell_tickers)))]
    return trades

def trade45():
    # Buy the stock with the highest average return over the last 10 days
    avg_returns = {ticker: np.mean([(prices[ticker][i] - prices[ticker][i+1]) / prices[ticker][i+1] for i in range(9)]) for ticker in tickers}
    best_ticker = max(avg_returns, key=avg_returns.get)
    trade = Trade(best_ticker, 100)
    return [trade]

def trade46():
    # Sell the stock with the lowest average return over the last 10 days
    avg_returns = {ticker: np.mean([(prices[ticker][i] - prices[ticker][i+1]) / prices[ticker][i+1] for i in range(9)]) for ticker in tickers}
    worst_ticker = min(avg_returns, key=avg_returns.get)
    trade = Trade(worst_ticker, -100)
    return [trade]

def trade47():
    # Buy stocks that are oversold based on RSI (Randomly assigned for simplicity)
    rsi = {ticker: random.uniform(0, 100) for ticker in tickers}
    oversold_tickers = [ticker for ticker in tickers if rsi[ticker] < 30]
    trades = [Trade(ticker, 100) for ticker in random.sample(oversold_tickers, min(3, len(oversold_tickers)))]
    return trades

def trade48():
    # Sell stocks that are overbought based on RSI (Randomly assigned for simplicity)
    rsi = {ticker: random.uniform(0, 100) for ticker in tickers}
    overbought_tickers = [ticker for ticker in tickers if rsi[ticker] > 70]
    trades = [Trade(ticker, -100) for ticker in random.sample(overbought_tickers, min(3, len(overbought_tickers)))]
    return trades

def trade49():
    # Buy stocks with positive momentum over the last 20 days
    momentums = {ticker: prices[ticker][0] - prices[ticker][19] for ticker in tickers}
    positive_momentum_tickers = [ticker for ticker in momentums if momentums[ticker] > 0]
    trades = [Trade(ticker, 100) for ticker in random.sample(positive_momentum_tickers, min(3, len(positive_momentum_tickers)))]
    return trades

def trade50():
    # Sell stocks with negative momentum over the last 20 days
    momentums = {ticker: prices[ticker][0] - prices[ticker][19] for ticker in tickers}
    negative_momentum_tickers = [ticker for ticker in momentums if momentums[ticker] < 0]
    trades = [Trade(ticker, -100) for ticker in random.sample(negative_momentum_tickers, min(3, len(negative_momentum_tickers)))]
    return trades

def trade51():
    # Buy stocks that have a high positive correlation with a randomly chosen strong performer
    import scipy.stats
    base_ticker = random.choice(tickers)
    base_prices = prices[base_ticker]
    correlations = {ticker: scipy.stats.pearsonr(base_prices, prices[ticker])[0] for ticker in tickers if ticker != base_ticker}
    high_corr_tickers = [ticker for ticker, corr in correlations.items() if corr > 0.8]
    trades = [Trade(ticker, 100) for ticker in random.sample(high_corr_tickers, min(3, len(high_corr_tickers)))]
    return trades

def trade52():
    # Sell stocks that have a high negative correlation with a randomly chosen weak performer
    import scipy.stats
    base_ticker = random.choice(tickers)
    base_prices = prices[base_ticker]
    correlations = {ticker: scipy.stats.pearsonr(base_prices, prices[ticker])[0] for ticker in tickers if ticker != base_ticker}
    low_corr_tickers = [ticker for ticker, corr in correlations.items() if corr < -0.8]
    trades = [Trade(ticker, -100) for ticker in random.sample(low_corr_tickers, min(3, len(low_corr_tickers)))]
    return trades

def trade53():
    # Long/short strategy: Buy stocks with high positive correlation and sell stocks with high negative correlation to a strong performer
    import scipy.stats
    base_ticker = random.choice(tickers)
    base_prices = prices[base_ticker]
    correlations = {ticker: scipy.stats.pearsonr(base_prices, prices[ticker])[0] for ticker in tickers if ticker != base_ticker}
    high_corr_tickers = [ticker for ticker, corr in correlations.items() if corr > 0.7]
    low_corr_tickers = [ticker for ticker, corr in correlations.items() if corr < -0.7]
    trades = [Trade(ticker, 100) for ticker in random.sample(high_corr_tickers, min(2, len(high_corr_tickers)))] + \
             [Trade(ticker, -100) for ticker in random.sample(low_corr_tickers, min(2, len(low_corr_tickers)))]
    return trades

def trade54():
    # Buy stocks that have a high correlation with an index (e.g., S&P 500)
    import scipy.stats
    index_prices = [random.uniform(1000, 5000) for _ in range(len(prices[tickers[0]]))]  # Mock index prices
    correlations = {ticker: scipy.stats.pearsonr(index_prices, prices[ticker])[0] for ticker in tickers}
    high_corr_tickers = [ticker for ticker, corr in correlations.items() if corr > 0.8]
    trades = [Trade(ticker, 100) for ticker in random.sample(high_corr_tickers, min(3, len(high_corr_tickers)))]
    return trades

def trade55():
    # Sell stocks that have a low correlation with an index (e.g., S&P 500)
    import scipy.stats
    index_prices = [random.uniform(1000, 5000) for _ in range(len(prices[tickers[0]]))]  # Mock index prices
    correlations = {ticker: scipy.stats.pearsonr(index_prices, prices[ticker])[0] for ticker in tickers}
    low_corr_tickers = [ticker for ticker, corr in correlations.items() if corr < 0.2]
    trades = [Trade(ticker, -100) for ticker in random.sample(low_corr_tickers, min(3, len(low_corr_tickers)))]
    return trades

def trade56():
    # Long/short strategy: Buy stocks with high correlation and sell stocks with low correlation to a randomly chosen strong performer
    import scipy.stats
    base_ticker = random.choice(tickers)
    base_prices = prices[base_ticker]
    correlations = {ticker: scipy.stats.pearsonr(base_prices, prices[ticker])[0] for ticker in tickers if ticker != base_ticker}
    high_corr_tickers = [ticker for ticker, corr in correlations.items() if corr > 0.7]
    low_corr_tickers = [ticker for ticker, corr in correlations.items() if corr < 0.2]
    trades = [Trade(ticker, 100) for ticker in random.sample(high_corr_tickers, min(2, len(high_corr_tickers)))] + \
             [Trade(ticker, -100) for ticker in random.sample(low_corr_tickers, min(2, len(low_corr_tickers)))]
    return trades

def trade57():
    # Buy stocks that are inversely correlated with a major sector ETF (mocked data)
    import scipy.stats
    sector_etf_prices = [random.uniform(50, 150) for _ in range(len(prices[tickers[0]]))]  # Mock sector ETF prices
    correlations = {ticker: scipy.stats.pearsonr(sector_etf_prices, prices[ticker])[0] for ticker in tickers}
    inverse_corr_tickers = [ticker for ticker, corr in correlations.items() if corr < -0.7]
    trades = [Trade(ticker, 100) for ticker in random.sample(inverse_corr_tickers, min(3, len(inverse_corr_tickers)))]
    return trades

def trade58():
    # Sell stocks that are highly correlated with a volatile index
    import scipy.stats
    volatile_index_prices = [random.uniform(1000, 2000) for _ in range(len(prices[tickers[0]]))]  # Mock volatile index prices
    correlations = {ticker: scipy.stats.pearsonr(volatile_index_prices, prices[ticker])[0] for ticker in tickers}
    high_corr_tickers = [ticker for ticker, corr in correlations.items() if corr > 0.8]
    trades = [Trade(ticker, -100) for ticker in random.sample(high_corr_tickers, min(3, len(high_corr_tickers)))]
    return trades

def trade59():
    # Buy stocks that are less correlated with the overall market (S&P 500)
    import scipy.stats
    market_prices = [random.uniform(1000, 5000) for _ in range(len(prices[tickers[0]]))]  # Mock market index prices
    correlations = {ticker: scipy.stats.pearsonr(market_prices, prices[ticker])[0] for ticker in tickers}
    low_corr_tickers = [ticker for ticker, corr in correlations.items() if corr < 0.3]
    trades = [Trade(ticker, 100) for ticker in random.sample(low_corr_tickers, min(3, len(low_corr_tickers)))]
    return trades

def trade60():
    # Sell stocks that are highly correlated with a specific commodity price (e.g., oil)
    import scipy.stats
    commodity_prices = [random.uniform(50, 100) for _ in range(len(prices[tickers[0]]))]  # Mock commodity prices
    correlations = {ticker: scipy.stats.pearsonr(commodity_prices, prices[ticker])[0] for ticker in tickers}
    high_corr_tickers = [ticker for ticker, corr in correlations.items() if corr > 0.7]
    trades = [Trade(ticker, -100) for ticker in random.sample(high_corr_tickers, min(3, len(high_corr_tickers)))]
    return trades

def trade61():
    # Buy stocks forming a "double bottom" pattern (last 5 days)
    double_bottom_tickers = [ticker for ticker in tickers if prices[ticker][4] < prices[ticker][2] == prices[ticker][0] < prices[ticker][1] and prices[ticker][3] > prices[ticker][2]]
    trades = [Trade(ticker, 100) for ticker in random.sample(double_bottom_tickers, min(3, len(double_bottom_tickers)))]
    return trades

def trade62():
    # Sell stocks forming a "double top" pattern (last 5 days)
    double_top_tickers = [ticker for ticker in tickers if prices[ticker][4] > prices[ticker][2] == prices[ticker][0] > prices[ticker][1] and prices[ticker][3] < prices[ticker][2]]
    trades = [Trade(ticker, -100) for ticker in random.sample(double_top_tickers, min(3, len(double_top_tickers)))]
    return trades

def trade63():
    # Buy stocks showing a "head and shoulders" bottom pattern (last 7 days)
    hs_bottom_tickers = [ticker for ticker in tickers if prices[ticker][6] > prices[ticker][5] < prices[ticker][4] > prices[ticker][3] < prices[ticker][2] and prices[ticker][1] < prices[ticker][0]]
    trades = [Trade(ticker, 100) for ticker in random.sample(hs_bottom_tickers, min(3, len(hs_bottom_tickers)))]
    return trades

def trade64():
    # Sell stocks showing a "head and shoulders" top pattern (last 7 days)
    hs_top_tickers = [ticker for ticker in tickers if prices[ticker][6] < prices[ticker][5] > prices[ticker][4] < prices[ticker][3] > prices[ticker][2] and prices[ticker][1] > prices[ticker][0]]
    trades = [Trade(ticker, -100) for ticker in random.sample(hs_top_tickers, min(3, len(hs_top_tickers)))]
    return trades

def trade65():
    # Buy stocks forming a "bullish flag" pattern (last 10 days)
    bullish_flag_tickers = [ticker for ticker in tickers if prices[ticker][9] < prices[ticker][8] and all(prices[ticker][i] < prices[ticker][i+1] for i in range(8, 4, -1)) and all(prices[ticker][i] > prices[ticker][i+1] for i in range(4, 0, -1))]
    trades = [Trade(ticker, 100) for ticker in random.sample(bullish_flag_tickers, min(3, len(bullish_flag_tickers)))]
    return trades

def trade66():
    # Sell stocks forming a "bearish flag" pattern (last 10 days)
    bearish_flag_tickers = [ticker for ticker in tickers if prices[ticker][9] > prices[ticker][8] and all(prices[ticker][i] > prices[ticker][i+1] for i in range(8, 4, -1)) and all(prices[ticker][i] < prices[ticker][i+1] for i in range(4, 0, -1))]
    trades = [Trade(ticker, -100) for ticker in random.sample(bearish_flag_tickers, min(3, len(bearish_flag_tickers)))]
    return trades

def trade67():
    # Buy stocks forming a "ascending triangle" pattern (last 15 days)
    ascending_triangle_tickers = [ticker for ticker in tickers if prices[ticker][14] < prices[ticker][13] and prices[ticker][0] > prices[ticker][7] and all(prices[ticker][i] <= prices[ticker][i+1] for i in range(13))]
    trades = [Trade(ticker, 100) for ticker in random.sample(ascending_triangle_tickers, min(3, len(ascending_triangle_tickers)))]
    return trades

def trade68():
    # Sell stocks forming a "descending triangle" pattern (last 15 days)
    descending_triangle_tickers = [ticker for ticker in tickers if prices[ticker][14] > prices[ticker][13] and prices[ticker][0] < prices[ticker][7] and all(prices[ticker][i] >= prices[ticker][i+1] for i in range(13))]
    trades = [Trade(ticker, -100) for ticker in random.sample(descending_triangle_tickers, min(3, len(descending_triangle_tickers)))]
    return trades

def trade69():
    # Buy stocks forming a "rounding bottom" pattern (last 20 days)
    rounding_bottom_tickers = [ticker for ticker in tickers if all(prices[ticker][i] >= prices[ticker][i+1] for i in range(10)) and all(prices[ticker][i] <= prices[ticker][i+1] for i in range(10, 19))]
    trades = [Trade(ticker, 100) for ticker in random.sample(rounding_bottom_tickers, min(3, len(rounding_bottom_tickers)))]
    return trades

def trade70():
    # Sell stocks forming a "rounding top" pattern (last 20 days)
    rounding_top_tickers = [ticker for ticker in tickers if all(prices[ticker][i] <= prices[ticker][i+1] for i in range(10)) and all(prices[ticker][i] >= prices[ticker][i+1] for i in range(10, 19))]
    trades = [Trade(ticker, -100) for ticker in random.sample(rounding_top_tickers, min(3, len(rounding_top_tickers)))]
    return trades

def trade71():
    # Buy stocks showing a strong upward trend over the last 10 days
    upward_trend_tickers = [ticker for ticker in tickers if prices[ticker][0] > prices[ticker][9] and all(prices[ticker][i] >= prices[ticker][i+1] for i in range(9))]
    trades = [Trade(ticker, 100) for ticker in random.sample(upward_trend_tickers, min(3, len(upward_trend_tickers)))]
    return trades

def trade72():
    # Sell stocks showing a strong downward trend over the last 10 days
    downward_trend_tickers = [ticker for ticker in tickers if prices[ticker][0] < prices[ticker][9] and all(prices[ticker][i] <= prices[ticker][i+1] for i in range(9))]
    trades = [Trade(ticker, -100) for ticker in random.sample(downward_trend_tickers, min(3, len(downward_trend_tickers)))]
    return trades

def trade73():
    # Buy stocks that have reverted to their mean price over the last 20 days
    mean_reversion_tickers = [ticker for ticker in tickers if abs(prices[ticker][0] - np.mean(prices[ticker][:20])) < np.std(prices[ticker][:20])]
    trades = [Trade(ticker, 100) for ticker in random.sample(mean_reversion_tickers, min(3, len(mean_reversion_tickers)))]
    return trades

def trade74():
    # Sell stocks that have deviated significantly from their mean price over the last 20 days
    mean_deviation_tickers = [ticker for ticker in tickers if abs(prices[ticker][0] - np.mean(prices[ticker][:20])) > 2 * np.std(prices[ticker][:20])]
    trades = [Trade(ticker, -100) for ticker in random.sample(mean_deviation_tickers, min(3, len(mean_deviation_tickers)))]
    return trades

def trade75():
    # Buy stocks that have shown increased volatility in the last 10 days compared to the previous 20 days
    increased_volatility_tickers = [ticker for ticker in tickers if np.std(prices[ticker][:10]) > 1.5 * np.std(prices[ticker][10:30])]
    trades = [Trade(ticker, 100) for ticker in random.sample(increased_volatility_tickers, min(3, len(increased_volatility_tickers)))]
    return trades

def trade76():
    # Sell stocks that have shown decreased volatility in the last 10 days compared to the previous 20 days
    decreased_volatility_tickers = [ticker for ticker in tickers if np.std(prices[ticker][:10]) < 0.5 * np.std(prices[ticker][10:30])]
    trades = [Trade(ticker, -100) for ticker in random.sample(decreased_volatility_tickers, min(3, len(decreased_volatility_tickers)))]
    return trades

def trade77():
    # Buy stocks that have broken above their previous 50-day high
    previous_50_day_highs = {ticker: max(prices[ticker][1:51]) for ticker in tickers}
    breakout_tickers = [ticker for ticker in tickers if prices[ticker][0] > previous_50_day_highs[ticker]]
    trades = [Trade(ticker, 100) for ticker in random.sample(breakout_tickers, min(3, len(breakout_tickers)))]
    return trades

def trade78():
    # Sell stocks that have broken below their previous 50-day low
    previous_50_day_lows = {ticker: min(prices[ticker][1:51]) for ticker in tickers}
    breakdown_tickers = [ticker for ticker in tickers if prices[ticker][0] < previous_50_day_lows[ticker]]
    trades = [Trade(ticker, -100) for ticker in random.sample(breakdown_tickers, min(3, len(breakdown_tickers)))]
    return trades

def trade79():
    # Buy stocks that have shown a significant upward price spike in the last 3 days
    price_spike_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][2]) / prices[ticker][2] > 0.1]
    trades = [Trade(ticker, 100) for ticker in random.sample(price_spike_tickers, min(3, len(price_spike_tickers)))]
    return trades

def trade80():
    # Sell stocks that have shown a significant downward price spike in the last 3 days
    price_drop_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][2]) / prices[ticker][2] < -0.1]
    trades = [Trade(ticker, -100) for ticker in random.sample(price_drop_tickers, min(3, len(price_drop_tickers)))]
    return trades

def trade81():
    # Buy stocks that have formed a "golden cross" (50-day MA crosses above 200-day MA)
    golden_cross_tickers = [ticker for ticker in tickers if np.mean(prices[ticker][:50]) > np.mean(prices[ticker][:200])]
    trades = [Trade(ticker, 100) for ticker in random.sample(golden_cross_tickers, min(3, len(golden_cross_tickers)))]
    return trades

def trade82():
    # Sell stocks that have formed a "death cross" (50-day MA crosses below 200-day MA)
    death_cross_tickers = [ticker for ticker in tickers if np.mean(prices[ticker][:50]) < np.mean(prices[ticker][:200])]
    trades = [Trade(ticker, -100) for ticker in random.sample(death_cross_tickers, min(3, len(death_cross_tickers)))]
    return trades

def trade83():
    # Buy stocks that have shown an increase in trading volume in the last 5 days
    volume_increase_tickers = [ticker for ticker in tickers if np.mean(prices[ticker][:5]) > 1.2 * np.mean(prices[ticker][5:10])]
    trades = [Trade(ticker, 100) for ticker in random.sample(volume_increase_tickers, min(3, len(volume_increase_tickers)))]
    return trades

def trade84():
    # Sell stocks that have shown a decrease in trading volume in the last 5 days
    volume_decrease_tickers = [ticker for ticker in tickers if np.mean(prices[ticker][:5]) < 0.8 * np.mean(prices[ticker][5:10])]
    trades = [Trade(ticker, -100) for ticker in random.sample(volume_decrease_tickers, min(3, len(volume_decrease_tickers)))]
    return trades

def trade85():
    # Buy stocks that have shown consistent daily gains for the last 5 days
    consistent_gainers = [ticker for ticker in tickers if all(prices[ticker][i] > prices[ticker][i+1] for i in range(5))]
    trades = [Trade(ticker, 100) for ticker in random.sample(consistent_gainers, min(3, len(consistent_gainers)))]
    return trades

def trade86():
    # Sell stocks that have shown consistent daily losses for the last 5 days
    consistent_losers = [ticker for ticker in tickers if all(prices[ticker][i] < prices[ticker][i+1] for i in range(5))]
    trades = [Trade(ticker, -100) for ticker in random.sample(consistent_losers, min(3, len(consistent_losers)))]
    return trades

def trade87():
    # Buy stocks that are trading near their all-time highs
    all_time_high_tickers = [ticker for ticker in tickers if prices[ticker][0] >= 0.95 * max(prices[ticker])]
    trades = [Trade(ticker, 100) for ticker in random.sample(all_time_high_tickers, min(3, len(all_time_high_tickers)))]
    return trades

def trade88():
    # Sell stocks that are trading near their all-time lows
    all_time_low_tickers = [ticker for ticker in tickers if prices[ticker][0] <= 1.05 * min(prices[ticker])]
    trades = [Trade(ticker, -100) for ticker in random.sample(all_time_low_tickers, min(3, len(all_time_low_tickers)))]
    return trades

def trade89():
    # Buy stocks that have gapped up at market open today
    gap_up_tickers = [ticker for ticker in tickers if prices[ticker][0] > 1.05 * prices[ticker][1]]
    trades = [Trade(ticker, 100) for ticker in random.sample(gap_up_tickers, min(3, len(gap_up_tickers)))]
    return trades

def trade90():
    # Sell stocks that have gapped down at market open today
    gap_down_tickers = [ticker for ticker in tickers if prices[ticker][0] < 0.95 * prices[ticker][1]]
    trades = [Trade(ticker, -100) for ticker in random.sample(gap_down_tickers, min(3, len(gap_down_tickers)))]
    return trades

def trade91():
    # Buy stocks that have shown a steady upward trend for the last 15 days
    steady_uptrend_tickers = [ticker for ticker in tickers if all(prices[ticker][i] >= prices[ticker][i+1] for i in range(15))]
    trades = [Trade(ticker, 100) for ticker in random.sample(steady_uptrend_tickers, min(3, len(steady_uptrend_tickers)))]
    return trades

def trade92():
    # Sell stocks that have shown a steady downward trend for the last 15 days
    steady_downtrend_tickers = [ticker for ticker in tickers if all(prices[ticker][i] <= prices[ticker][i+1] for i in range(15))]
    trades = [Trade(ticker, -100) for ticker in random.sample(steady_downtrend_tickers, min(3, len(steady_downtrend_tickers)))]
    return trades

def trade93():
    # Buy stocks that have outperformed the market index by 5% in the last 30 days
    market_index_return = random.uniform(-0.05, 0.05)  # Mock market index return
    outperforming_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][29]) / prices[ticker][29] > market_index_return + 0.05]
    trades = [Trade(ticker, 100) for ticker in random.sample(outperforming_tickers, min(3, len(outperforming_tickers)))]
    return trades

def trade94():
    # Sell stocks that have underperformed the market index by 5% in the last 30 days
    market_index_return = random.uniform(-0.05, 0.05)  # Mock market index return
    underperforming_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][29]) / prices[ticker][29] < market_index_return - 0.05]
    trades = [Trade(ticker, -100) for ticker in random.sample(underperforming_tickers, min(3, len(underperforming_tickers)))]
    return trades

def trade95():
    # Buy stocks that have broken above their previous 10-day high
    previous_10_day_highs = {ticker: max(prices[ticker][1:11]) for ticker in tickers}
    breakout_tickers = [ticker for ticker in tickers if prices[ticker][0] > previous_10_day_highs[ticker]]
    trades = [Trade(ticker, 100) for ticker in random.sample(breakout_tickers, min(3, len(breakout_tickers)))]
    return trades

def trade96():
    # Sell stocks that have broken below their previous 10-day low
    previous_10_day_lows = {ticker: min(prices[ticker][1:11]) for ticker in tickers}
    breakdown_tickers = [ticker for ticker in tickers if prices[ticker][0] < previous_10_day_lows[ticker]]
    trades = [Trade(ticker, -100) for ticker in random.sample(breakdown_tickers, min(3, len(breakdown_tickers)))]
    return trades

def trade97():
    # Buy stocks with a relative strength index (RSI) below 30 (oversold)
    rsi = {ticker: random.uniform(0, 100) for ticker in tickers}  # Mock RSI values
    oversold_tickers = [ticker for ticker in tickers if rsi[ticker] < 30]
    trades = [Trade(ticker, 100) for ticker in random.sample(oversold_tickers, min(3, len(oversold_tickers)))]
    return trades

def trade98():
    # Sell stocks with a relative strength index (RSI) above 70 (overbought)
    rsi = {ticker: random.uniform(0, 100) for ticker in tickers}  # Mock RSI values
    overbought_tickers = [ticker for ticker in tickers if rsi[ticker] > 70]
    trades = [Trade(ticker, -100) for ticker in random.sample(overbought_tickers, min(3, len(overbought_tickers)))]
    return trades

def trade99():
    # Buy stocks with a price-to-earnings ratio (P/E) below the industry average (mocked data)
    pe_ratios = {ticker: random.uniform(10, 30) for ticker in tickers}  # Mock P/E ratios
    industry_average_pe = 20  # Mock industry average P/E
    undervalued_tickers = [ticker for ticker in tickers if pe_ratios[ticker] < industry_average_pe]
    trades = [Trade(ticker, 100) for ticker in random.sample(undervalued_tickers, min(3, len(undervalued_tickers)))]
    return trades

def trade100():
    # Sell stocks with a price-to-earnings ratio (P/E) above the industry average (mocked data)
    pe_ratios = {ticker: random.uniform(10, 30) for ticker in tickers}  # Mock P/E ratios
    industry_average_pe = 20  # Mock industry average P/E
    overvalued_tickers = [ticker for ticker in tickers if pe_ratios[ticker] > industry_average_pe]
    trades = [Trade(ticker, -100) for ticker in random.sample(overvalued_tickers, min(3, len(overvalued_tickers)))]
    return trades

def trade101():
    # Buy stocks that have outperformed the market by more than 5% in the last 10 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(10)]
    market_return = (market_total[0] - market_total[-1]) / market_total[-1]
    outperforming_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][9]) / prices[ticker][9] > market_return + 0.05]
    trades = [Trade(ticker, 100) for ticker in random.sample(outperforming_tickers, min(3, len(outperforming_tickers)))]
    return trades

def trade102():
    # Sell stocks that have underperformed the market by more than 5% in the last 10 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(10)]
    market_return = (market_total[0] - market_total[-1]) / market_total[-1]
    underperforming_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][9]) / prices[ticker][9] < market_return - 0.05]
    trades = [Trade(ticker, -100) for ticker in random.sample(underperforming_tickers, min(3, len(underperforming_tickers)))]
    return trades

def trade103():
    # Buy stocks that have shown a positive return while the market showed a negative return over the last 5 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(5)]
    market_return = (market_total[0] - market_total[-1]) / market_total[-1]
    positive_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][4]) / prices[ticker][4] > 0 and market_return < 0]
    trades = [Trade(ticker, 100) for ticker in random.sample(positive_tickers, min(3, len(positive_tickers)))]
    return trades

def trade104():
    # Sell stocks that have shown a negative return while the market showed a positive return over the last 5 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(5)]
    market_return = (market_total[0] - market_total[-1]) / market_total[-1]
    negative_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][4]) / prices[ticker][4] < 0 and market_return > 0]
    trades = [Trade(ticker, -100) for ticker in random.sample(negative_tickers, min(3, len(negative_tickers)))]
    return trades

def trade105():
    # Buy stocks that have shown less volatility compared to the market over the last 20 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(20)]
    market_volatility = np.std(market_total)
    low_volatility_tickers = [ticker for ticker in tickers if np.std(prices[ticker][:20]) < market_volatility]
    trades = [Trade(ticker, 100) for ticker in random.sample(low_volatility_tickers, min(3, len(low_volatility_tickers)))]
    return trades

def trade106():
    # Sell stocks that have shown more volatility compared to the market over the last 20 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(20)]
    market_volatility = np.std(market_total)
    high_volatility_tickers = [ticker for ticker in tickers if np.std(prices[ticker][:20]) > market_volatility]
    trades = [Trade(ticker, -100) for ticker in random.sample(high_volatility_tickers, min(3, len(high_volatility_tickers)))]
    return trades

def trade107():
    # Buy stocks that have shown an increasing trend while the market showed a decreasing trend over the last 15 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(15)]
    market_trend = market_total[0] > market_total[-1]
    increasing_tickers = [ticker for ticker in tickers if prices[ticker][0] > prices[ticker][14] and not market_trend]
    trades = [Trade(ticker, 100) for ticker in random.sample(increasing_tickers, min(3, len(increasing_tickers)))]
    return trades

def trade108():
    # Sell stocks that have shown a decreasing trend while the market showed an increasing trend over the last 15 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(15)]
    market_trend = market_total[0] < market_total[-1]
    decreasing_tickers = [ticker for ticker in tickers if prices[ticker][0] < prices[ticker][14] and market_trend]
    trades = [Trade(ticker, -100) for ticker in random.sample(decreasing_tickers, min(3, len(decreasing_tickers)))]
    return trades

def trade109():
    # Buy stocks that have broken above their previous 10-day high while the market is flat
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(10)]
    market_flat = abs((market_total[0] - market_total[-1]) / market_total[-1]) < 0.01
    previous_10_day_highs = {ticker: max(prices[ticker][1:11]) for ticker in tickers}
    breakout_tickers = [ticker for ticker in tickers if prices[ticker][0] > previous_10_day_highs[ticker] and market_flat]
    trades = [Trade(ticker, 100) for ticker in random.sample(breakout_tickers, min(3, len(breakout_tickers)))]
    return trades

def trade110():
    # Sell stocks that have broken below their previous 10-day low while the market is flat
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(10)]
    market_flat = abs((market_total[0] - market_total[-1]) / market_total[-1]) < 0.01
    previous_10_day_lows = {ticker: min(prices[ticker][1:11]) for ticker in tickers}
    breakdown_tickers = [ticker for ticker in tickers if prices[ticker][0] < previous_10_day_lows[ticker] and market_flat]
    trades = [Trade(ticker, -100) for ticker in random.sample(breakdown_tickers, min(3, len(breakdown_tickers)))]
    return trades

def trade111():
    # Buy stocks that have shown a higher positive return compared to the market over the last 20 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(20)]
    market_return = (market_total[0] - market_total[-1]) / market_total[-1]
    higher_positive_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][19]) / prices[ticker][19] > market_return]
    trades = [Trade(ticker, 100) for ticker in random.sample(higher_positive_tickers, min(3, len(higher_positive_tickers)))]
    return trades

def trade112():
    # Sell stocks that have shown a higher negative return compared to the market over the last 20 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(20)]
    market_return = (market_total[0] - market_total[-1]) / market_total[-1]
    higher_negative_tickers = [ticker for ticker in tickers if (prices[ticker][0] - prices[ticker][19]) / prices[ticker][19] < market_return]
    trades = [Trade(ticker, -100) for ticker in random.sample(higher_negative_tickers, min(3, len(higher_negative_tickers)))]
    return trades

def trade113():
    # Buy stocks that have shown less drawdown compared to the market over the last 30 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(30)]
    market_drawdown = min(market_total) / max(market_total)
    less_drawdown_tickers = [ticker for ticker in tickers if min(prices[ticker][:30]) / max(prices[ticker][:30]) > market_drawdown]
    trades = [Trade(ticker, 100) for ticker in random.sample(less_drawdown_tickers, min(3, len(less_drawdown_tickers)))]
    return trades

def trade114():
    # Sell stocks that have shown more drawdown compared to the market over the last 30 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(30)]
    market_drawdown = min(market_total) / max(market_total)
    more_drawdown_tickers = [ticker for ticker in tickers if min(prices[ticker][:30]) / max(prices[ticker][:30]) < market_drawdown]
    trades = [Trade(ticker, -100) for ticker in random.sample(more_drawdown_tickers, min(3, len(more_drawdown_tickers)))]
    return trades

def trade115():
    # Buy stocks that have had a smaller price range compared to the market over the last 15 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(15)]
    market_range = max(market_total) - min(market_total)
    small_range_tickers = [ticker for ticker in tickers if max(prices[ticker][:15]) - min(prices[ticker][:15]) < market_range]
    trades = [Trade(ticker, 100) for ticker in random.sample(small_range_tickers, min(3, len(small_range_tickers)))]
    return trades

def trade116():
    # Sell stocks that have had a larger price range compared to the market over the last 15 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(15)]
    market_range = max(market_total) - min(market_total)
    large_range_tickers = [ticker for ticker in tickers if max(prices[ticker][:15]) - min(prices[ticker][:15]) > market_range]
    trades = [Trade(ticker, -100) for ticker in random.sample(large_range_tickers, min(3, len(large_range_tickers)))]
    return trades

def trade117():
    # Buy stocks that have consistently stayed above their market-relative average price in the last 10 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(10)]
    market_avg = sum(market_total) / len(market_total)
    consistent_above_avg_tickers = [ticker for ticker in tickers if all(prices[ticker][i] > market_avg for i in range(10))]
    trades = [Trade(ticker, 100) for ticker in random.sample(consistent_above_avg_tickers, min(3, len(consistent_above_avg_tickers)))]
    return trades

def trade118():
    # Sell stocks that have consistently stayed below their market-relative average price in the last 10 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(10)]
    market_avg = sum(market_total) / len(market_total)
    consistent_below_avg_tickers = [ticker for ticker in tickers if all(prices[ticker][i] < market_avg for i in range(10))]
    trades = [Trade(ticker, -100) for ticker in random.sample(consistent_below_avg_tickers, min(3, len(consistent_below_avg_tickers)))]
    return trades

def trade119():
    # Buy stocks that have shown a positive correlation with the market trend over the last 20 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(20)]
    market_trend = scipy.stats.linregress(range(20), market_total).slope
    positive_corr_tickers = [ticker for ticker in tickers if scipy.stats.pearsonr(prices[ticker][:20], market_total)[0] > 0.5]
    trades = [Trade(ticker, 100) for ticker in random.sample(positive_corr_tickers, min(3, len(positive_corr_tickers)))]
    return trades

def trade120():
    # Sell stocks that have shown a negative correlation with the market trend over the last 20 days
    market_total = [sum(prices[ticker][i] for ticker in tickers) for i in range(20)]
    market_trend = scipy.stats.linregress(range(20), market_total).slope
    negative_corr_tickers = [ticker for ticker in tickers if scipy.stats.pearsonr(prices[ticker][:20], market_total)[0] < -0.5]
    trades = [Trade(ticker, -100) for ticker in random.sample(negative_corr_tickers, min(3, len(negative_corr_tickers)))]
    return trades