株を売る戦略をシミュレートするスクリプトを作成しようとしています。意図は、時間の経過とともに株価に関する仮定を考慮して、より高い価格でより多くの株式を売却することです。複数の売り注文が定期的に (毎週) 作成され、指値価格を上回る価格で約定されるまでオープンのままになります (指値価格とは、私が株式を売却できる価格です)。各売り注文には異なる指値価格が設定されているため、価格が高いほど、より多くの注文が約定され、より多くの在庫が売却されます。
私のアプローチは、リストを使用して毎週の価格の仮定を反映し、リストのリストを使用して毎週の注文を反映することでした。私の意図は、注文リストを毎週繰り返し、次の条件を満たす注文を「満たす」ことです。
- 彼らはその週の価格想定を下回る指値価格を持っています
- それらはまだ販売されていません
これは、スクリプトの簡略化されたバージョンです
orders = [] # initalize an empty list of orders. Append orders to this list each week.
number_of_weeks = 4 # number of weeks to simulate
weekly_order_template = [[100, 5, "", ""],[150, 10, "", ""]] # these are the orders that will be added each week (2 in this example) and each order includes the number of shares, the limit price, the sale price (if sold), the sale week (if sold).
# create a list to store the weekly price assumptions
weekly_price = [] # init a list to store weekly prices
price = 4.90
price_increment = .05
for weeks in range(0,number_of_weeks):
price = price + price_increment
weekly_price.append(price)
# each week, add this week's orders to the orders list and then compare all orders in the list to see which should be sold. Update the orders list elements to reflect sales.
for week in range(0,number_of_weeks):
print "****This is WEEK ", week, "****"
this_weeks_price = weekly_price[week]
print "This week's price: ", this_weeks_price
for order in weekly_order_template: # add this week's orders to the orders list
orders.append(order)
for order in orders: # iterate over the orders list and update orders that are sold
if (order[2] == "") and (order[1] < this_weeks_price):
order[2] = this_weeks_price
order[3] = week
print "All orders to date: ", orders
このスクリプトは機能していません。これらの注文が存在する前に、注文を「販売」しています。たとえば、これは 4 週目の出力です。
****This is WEEK 3 ****
This week's price: 5.1
All orders to date: [[100, 5, 5.05, 2], [150, 10, '', ''], [100, 5, 5.05, 2], [150, 10,'', ''], [100, 5, 5.05, 2], [150, 10, '', ''], [100, 5, 5.05, 2], [150, 10, '', '']]
7 番目の要素 (第 3 週の最初の注文) が、当時の現在の価格である $5.10 ではなく、前の週の価格で「売られている」のはなぜですか? (注 - 「第 3 週」は第 0 週を第 1 週として使用しているため、第 4 週を指します)