Spaces:
Sleeping
Sleeping
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 |